diff options
author | Sagi Grimberg <sagig@mellanox.com> | 2014-05-19 17:44:22 +0300 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2014-07-02 12:06:28 +0200 |
commit | 391416ca2aeff3a33fdd9fa343b9a622ea00523e (patch) | |
tree | b7ac683b0bb7a13a019fba963f5e0d136fa1c2c5 | |
parent | a9fb5766418105ab7fa4eba2163441869f94be40 (diff) |
Target/iser: Bail from accept_np if np_thread is trying to close
commit e346ab343f4f58c12a96725c7b13df9cc2ad56f6 upstream.
In case np_thread state is in RESET/SHUTDOWN/EXIT states,
no point for isert to stall there as we may get a hang in
case no one will wake it up later.
Signed-off-by: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-rw-r--r-- | drivers/infiniband/ulp/isert/ib_isert.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c index 8645d19f7710..c09d2f0cae49 100644 --- a/drivers/infiniband/ulp/isert/ib_isert.c +++ b/drivers/infiniband/ulp/isert/ib_isert.c @@ -2633,9 +2633,14 @@ accept_wait: return -ENODEV; spin_lock_bh(&np->np_thread_lock); - if (np->np_thread_state == ISCSI_NP_THREAD_RESET) { + if (np->np_thread_state >= ISCSI_NP_THREAD_RESET) { spin_unlock_bh(&np->np_thread_lock); - pr_debug("ISCSI_NP_THREAD_RESET for isert_accept_np\n"); + pr_debug("np_thread_state %d for isert_accept_np\n", + np->np_thread_state); + /** + * No point in stalling here when np_thread + * is in state RESET/SHUTDOWN/EXIT - bail + **/ return -ENODEV; } spin_unlock_bh(&np->np_thread_lock); |