Instead of explicitly calling scsi_req_init(), let
blk_get_request() call that function from inside blk_rq_init().
Add an .initialize_rq_fn() callback function to the block drivers
that need it. Merge the IDE .init_rq_fn() function into
.initialize_rq_fn() because it is too small to keep it as a
separate function.
References: commit 82ed4db499b8 ("block: split scsi_request out of struct
request")
Signed-off-by: Bart Van Assche
Reviewed-by: Hannes Reinecke
Cc: Jens Axboe
Cc: Christoph Hellwig
Cc: Omar Sandoval
Cc: linux-block@vger.kernel.org
---
block/bsg.c| 1 -
block/scsi_ioctl.c | 3 ---
drivers/block/pktcdvd.c| 1 -
drivers/cdrom/cdrom.c | 1 -
drivers/ide/ide-atapi.c| 2 --
drivers/ide/ide-cd.c | 1 -
drivers/ide/ide-cd_ioctl.c | 1 -
drivers/ide/ide-devsets.c | 1 -
drivers/ide/ide-disk.c | 1 -
drivers/ide/ide-ioctls.c | 2 --
drivers/ide/ide-park.c | 2 --
drivers/ide/ide-pm.c | 2 --
drivers/ide/ide-probe.c| 6 +++---
drivers/ide/ide-tape.c | 1 -
drivers/ide/ide-taskfile.c | 1 -
drivers/scsi/osd/osd_initiator.c | 2 --
drivers/scsi/osst.c| 1 -
drivers/scsi/scsi_error.c | 1 -
drivers/scsi/scsi_lib.c| 10 +-
drivers/scsi/scsi_transport_sas.c | 6 ++
drivers/scsi/sg.c | 2 --
drivers/scsi/st.c | 1 -
drivers/target/target_core_pscsi.c | 2 --
fs/nfsd/blocklayout.c | 1 -
24 files changed, 18 insertions(+), 34 deletions(-)
diff --git a/block/bsg.c b/block/bsg.c
index 5871bbe70ccd..dd9fcb163326 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -236,7 +236,6 @@ bsg_map_hdr(struct bsg_device *bd, struct sg_io_v4 *hdr,
fmode_t has_write_perm)
rq = blk_get_request(q, op, GFP_KERNEL);
if (IS_ERR(rq))
return rq;
- scsi_req_init(rq);
ret = blk_fill_sgv4_hdr_rq(q, rq, hdr, bd, has_write_perm);
if (ret)
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 4a294a5f7fab..f96c51f5df40 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -326,7 +326,6 @@ static int sg_io(struct request_queue *q, struct gendisk
*bd_disk,
if (IS_ERR(rq))
return PTR_ERR(rq);
req = scsi_req(rq);
- scsi_req_init(rq);
if (hdr->cmd_len > BLK_MAX_CDB) {
req->cmd = kzalloc(hdr->cmd_len, GFP_KERNEL);
@@ -456,7 +455,6 @@ int sg_scsi_ioctl(struct request_queue *q, struct gendisk
*disk, fmode_t mode,
goto error_free_buffer;
}
req = scsi_req(rq);
- scsi_req_init(rq);
cmdlen = COMMAND_SIZE(opcode);
@@ -542,7 +540,6 @@ static int __blk_send_generic(struct request_queue *q,
struct gendisk *bd_disk,
rq = blk_get_request(q, REQ_OP_SCSI_OUT, __GFP_RECLAIM);
if (IS_ERR(rq))
return PTR_ERR(rq);
- scsi_req_init(rq);
rq->timeout = BLK_DEFAULT_SG_TIMEOUT;
scsi_req(rq)->cmd[0] = cmd;
scsi_req(rq)->cmd[4] = data;
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index 1404c1c01fd0..c3704baff1d6 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -707,7 +707,6 @@ static int pkt_generic_packet(struct pktcdvd_device *pd,
struct packet_command *
REQ_OP_SCSI_OUT : REQ_OP_SCSI_IN, __GFP_RECLAIM);
if (IS_ERR(rq))
return PTR_ERR(rq);
- scsi_req_init(rq);
if (cgc->buflen) {
ret = blk_rq_map_kern(q, rq, cgc->buffer, cgc->buflen,
diff --git a/drivers/cdrom/cdrom.c b/drivers/cdrom/cdrom.c
index 5c1fec31b7ef..05b8a4d30ed0 100644
--- a/drivers/cdrom/cdrom.c
+++ b/drivers/cdrom/cdrom.c
@@ -2199,7 +2199,6 @@ static int cdrom_read_cdda_bpc(struct cdrom_device_info
*cdi, __u8 __user *ubuf,
break;
}
req = scsi_req(rq);
- scsi_req_init(rq);
ret = blk_rq_map_user(q, rq, NULL, ubuf, len, GFP_KERNEL);
if (ret) {
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 5901937284e7..7edebe0fb1eb 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -93,7 +93,6 @@ int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk
*disk,
int error;
rq = blk_get_request(drive->queue, REQ_OP_DRV_IN, __GFP_RECLAIM);
- scsi_req_init(rq);
ide_req(rq)->type = ATA_PRIV_MISC;
rq->special = (char *)pc;
@@ -200,7 +199,6 @@ void ide_prep_sense(ide_drive_t *drive, struct request *rq)
memset(sense, 0, sizeof(*sense));
blk_rq_init(rq->q, sense_rq);
- scsi_req_init(sense_rq);
err = blk_rq_map_kern(drive->queue, sense_rq, sense, sense_len,
GFP_NOIO);
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-c