iSNS server should know only about enabled targets

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@3424 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2011-04-29 18:21:30 +00:00
parent 7311aeced3
commit 0c6cf4100d
2 changed files with 12 additions and 3 deletions

View File

@@ -979,6 +979,8 @@ static int handle_e_set_attr_value(int fd, const struct iscsi_kern_event *event)
int rc;
list_for_each_entry(t, &targets_list, tlist) {
if (!t->tgt_enabled)
continue;
rc = isns_target_register(t->name);
if (rc < 0) {
/*
@@ -1080,8 +1082,10 @@ retry:
} else
rc = 0;
rc |= send_mgmt_cmd_res(event.tid, event.cookie, E_ENABLE_TARGET, rc, NULL);
if (rc == 0)
if (rc == 0) {
target->tgt_enabled = 1;
isns_target_register(target->name);
}
break;
case E_DISABLE_TARGET:
@@ -1092,8 +1096,10 @@ retry:
} else
rc = 0;
rc |= send_mgmt_cmd_res(event.tid, event.cookie, E_DISABLE_TARGET, rc, NULL);
if (rc == 0)
if (rc == 0) {
target->tgt_enabled = 0;
isns_target_deregister(target->name);
}
break;
case E_GET_ATTR_VALUE:

View File

@@ -349,7 +349,8 @@ int target_del(u32 tid, u32 cookie)
exit(-1);
}
isns_target_deregister(target->name);
if (target->tgt_enabled)
isns_target_deregister(target->name);
target_free(target);
@@ -421,7 +422,9 @@ int target_add(struct target *target, u32 *tid, u32 cookie)
#endif
list_add_tail(&target->tlist, &targets_list);
#ifdef CONFIG_SCST_PROC
isns_target_register(target->name);
#endif
out:
return err;