aboutsummaryrefslogtreecommitdiffstats
path: root/include/scsi
diff options
context:
space:
mode:
authorMatthew Wilcox <matthew@wil.cx>2007-09-25 12:42:04 -0400
committerJames Bottomley <jejb@mulgrave.localdomain>2007-10-12 14:52:46 -0400
commit6f5391c283d7fdcf24bf40786ea79061919d1e1d (patch)
tree32ee9abddf9879445792019e1c03bcd28ce6bd4f /include/scsi
parent687d2bc4877081a44c41b5b312e012cc69edda53 (diff)
[SCSI] Get rid of scsi_cmnd->done
The ULD ->done callback moves into the scsi_driver. By moving the call to scsi_io_completion() from scsi_blk_pc_done() to scsi_finish_command(), we can eliminate the latter entirely. By returning 'good_bytes' from the ->done callback (rather than invoking scsi_io_completion()), we can stop exporting scsi_io_completion(). Also move the prototypes from sd.h to sd.c as they're all internal anyway. Rename sd_rw_intr to sd_done and rw_intr to sr_done. Inspired-by: Christoph Hellwig <hch@infradead.org> Signed-off-by: Matthew Wilcox <willy@linux.intel.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi')
-rw-r--r--include/scsi/scsi_cmnd.h2
-rw-r--r--include/scsi/scsi_driver.h1
-rw-r--r--include/scsi/sd.h13
3 files changed, 1 insertions, 15 deletions
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index 4fddef72746..65ab5145a09 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -33,7 +33,6 @@ struct scsi_cmnd {
33 struct list_head list; /* scsi_cmnd participates in queue lists */ 33 struct list_head list; /* scsi_cmnd participates in queue lists */
34 struct list_head eh_entry; /* entry for the host eh_cmd_q */ 34 struct list_head eh_entry; /* entry for the host eh_cmd_q */
35 int eh_eflags; /* Used by error handlr */ 35 int eh_eflags; /* Used by error handlr */
36 void (*done) (struct scsi_cmnd *); /* Mid-level done function */
37 36
38 /* 37 /*
39 * A SCSI Command is assigned a nonzero serial_number before passed 38 * A SCSI Command is assigned a nonzero serial_number before passed
@@ -121,7 +120,6 @@ extern struct scsi_cmnd *__scsi_get_command(struct Scsi_Host *, gfp_t);
121extern void scsi_put_command(struct scsi_cmnd *); 120extern void scsi_put_command(struct scsi_cmnd *);
122extern void __scsi_put_command(struct Scsi_Host *, struct scsi_cmnd *, 121extern void __scsi_put_command(struct Scsi_Host *, struct scsi_cmnd *,
123 struct device *); 122 struct device *);
124extern void scsi_io_completion(struct scsi_cmnd *, unsigned int);
125extern void scsi_finish_command(struct scsi_cmnd *cmd); 123extern void scsi_finish_command(struct scsi_cmnd *cmd);
126extern void scsi_req_abort_cmd(struct scsi_cmnd *cmd); 124extern void scsi_req_abort_cmd(struct scsi_cmnd *cmd);
127 125
diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h
index 56a304709fd..1f5ca7f6211 100644
--- a/include/scsi/scsi_driver.h
+++ b/include/scsi/scsi_driver.h
@@ -15,6 +15,7 @@ struct scsi_driver {
15 struct device_driver gendrv; 15 struct device_driver gendrv;
16 16
17 void (*rescan)(struct device *); 17 void (*rescan)(struct device *);
18 int (*done)(struct scsi_cmnd *);
18}; 19};
19#define to_scsi_driver(drv) \ 20#define to_scsi_driver(drv) \
20 container_of((drv), struct scsi_driver, gendrv) 21 container_of((drv), struct scsi_driver, gendrv)
diff --git a/include/scsi/sd.h b/include/scsi/sd.h
index aa1e7161301..f7513313ef0 100644
--- a/include/scsi/sd.h
+++ b/include/scsi/sd.h
@@ -47,19 +47,6 @@ struct scsi_disk {
47}; 47};
48#define to_scsi_disk(obj) container_of(obj,struct scsi_disk,cdev) 48#define to_scsi_disk(obj) container_of(obj,struct scsi_disk,cdev)
49 49
50static int sd_revalidate_disk(struct gendisk *disk);
51static void sd_rw_intr(struct scsi_cmnd * SCpnt);
52static int sd_probe(struct device *);
53static int sd_remove(struct device *);
54static void sd_shutdown(struct device *dev);
55static int sd_suspend(struct device *dev, pm_message_t state);
56static int sd_resume(struct device *dev);
57static void sd_rescan(struct device *);
58static void sd_read_capacity(struct scsi_disk *sdkp, unsigned char *buffer);
59static void scsi_disk_release(struct class_device *cdev);
60static void sd_print_sense_hdr(struct scsi_disk *, struct scsi_sense_hdr *);
61static void sd_print_result(struct scsi_disk *, int);
62
63#define sd_printk(prefix, sdsk, fmt, a...) \ 50#define sd_printk(prefix, sdsk, fmt, a...) \
64 (sdsk)->disk ? \ 51 (sdsk)->disk ? \
65 sdev_printk(prefix, (sdsk)->device, "[%s] " fmt, \ 52 sdev_printk(prefix, (sdsk)->device, "[%s] " fmt, \