Re: [PATCH 18/31] block: Make scsi_req_init() calls implicit
On 05/24/2017 02:34 AM, Bart Van Assche wrote: > 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> Cc: Jens Axboe > Cc: Christoph Hellwig > Cc: Omar Sandoval > Cc: Hannes Reinecke > Cc: linux-bl...@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 f7695bb141d9..3ca080be4c70 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 b8ce55d7911d..08e3e2fb649b 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 070568d496dc..e643c9d7beec 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
[PATCH 18/31] block: Make scsi_req_init() calls implicit
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 AsscheCc: Jens Axboe Cc: Christoph Hellwig Cc: Omar Sandoval Cc: Hannes Reinecke Cc: linux-bl...@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 f7695bb141d9..3ca080be4c70 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 b8ce55d7911d..08e3e2fb649b 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 070568d496dc..e643c9d7beec 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,