* [PATCH 8/10] iscsi: fix 4k stack iscsi setups
@ 2006-01-13 5:08 Mike Christie
0 siblings, 0 replies; only message in thread
From: Mike Christie @ 2006-01-13 5:08 UTC (permalink / raw)
To: linux-scsi
>From Mike Christie <michaelc@cs.wisc.edu>:
When we run the xmit code from queuecomand the stack usage
gets too high. The patch runs the xmit code from the scsi_host
work queue. This fixes 4k stack and xfs support and should
fix the st and sg stack usage bugs.
Signed-off-by: Alex Aizman <itn780@yahoo.com>
Signed-off-by: Dmitry Yusupov <dmitry_yus@yahoo.com>
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
diff --git a/drivers/scsi/iscsi_if.c b/drivers/scsi/iscsi_if.c
index 5fb6457..615bf56 100644
--- a/drivers/scsi/iscsi_if.c
+++ b/drivers/scsi/iscsi_if.c
@@ -442,6 +442,7 @@ iscsi_if_create_session(struct iscsi_int
shost->max_lun = transport->max_lun;
shost->max_cmd_len = transport->max_cmd_len;
shost->transportt = &priv->t;
+ shost->transportt->create_work_queue = 1;
err = scsi_add_host(shost, NULL);
if (err)
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index ccffd98..b17c121 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -525,7 +525,7 @@ iscsi_r2t_rsp(struct iscsi_conn *conn, s
__kfifo_put(ctask->r2tqueue, (void*)&r2t, sizeof(void*));
__kfifo_put(conn->writequeue, (void*)&ctask, sizeof(void*));
- schedule_work(&conn->xmitwork);
+ scsi_queue_work(session->host, &conn->xmitwork);
conn->r2t_pdus_cnt++;
spin_unlock(&session->lock);
@@ -1267,7 +1267,7 @@ iscsi_write_space(struct sock *sk)
conn->old_write_space(sk);
debug_tcp("iscsi_write_space: cid %d\n", conn->id);
clear_bit(SUSPEND_BIT, &conn->suspend_tx);
- schedule_work(&conn->xmitwork);
+ scsi_queue_work(conn->session->host, &conn->xmitwork);
}
static void
@@ -2275,7 +2275,7 @@ iscsi_xmitworker(void *data)
*/
mutex_lock(&conn->xmitmutex);
if (iscsi_data_xmit(conn))
- schedule_work(&conn->xmitwork);
+ scsi_queue_work(conn->session->host, &conn->xmitwork);
mutex_unlock(&conn->xmitmutex);
}
@@ -2340,15 +2340,7 @@ iscsi_queuecommand(struct scsi_cmnd *sc,
session->cmdsn, session->max_cmdsn - session->exp_cmdsn + 1);
spin_unlock(&session->lock);
- if (!in_interrupt() && mutex_trylock(&conn->xmitmutex)) {
- spin_unlock_irq(host->host_lock);
- if (iscsi_data_xmit(conn))
- schedule_work(&conn->xmitwork);
- mutex_unlock(&conn->xmitmutex);
- spin_lock_irq(host->host_lock);
- } else
- schedule_work(&conn->xmitwork);
-
+ scsi_queue_work(host, &conn->xmitwork);
return 0;
reject:
@@ -2932,8 +2924,7 @@ iscsi_conn_send_generic(struct iscsi_con
else
__kfifo_put(conn->mgmtqueue, (void*)&mtask, sizeof(void*));
- schedule_work(&conn->xmitwork);
-
+ scsi_queue_work(session->host, &conn->xmitwork);
return 0;
}
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2006-01-13 5:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-13 5:08 [PATCH 8/10] iscsi: fix 4k stack iscsi setups Mike Christie
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.