assert(list_empty(&cmnd->list));
BUG_ON(!list_empty(&cmnd->list));
static void iscsi_session_push_cmnd(struct iscsi_cmnd *cmnd){	struct iscsi_session *session = cmnd->conn->session;	struct list_head *entry;	u32 cmd_sn;	dprintk(D_GENERIC, "%p:%x %u,%u\n",		cmnd, cmnd_opcode(cmnd), cmnd->pdu.bhs.statsn,		session->exp_cmd_sn);	if (cmnd->pdu.bhs.opcode & ISCSI_OP_IMMEDIATE) {		iscsi_cmnd_exec(cmnd);		return;	}	cmd_sn = cmnd->pdu.bhs.statsn;	if (cmd_sn == session->exp_cmd_sn) {		while (1) {			session->exp_cmd_sn = ++cmd_sn;			iscsi_cmnd_exec(cmnd);			if (list_empty(&session->pending_list))				break;			cmnd = list_entry(session->pending_list.next, struct iscsi_cmnd, list);			if (cmnd->pdu.bhs.statsn != cmd_sn)				break;/* 			eprintk("find out-of-order %x %u %u\n", *//* 				cmnd_itt(cmnd), cmd_sn, cmnd->pdu.bhs.statsn); */			list_del_init(&cmnd->list);			clear_cmnd_pending(cmnd);		}	} else {/* 		eprintk("out-of-order %x %u %u\n", *//* 			cmnd_itt(cmnd), cmd_sn, session->exp_cmd_sn); */		set_cmnd_pending(cmnd);		if (before(cmd_sn, session->exp_cmd_sn)) /* close the conn */			eprintk("unexpected cmd_sn (%u,%u)\n", cmd_sn, session->exp_cmd_sn);		if (after(cmd_sn, session->exp_cmd_sn + session->max_queued_cmnds))			eprintk("too large cmd_sn (%u,%u)\n", cmd_sn, session->exp_cmd_sn);		list_for_each(entry, &session->pending_list) {			struct iscsi_cmnd *tmp = list_entry(entry, struct iscsi_cmnd, list);			if (before(cmd_sn, tmp->pdu.bhs.statsn))				break;		}		assert(list_empty(&cmnd->list));		list_add_tail(&cmnd->list, entry);	}}