Re: iSERT completions hung due to unavailable iscsit tag

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux