aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2009-03-05 15:46:03 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-03-13 16:28:37 -0400
commit32ae763e3fce4192cd008956a340353a2e5c3192 (patch)
treeaf13b359c4e54fe60c8eb76c8927b41468dcbe57 /include/scsi
parent06d25af4edb60f9e9c7e74d342a6963a32e3392f (diff)
[SCSI] iscsi lib: have lib create work queue for transmitting IO
We were using the shost work queue which ended up being a little akward since all iscsi hosts need a thread for scanning, but only drivers hooked into libiscsi need a workqueue for transmitting. So this patch moves the xmit workqueue to the lib. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/libiscsi.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h
index 898de4a73727..b0b8a6992497 100644
--- a/include/scsi/libiscsi.h
+++ b/include/scsi/libiscsi.h
@@ -318,6 +318,9 @@ struct iscsi_host {
318 spinlock_t lock; 318 spinlock_t lock;
319 int num_sessions; 319 int num_sessions;
320 int state; 320 int state;
321
322 struct workqueue_struct *workq;
323 char workq_name[20];
321}; 324};
322 325
323/* 326/*
@@ -343,7 +346,8 @@ extern int iscsi_host_get_param(struct Scsi_Host *shost,
343 enum iscsi_host_param param, char *buf); 346 enum iscsi_host_param param, char *buf);
344extern int iscsi_host_add(struct Scsi_Host *shost, struct device *pdev); 347extern int iscsi_host_add(struct Scsi_Host *shost, struct device *pdev);
345extern struct Scsi_Host *iscsi_host_alloc(struct scsi_host_template *sht, 348extern struct Scsi_Host *iscsi_host_alloc(struct scsi_host_template *sht,
346 int dd_data_size, uint16_t qdepth); 349 int dd_data_size, uint16_t qdepth,
350 bool xmit_can_sleep);
347extern void iscsi_host_remove(struct Scsi_Host *shost); 351extern void iscsi_host_remove(struct Scsi_Host *shost);
348extern void iscsi_host_free(struct Scsi_Host *shost); 352extern void iscsi_host_free(struct Scsi_Host *shost);
349 353
@@ -379,6 +383,7 @@ extern void iscsi_session_failure(struct iscsi_cls_session *cls_session,
379extern int iscsi_conn_get_param(struct iscsi_cls_conn *cls_conn, 383extern int iscsi_conn_get_param(struct iscsi_cls_conn *cls_conn,
380 enum iscsi_param param, char *buf); 384 enum iscsi_param param, char *buf);
381extern void iscsi_suspend_tx(struct iscsi_conn *conn); 385extern void iscsi_suspend_tx(struct iscsi_conn *conn);
386extern void iscsi_conn_queue_work(struct iscsi_conn *conn);
382 387
383#define iscsi_conn_printk(prefix, _c, fmt, a...) \ 388#define iscsi_conn_printk(prefix, _c, fmt, a...) \
384 iscsi_cls_conn_printk(prefix, ((struct iscsi_conn *)_c)->cls_conn, \ 389 iscsi_cls_conn_printk(prefix, ((struct iscsi_conn *)_c)->cls_conn, \