summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/blkdev.h13
-rw-r--r--include/linux/ide.h8
-rw-r--r--include/scsi/scsi_cmnd.h2
-rw-r--r--include/scsi/scsi_request.h30
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);
925extern void blk_put_request(struct request *); 913extern void blk_put_request(struct request *);
926extern void __blk_put_request(struct request_queue *, struct request *); 914extern void __blk_put_request(struct request_queue *, struct request *);
927extern struct request *blk_get_request(struct request_queue *, int, gfp_t); 915extern struct request *blk_get_request(struct request_queue *, int, gfp_t);
928extern void blk_rq_set_block_pc(struct request *);
929extern void blk_requeue_request(struct request_queue *, struct request *); 916extern void blk_requeue_request(struct request_queue *, struct request *);
930extern int blk_lld_busy(struct request_queue *q); 917extern int blk_lld_busy(struct request_queue *q);
931extern int blk_rq_prep_clone(struct request *rq, struct request *rq_src, 918extern 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
56struct 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. */
56enum { 62enum {
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
12struct Scsi_Host; 13struct Scsi_Host;
13struct scsi_driver; 14struct scsi_driver;
@@ -57,6 +58,7 @@ struct scsi_pointer {
57#define SCMD_TAGGED (1 << 0) 58#define SCMD_TAGGED (1 << 0)
58 59
59struct scsi_cmnd { 60struct 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
8struct 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
17static inline struct scsi_request *scsi_req(struct request *rq)
18{
19 return blk_mq_rq_to_pdu(rq);
20}
21
22static inline void scsi_req_free_cmd(struct scsi_request *req)
23{
24 if (req->cmd != req->__cmd)
25 kfree(req->cmd);
26}
27
28void scsi_req_init(struct request *);
29
30#endif /* _SCSI_SCSI_REQUEST_H */