diff options
author | James Bottomley <James.Bottomley@steeleye.com> | 2007-08-04 11:06:25 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-10-12 14:49:30 -0400 |
commit | 7f9a6bc4e9d59e7fcf03ed23f60cd81ca5d80b65 (patch) | |
tree | f2cceb87e2b6c9a66c66a8c8ceeb20bad09bb6fa /include/scsi/scsi_driver.h | |
parent | d3849d512fb0ca1e369e3efcaec910a949f55f62 (diff) |
[SCSI] move ULD attachment into the prep function
One of the intents of the block prep function was to allow ULDs to use
it for preprocessing. The original SCSI model was to have a single prep
function and add a pointer indirect filter to build the necessary
commands. This patch reverses that, does away with the init_command
field of the scsi_driver structure and makes ULDs attach directly to the
prep function instead. The value is really that it allows us to begin
to separate the ULDs from the SCSI mid layer (as long as they don't use
any core functions---which is hard at the moment---a ULD doesn't even
need SCSI to bind).
Acked-by: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi/scsi_driver.h')
-rw-r--r-- | include/scsi/scsi_driver.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/include/scsi/scsi_driver.h b/include/scsi/scsi_driver.h index 3465f31a21c4..56a304709fde 100644 --- a/include/scsi/scsi_driver.h +++ b/include/scsi/scsi_driver.h | |||
@@ -5,13 +5,15 @@ | |||
5 | 5 | ||
6 | struct module; | 6 | struct module; |
7 | struct scsi_cmnd; | 7 | struct scsi_cmnd; |
8 | struct scsi_device; | ||
9 | struct request; | ||
10 | struct request_queue; | ||
8 | 11 | ||
9 | 12 | ||
10 | struct scsi_driver { | 13 | struct scsi_driver { |
11 | struct module *owner; | 14 | struct module *owner; |
12 | struct device_driver gendrv; | 15 | struct device_driver gendrv; |
13 | 16 | ||
14 | int (*init_command)(struct scsi_cmnd *); | ||
15 | void (*rescan)(struct device *); | 17 | void (*rescan)(struct device *); |
16 | }; | 18 | }; |
17 | #define to_scsi_driver(drv) \ | 19 | #define to_scsi_driver(drv) \ |
@@ -25,4 +27,9 @@ extern int scsi_register_interface(struct class_interface *); | |||
25 | #define scsi_unregister_interface(intf) \ | 27 | #define scsi_unregister_interface(intf) \ |
26 | class_interface_unregister(intf) | 28 | class_interface_unregister(intf) |
27 | 29 | ||
30 | int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req); | ||
31 | int scsi_setup_fs_cmnd(struct scsi_device *sdev, struct request *req); | ||
32 | int scsi_prep_state_check(struct scsi_device *sdev, struct request *req); | ||
33 | int scsi_prep_return(struct request_queue *q, struct request *req, int ret); | ||
34 | |||
28 | #endif /* _SCSI_SCSI_DRIVER_H */ | 35 | #endif /* _SCSI_SCSI_DRIVER_H */ |