Hi Sagi/Max Gurtovoy, Please suggest what else to look into for debugging this issue further. Sagi, by any chance were you able to repoduce this on your VM(with SIW) by reducing "tag_num" in iscsit? I think, this issue will hit with any provider driver if we somehow let the recv_done() handler reach the below "schedule()", while performing IO. ------ static int iscsit_wait_for_tag(struct se_session *se_sess, int state, int *cpup) { int tag = -1; DEFINE_SBQ_WAIT(wait); struct sbq_wait_state *ws; struct sbitmap_queue *sbq; if (state == TASK_RUNNING) return tag; sbq = &se_sess->sess_tag_pool; ws = &sbq->ws[0]; for (;;) { sbitmap_prepare_to_wait(sbq, ws, &wait, state); if (signal_pending_state(state, current)) break; tag = sbitmap_queue_get(sbq, cpup); if (tag >= 0) break; schedule(); <====== } sbitmap_finish_wait(sbq, ws, &wait); return tag; } Thanks, Krishna.