diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/blkdev.h | 13 | ||||
-rw-r--r-- | include/linux/ide.h | 8 | ||||
-rw-r--r-- | include/scsi/scsi_cmnd.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_request.h | 30 |
4 files changed, 39 insertions, 14 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 461b7cf6af1d..e4c5f284fe2d 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -128,8 +128,6 @@ typedef __u32 __bitwise req_flags_t; | |||
128 | #define RQF_NOMERGE_FLAGS \ | 128 | #define RQF_NOMERGE_FLAGS \ |
129 | (RQF_STARTED | RQF_SOFTBARRIER | RQF_FLUSH_SEQ | RQF_SPECIAL_PAYLOAD) | 129 | (RQF_STARTED | RQF_SOFTBARRIER | RQF_FLUSH_SEQ | RQF_SPECIAL_PAYLOAD) |
130 | 130 | ||
131 | #define BLK_MAX_CDB 16 | ||
132 | |||
133 | /* | 131 | /* |
134 | * Try to put the fields that are referenced together in the same cacheline. | 132 | * Try to put the fields that are referenced together in the same cacheline. |
135 | * | 133 | * |
@@ -227,17 +225,7 @@ struct request { | |||
227 | 225 | ||
228 | int errors; | 226 | int errors; |
229 | 227 | ||
230 | /* | ||
231 | * when request is used as a packet command carrier | ||
232 | */ | ||
233 | unsigned char __cmd[BLK_MAX_CDB]; | ||
234 | unsigned char *cmd; | ||
235 | unsigned short cmd_len; | ||
236 | |||
237 | unsigned int extra_len; /* length of alignment and padding */ | 228 | unsigned int extra_len; /* length of alignment and padding */ |
238 | unsigned int sense_len; | ||
239 | unsigned int resid_len; /* residual count */ | ||
240 | void *sense; | ||
241 | 229 | ||
242 | unsigned long deadline; | 230 | unsigned long deadline; |
243 | struct list_head timeout_list; | 231 | struct list_head timeout_list; |
@@ -925,7 +913,6 @@ extern void blk_rq_init(struct request_queue *q, struct request *rq); | |||
925 | extern void blk_put_request(struct request *); | 913 | extern void blk_put_request(struct request *); |
926 | extern void __blk_put_request(struct request_queue *, struct request *); | 914 | extern void __blk_put_request(struct request_queue *, struct request *); |
927 | extern struct request *blk_get_request(struct request_queue *, int, gfp_t); | 915 | extern struct request *blk_get_request(struct request_queue *, int, gfp_t); |
928 | extern void blk_rq_set_block_pc(struct request *); | ||
929 | extern void blk_requeue_request(struct request_queue *, struct request *); | 916 | extern void blk_requeue_request(struct request_queue *, struct request *); |
930 | extern int blk_lld_busy(struct request_queue *q); | 917 | extern int blk_lld_busy(struct request_queue *q); |
931 | extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, | 918 | extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, |
diff --git a/include/linux/ide.h b/include/linux/ide.h index a633898f36ac..086fbe172817 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/mutex.h> | 20 | #include <linux/mutex.h> |
21 | /* for request_sense */ | 21 | /* for request_sense */ |
22 | #include <linux/cdrom.h> | 22 | #include <linux/cdrom.h> |
23 | #include <scsi/scsi_cmnd.h> | ||
23 | #include <asm/byteorder.h> | 24 | #include <asm/byteorder.h> |
24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
25 | 26 | ||
@@ -52,6 +53,11 @@ enum ata_cmd_type_bits { | |||
52 | ((rq)->cmd_type == REQ_TYPE_ATA_PM_SUSPEND || \ | 53 | ((rq)->cmd_type == REQ_TYPE_ATA_PM_SUSPEND || \ |
53 | (rq)->cmd_type == REQ_TYPE_ATA_PM_RESUME) | 54 | (rq)->cmd_type == REQ_TYPE_ATA_PM_RESUME) |
54 | 55 | ||
56 | struct ide_request { | ||
57 | struct scsi_request sreq; | ||
58 | u8 sense[SCSI_SENSE_BUFFERSIZE]; | ||
59 | }; | ||
60 | |||
55 | /* Error codes returned in rq->errors to the higher part of the driver. */ | 61 | /* Error codes returned in rq->errors to the higher part of the driver. */ |
56 | enum { | 62 | enum { |
57 | IDE_DRV_ERROR_GENERAL = 101, | 63 | IDE_DRV_ERROR_GENERAL = 101, |
@@ -579,7 +585,7 @@ struct ide_drive_s { | |||
579 | 585 | ||
580 | /* current sense rq and buffer */ | 586 | /* current sense rq and buffer */ |
581 | bool sense_rq_armed; | 587 | bool sense_rq_armed; |
582 | struct request sense_rq; | 588 | struct request *sense_rq; |
583 | struct request_sense sense_data; | 589 | struct request_sense sense_data; |
584 | }; | 590 | }; |
585 | 591 | ||
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 9fc1aecfc813..f708f1acfc50 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/timer.h> | 8 | #include <linux/timer.h> |
9 | #include <linux/scatterlist.h> | 9 | #include <linux/scatterlist.h> |
10 | #include <scsi/scsi_device.h> | 10 | #include <scsi/scsi_device.h> |
11 | #include <scsi/scsi_request.h> | ||
11 | 12 | ||
12 | struct Scsi_Host; | 13 | struct Scsi_Host; |
13 | struct scsi_driver; | 14 | struct scsi_driver; |
@@ -57,6 +58,7 @@ struct scsi_pointer { | |||
57 | #define SCMD_TAGGED (1 << 0) | 58 | #define SCMD_TAGGED (1 << 0) |
58 | 59 | ||
59 | struct scsi_cmnd { | 60 | struct scsi_cmnd { |
61 | struct scsi_request req; | ||
60 | struct scsi_device *device; | 62 | struct scsi_device *device; |
61 | struct list_head list; /* scsi_cmnd participates in queue lists */ | 63 | struct list_head list; /* scsi_cmnd participates in queue lists */ |
62 | struct list_head eh_entry; /* entry for the host eh_cmd_q */ | 64 | struct list_head eh_entry; /* entry for the host eh_cmd_q */ |
diff --git a/include/scsi/scsi_request.h b/include/scsi/scsi_request.h new file mode 100644 index 000000000000..ba0aeb980f7e --- /dev/null +++ b/include/scsi/scsi_request.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef _SCSI_SCSI_REQUEST_H | ||
2 | #define _SCSI_SCSI_REQUEST_H | ||
3 | |||
4 | #include <linux/blk-mq.h> | ||
5 | |||
6 | #define BLK_MAX_CDB 16 | ||
7 | |||
8 | struct scsi_request { | ||
9 | unsigned char __cmd[BLK_MAX_CDB]; | ||
10 | unsigned char *cmd; | ||
11 | unsigned short cmd_len; | ||
12 | unsigned int sense_len; | ||
13 | unsigned int resid_len; /* residual count */ | ||
14 | void *sense; | ||
15 | }; | ||
16 | |||
17 | static inline struct scsi_request *scsi_req(struct request *rq) | ||
18 | { | ||
19 | return blk_mq_rq_to_pdu(rq); | ||
20 | } | ||
21 | |||
22 | static inline void scsi_req_free_cmd(struct scsi_request *req) | ||
23 | { | ||
24 | if (req->cmd != req->__cmd) | ||
25 | kfree(req->cmd); | ||
26 | } | ||
27 | |||
28 | void scsi_req_init(struct request *); | ||
29 | |||
30 | #endif /* _SCSI_SCSI_REQUEST_H */ | ||