Commit 5bd85625 authored by Mike Christie's avatar Mike Christie Committed by Martin K. Petersen
Browse files

scsi: iscsi: Merge suspend fields

parent 03690d81
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1977,7 +1977,7 @@ static int bnx2i_process_new_cqes(struct bnx2i_conn *bnx2i_conn)
		if (nopin->cq_req_sn != qp->cqe_exp_seq_sn)
		if (nopin->cq_req_sn != qp->cqe_exp_seq_sn)
			break;
			break;


		if (unlikely(test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx))) {
		if (unlikely(test_bit(ISCSI_CONN_FLAG_SUSPEND_RX, &conn->flags))) {
			if (nopin->op_code == ISCSI_OP_NOOP_IN &&
			if (nopin->op_code == ISCSI_OP_NOOP_IN &&
			    nopin->itt == (u16) RESERVED_ITT) {
			    nopin->itt == (u16) RESERVED_ITT) {
				printk(KERN_ALERT "bnx2i: Unsolicited "
				printk(KERN_ALERT "bnx2i: Unsolicited "
+1 −1
Original line number Original line Diff line number Diff line
@@ -1721,7 +1721,7 @@ static int bnx2i_tear_down_conn(struct bnx2i_hba *hba,
			struct iscsi_conn *conn = ep->conn->cls_conn->dd_data;
			struct iscsi_conn *conn = ep->conn->cls_conn->dd_data;


			/* Must suspend all rx queue activity for this ep */
			/* Must suspend all rx queue activity for this ep */
			set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx);
			set_bit(ISCSI_CONN_FLAG_SUSPEND_RX, &conn->flags);
		}
		}
		/* CONN_DISCONNECT timeout may or may not be an issue depending
		/* CONN_DISCONNECT timeout may or may not be an issue depending
		 * on what transcribed in TCP layer, different targets behave
		 * on what transcribed in TCP layer, different targets behave
+3 −3
Original line number Original line Diff line number Diff line
@@ -1634,11 +1634,11 @@ void cxgbi_conn_pdu_ready(struct cxgbi_sock *csk)
	log_debug(1 << CXGBI_DBG_PDU_RX,
	log_debug(1 << CXGBI_DBG_PDU_RX,
		"csk 0x%p, conn 0x%p.\n", csk, conn);
		"csk 0x%p, conn 0x%p.\n", csk, conn);


	if (unlikely(!conn || conn->suspend_rx)) {
	if (unlikely(!conn || test_bit(ISCSI_CONN_FLAG_SUSPEND_RX, &conn->flags))) {
		log_debug(1 << CXGBI_DBG_PDU_RX,
		log_debug(1 << CXGBI_DBG_PDU_RX,
			"csk 0x%p, conn 0x%p, id %d, suspend_rx %lu!\n",
			"csk 0x%p, conn 0x%p, id %d, conn flags 0x%lx!\n",
			csk, conn, conn ? conn->id : 0xFF,
			csk, conn, conn ? conn->id : 0xFF,
			conn ? conn->suspend_rx : 0xFF);
			conn ? conn->flags : 0xFF);
		return;
		return;
	}
	}


+10 −10
Original line number Original line Diff line number Diff line
@@ -1392,8 +1392,8 @@ static bool iscsi_set_conn_failed(struct iscsi_conn *conn)
	if (conn->stop_stage == 0)
	if (conn->stop_stage == 0)
		session->state = ISCSI_STATE_FAILED;
		session->state = ISCSI_STATE_FAILED;


	set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
	set_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags);
	set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx);
	set_bit(ISCSI_CONN_FLAG_SUSPEND_RX, &conn->flags);
	return true;
	return true;
}
}


@@ -1454,7 +1454,7 @@ static int iscsi_xmit_task(struct iscsi_conn *conn, struct iscsi_task *task,
	 * Do this after dropping the extra ref because if this was a requeue
	 * Do this after dropping the extra ref because if this was a requeue
	 * it's removed from that list and cleanup_queued_task would miss it.
	 * it's removed from that list and cleanup_queued_task would miss it.
	 */
	 */
	if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx)) {
	if (test_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags)) {
		/*
		/*
		 * Save the task and ref in case we weren't cleaning up this
		 * Save the task and ref in case we weren't cleaning up this
		 * task and get woken up again.
		 * task and get woken up again.
@@ -1532,7 +1532,7 @@ static int iscsi_data_xmit(struct iscsi_conn *conn)
	int rc = 0;
	int rc = 0;


	spin_lock_bh(&conn->session->frwd_lock);
	spin_lock_bh(&conn->session->frwd_lock);
	if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx)) {
	if (test_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags)) {
		ISCSI_DBG_SESSION(conn->session, "Tx suspended!\n");
		ISCSI_DBG_SESSION(conn->session, "Tx suspended!\n");
		spin_unlock_bh(&conn->session->frwd_lock);
		spin_unlock_bh(&conn->session->frwd_lock);
		return -ENODATA;
		return -ENODATA;
@@ -1746,7 +1746,7 @@ int iscsi_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc)
		goto fault;
		goto fault;
	}
	}


	if (test_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx)) {
	if (test_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags)) {
		reason = FAILURE_SESSION_IN_RECOVERY;
		reason = FAILURE_SESSION_IN_RECOVERY;
		sc->result = DID_REQUEUE << 16;
		sc->result = DID_REQUEUE << 16;
		goto fault;
		goto fault;
@@ -1935,7 +1935,7 @@ static void fail_scsi_tasks(struct iscsi_conn *conn, u64 lun, int error)
void iscsi_suspend_queue(struct iscsi_conn *conn)
void iscsi_suspend_queue(struct iscsi_conn *conn)
{
{
	spin_lock_bh(&conn->session->frwd_lock);
	spin_lock_bh(&conn->session->frwd_lock);
	set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
	set_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags);
	spin_unlock_bh(&conn->session->frwd_lock);
	spin_unlock_bh(&conn->session->frwd_lock);
}
}
EXPORT_SYMBOL_GPL(iscsi_suspend_queue);
EXPORT_SYMBOL_GPL(iscsi_suspend_queue);
@@ -1953,7 +1953,7 @@ void iscsi_suspend_tx(struct iscsi_conn *conn)
	struct Scsi_Host *shost = conn->session->host;
	struct Scsi_Host *shost = conn->session->host;
	struct iscsi_host *ihost = shost_priv(shost);
	struct iscsi_host *ihost = shost_priv(shost);


	set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
	set_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags);
	if (ihost->workq)
	if (ihost->workq)
		flush_workqueue(ihost->workq);
		flush_workqueue(ihost->workq);
}
}
@@ -1961,7 +1961,7 @@ EXPORT_SYMBOL_GPL(iscsi_suspend_tx);


static void iscsi_start_tx(struct iscsi_conn *conn)
static void iscsi_start_tx(struct iscsi_conn *conn)
{
{
	clear_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
	clear_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags);
	iscsi_conn_queue_work(conn);
	iscsi_conn_queue_work(conn);
}
}


@@ -3329,8 +3329,8 @@ int iscsi_conn_bind(struct iscsi_cls_session *cls_session,
	/*
	/*
	 * Unblock xmitworker(), Login Phase will pass through.
	 * Unblock xmitworker(), Login Phase will pass through.
	 */
	 */
	clear_bit(ISCSI_SUSPEND_BIT, &conn->suspend_rx);
	clear_bit(ISCSI_CONN_FLAG_SUSPEND_RX, &conn->flags);
	clear_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
	clear_bit(ISCSI_CONN_FLAG_SUSPEND_TX, &conn->flags);
	return 0;
	return 0;
}
}
EXPORT_SYMBOL_GPL(iscsi_conn_bind);
EXPORT_SYMBOL_GPL(iscsi_conn_bind);
+1 −1
Original line number Original line Diff line number Diff line
@@ -927,7 +927,7 @@ int iscsi_tcp_recv_skb(struct iscsi_conn *conn, struct sk_buff *skb,
	 */
	 */
	conn->last_recv = jiffies;
	conn->last_recv = jiffies;


	if (unlikely(conn->suspend_rx)) {
	if (unlikely(test_bit(ISCSI_CONN_FLAG_SUSPEND_RX, &conn->flags))) {
		ISCSI_DBG_TCP(conn, "Rx suspended!\n");
		ISCSI_DBG_TCP(conn, "Rx suspended!\n");
		*status = ISCSI_TCP_SUSPENDED;
		*status = ISCSI_TCP_SUSPENDED;
		return 0;
		return 0;
Loading