diff --git a/iscsi-scst/usr/target.c b/iscsi-scst/usr/target.c index d34a9241a..b7f0a35d9 100644 --- a/iscsi-scst/usr/target.c +++ b/iscsi-scst/usr/target.c @@ -339,8 +339,6 @@ int target_del(u32 tid, u32 cookie) if (!target) return -ENOENT; - list_del(&target->tlist); - while (1) { /* We might need to handle session(s) removal event(s) from the kernel */ while (handle_iscsi_events(nl_fd, false) == 0); @@ -353,6 +351,13 @@ int target_del(u32 tid, u32 cookie) usleep(50000); } + /* + * Remove target from the list after waiting for all sessions + * deleted, because we are looking for this target in list during + * each session delete. + */ + list_del(&target->tlist); + if (target->tgt_enabled) isns_target_deregister(target->name);