Target/iser: Bail from accept_np if np_thread is trying to close
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> Cc: stable@vger.kernel.org # 3.10+ Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
1e1110c43b
commit
e346ab343f
|
@ -3154,9 +3154,14 @@ isert_accept_np(struct iscsi_np *np, struct iscsi_conn *conn)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
spin_lock_bh(&np->np_thread_lock);
|
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);
|
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;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
spin_unlock_bh(&np->np_thread_lock);
|
spin_unlock_bh(&np->np_thread_lock);
|
||||||
|
|
Loading…
Reference in New Issue