diff options
author | Matthew Wilcox <matthew@wil.cx> | 2007-09-25 12:42:04 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-10-12 14:52:46 -0400 |
commit | 6f5391c283d7fdcf24bf40786ea79061919d1e1d (patch) | |
tree | 32ee9abddf9879445792019e1c03bcd28ce6bd4f /drivers/scsi/scsi_lib.c | |
parent | 687d2bc4877081a44c41b5b312e012cc69edda53 (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 'drivers/scsi/scsi_lib.c')
-rw-r--r-- | drivers/scsi/scsi_lib.c | 14 |
1 files changed, 0 insertions, 14 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 86fd3abe731a..fac34293bef7 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -982,7 +982,6 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes) | |||
982 | } | 982 | } |
983 | scsi_end_request(cmd, 0, this_count, !result); | 983 | scsi_end_request(cmd, 0, this_count, !result); |
984 | } | 984 | } |
985 | EXPORT_SYMBOL(scsi_io_completion); | ||
986 | 985 | ||
987 | /* | 986 | /* |
988 | * Function: scsi_init_io() | 987 | * Function: scsi_init_io() |
@@ -1063,18 +1062,6 @@ static struct scsi_cmnd *scsi_get_cmd_from_req(struct scsi_device *sdev, | |||
1063 | return cmd; | 1062 | return cmd; |
1064 | } | 1063 | } |
1065 | 1064 | ||
1066 | static void scsi_blk_pc_done(struct scsi_cmnd *cmd) | ||
1067 | { | ||
1068 | BUG_ON(!blk_pc_request(cmd->request)); | ||
1069 | /* | ||
1070 | * This will complete the whole command with uptodate=1 so | ||
1071 | * as far as the block layer is concerned the command completed | ||
1072 | * successfully. Since this is a REQ_BLOCK_PC command the | ||
1073 | * caller should check the request's errors value | ||
1074 | */ | ||
1075 | scsi_io_completion(cmd, cmd->request_bufflen); | ||
1076 | } | ||
1077 | |||
1078 | int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req) | 1065 | int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req) |
1079 | { | 1066 | { |
1080 | struct scsi_cmnd *cmd; | 1067 | struct scsi_cmnd *cmd; |
@@ -1124,7 +1111,6 @@ int scsi_setup_blk_pc_cmnd(struct scsi_device *sdev, struct request *req) | |||
1124 | cmd->transfersize = req->data_len; | 1111 | cmd->transfersize = req->data_len; |
1125 | cmd->allowed = req->retries; | 1112 | cmd->allowed = req->retries; |
1126 | cmd->timeout_per_command = req->timeout; | 1113 | cmd->timeout_per_command = req->timeout; |
1127 | cmd->done = scsi_blk_pc_done; | ||
1128 | return BLKPREP_OK; | 1114 | return BLKPREP_OK; |
1129 | } | 1115 | } |
1130 | EXPORT_SYMBOL(scsi_setup_blk_pc_cmnd); | 1116 | EXPORT_SYMBOL(scsi_setup_blk_pc_cmnd); |