From: Bart Van Assche <bart.vanassche@sandisk.com> To: "Martin K . Petersen" <martin.petersen@oracle.com>, James Bottomley <James.Bottomley@HansenPartnership.com> Cc: <linux-scsi@vger.kernel.org>, <linux-block@vger.kernel.org>, "Bart Van Assche" <bart.vanassche@sandisk.com>, Jens Axboe <axboe@fb.com>, "Christoph Hellwig" <hch@lst.de>, Omar Sandoval <osandov@fb.com>, Hannes Reinecke <hare@suse.com> Subject: [PATCH 11/31] block: Introduce queue flag QUEUE_FLAG_SCSI_SUP Date: Tue, 23 May 2017 17:34:00 -0700 [thread overview] Message-ID: <20170524003420.5381-12-bart.vanassche@sandisk.com> (raw) In-Reply-To: <20170524003420.5381-1-bart.vanassche@sandisk.com> >From the context where a SCSI command is submitted it is not always possible to figure out whether or not the queue the command is submitted to has struct scsi_request as the first member of its private data. Hence introduce the flag QUEUE_FLAG_SCSI_SUP. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Jens Axboe <axboe@fb.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Omar Sandoval <osandov@fb.com> Cc: Hannes Reinecke <hare@suse.com> --- block/bsg-lib.c | 1 + drivers/block/cciss.c | 1 + drivers/ide/ide-probe.c | 1 + drivers/scsi/scsi_lib.c | 2 ++ drivers/scsi/scsi_transport_sas.c | 1 + include/linux/blkdev.h | 2 ++ 6 files changed, 8 insertions(+) diff --git a/block/bsg-lib.c b/block/bsg-lib.c index 0a23dbba2d30..420ac014b49c 100644 --- a/block/bsg-lib.c +++ b/block/bsg-lib.c @@ -246,6 +246,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, char *name, q->bsg_job_size = dd_job_size; q->bsg_job_fn = job_fn; queue_flag_set_unlocked(QUEUE_FLAG_BIDI, q); + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); blk_queue_softirq_done(q, bsg_softirq_done); blk_queue_rq_timeout(q, BLK_DEFAULT_SG_TIMEOUT); diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index cd375503f7b0..9706718749e5 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -1956,6 +1956,7 @@ static int cciss_add_disk(ctlr_info_t *h, struct gendisk *disk, disk->queue->cmd_size = sizeof(struct scsi_request); disk->queue->request_fn = do_cciss_request; disk->queue->queue_lock = &h->lock; + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, disk->queue); if (blk_init_allocated_queue(disk->queue) < 0) goto cleanup_queue; diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 023562565d11..fdfa11f80dda 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c @@ -773,6 +773,7 @@ static int ide_init_queue(ide_drive_t *drive) q->request_fn = do_ide_request; q->init_rq_fn = ide_init_rq; q->cmd_size = sizeof(struct ide_request); + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); if (blk_init_allocated_queue(q) < 0) { blk_cleanup_queue(q); return 1; diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 59400033aba8..4cecf82960b7 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -2059,6 +2059,8 @@ void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q) { struct device *dev = shost->dma_dev; + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); + /* * this limit is imposed by hardware restrictions */ diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c index 0ebe2f1bb908..e5eab2685ecf 100644 --- a/drivers/scsi/scsi_transport_sas.c +++ b/drivers/scsi/scsi_transport_sas.c @@ -264,6 +264,7 @@ static int sas_bsg_initialize(struct Scsi_Host *shost, struct sas_rphy *rphy) q->queuedata = shost; queue_flag_set_unlocked(QUEUE_FLAG_BIDI, q); + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); return 0; out_cleanup_queue: diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index b5d1e27631ee..6416a5834b05 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -618,6 +618,7 @@ struct request_queue { #define QUEUE_FLAG_STATS 27 /* track rq completion times */ #define QUEUE_FLAG_POLL_STATS 28 /* collecting stats for hybrid polling */ #define QUEUE_FLAG_REGISTERED 29 /* queue has been registered to a disk */ +#define QUEUE_FLAG_SCSI_SUP 30 /* queue supports SCSI commands */ #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ (1 << QUEUE_FLAG_STACKABLE) | \ @@ -708,6 +709,7 @@ static inline void queue_flag_clear(unsigned int flag, struct request_queue *q) #define blk_queue_secure_erase(q) \ (test_bit(QUEUE_FLAG_SECERASE, &(q)->queue_flags)) #define blk_queue_dax(q) test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags) +#define blk_queue_scsi_sup(q) test_bit(QUEUE_FLAG_SCSI_SUP, &(q)->queue_flags) #define blk_noretry_request(rq) \ ((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \ -- 2.12.2
WARNING: multiple messages have this Message-ID (diff)
From: Bart Van Assche <bart.vanassche@sandisk.com> To: "Martin K . Petersen" <martin.petersen@oracle.com>, James Bottomley <James.Bottomley@HansenPartnership.com> Cc: linux-scsi@vger.kernel.org, linux-block@vger.kernel.org, Bart Van Assche <bart.vanassche@sandisk.com>, Jens Axboe <axboe@fb.com>, Christoph Hellwig <hch@lst.de>, Omar Sandoval <osandov@fb.com>, Hannes Reinecke <hare@suse.com> Subject: [PATCH 11/31] block: Introduce queue flag QUEUE_FLAG_SCSI_SUP Date: Tue, 23 May 2017 17:34:00 -0700 [thread overview] Message-ID: <20170524003420.5381-12-bart.vanassche@sandisk.com> (raw) In-Reply-To: <20170524003420.5381-1-bart.vanassche@sandisk.com> >From the context where a SCSI command is submitted it is not always possible to figure out whether or not the queue the command is submitted to has struct scsi_request as the first member of its private data. Hence introduce the flag QUEUE_FLAG_SCSI_SUP. Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com> Cc: Jens Axboe <axboe@fb.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Omar Sandoval <osandov@fb.com> Cc: Hannes Reinecke <hare@suse.com> --- block/bsg-lib.c | 1 + drivers/block/cciss.c | 1 + drivers/ide/ide-probe.c | 1 + drivers/scsi/scsi_lib.c | 2 ++ drivers/scsi/scsi_transport_sas.c | 1 + include/linux/blkdev.h | 2 ++ 6 files changed, 8 insertions(+) diff --git a/block/bsg-lib.c b/block/bsg-lib.c index 0a23dbba2d30..420ac014b49c 100644 --- a/block/bsg-lib.c +++ b/block/bsg-lib.c @@ -246,6 +246,7 @@ struct request_queue *bsg_setup_queue(struct device *dev, char *name, q->bsg_job_size = dd_job_size; q->bsg_job_fn = job_fn; queue_flag_set_unlocked(QUEUE_FLAG_BIDI, q); + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); blk_queue_softirq_done(q, bsg_softirq_done); blk_queue_rq_timeout(q, BLK_DEFAULT_SG_TIMEOUT); diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index cd375503f7b0..9706718749e5 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -1956,6 +1956,7 @@ static int cciss_add_disk(ctlr_info_t *h, struct gendisk *disk, disk->queue->cmd_size = sizeof(struct scsi_request); disk->queue->request_fn = do_cciss_request; disk->queue->queue_lock = &h->lock; + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, disk->queue); if (blk_init_allocated_queue(disk->queue) < 0) goto cleanup_queue; diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 023562565d11..fdfa11f80dda 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c @@ -773,6 +773,7 @@ static int ide_init_queue(ide_drive_t *drive) q->request_fn = do_ide_request; q->init_rq_fn = ide_init_rq; q->cmd_size = sizeof(struct ide_request); + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); if (blk_init_allocated_queue(q) < 0) { blk_cleanup_queue(q); return 1; diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 59400033aba8..4cecf82960b7 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -2059,6 +2059,8 @@ void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q) { struct device *dev = shost->dma_dev; + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); + /* * this limit is imposed by hardware restrictions */ diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c index 0ebe2f1bb908..e5eab2685ecf 100644 --- a/drivers/scsi/scsi_transport_sas.c +++ b/drivers/scsi/scsi_transport_sas.c @@ -264,6 +264,7 @@ static int sas_bsg_initialize(struct Scsi_Host *shost, struct sas_rphy *rphy) q->queuedata = shost; queue_flag_set_unlocked(QUEUE_FLAG_BIDI, q); + queue_flag_set_unlocked(QUEUE_FLAG_SCSI_SUP, q); return 0; out_cleanup_queue: diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index b5d1e27631ee..6416a5834b05 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -618,6 +618,7 @@ struct request_queue { #define QUEUE_FLAG_STATS 27 /* track rq completion times */ #define QUEUE_FLAG_POLL_STATS 28 /* collecting stats for hybrid polling */ #define QUEUE_FLAG_REGISTERED 29 /* queue has been registered to a disk */ +#define QUEUE_FLAG_SCSI_SUP 30 /* queue supports SCSI commands */ #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ (1 << QUEUE_FLAG_STACKABLE) | \ @@ -708,6 +709,7 @@ static inline void queue_flag_clear(unsigned int flag, struct request_queue *q) #define blk_queue_secure_erase(q) \ (test_bit(QUEUE_FLAG_SECERASE, &(q)->queue_flags)) #define blk_queue_dax(q) test_bit(QUEUE_FLAG_DAX, &(q)->queue_flags) +#define blk_queue_scsi_sup(q) test_bit(QUEUE_FLAG_SCSI_SUP, &(q)->queue_flags) #define blk_noretry_request(rq) \ ((rq)->cmd_flags & (REQ_FAILFAST_DEV|REQ_FAILFAST_TRANSPORT| \ -- 2.12.2
next prev parent reply other threads:[~2017-05-24 0:34 UTC|newest] Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-05-24 0:33 [PATCH 00/31] SCSI patches for kernel v4.13 Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 0:33 ` [PATCH 01/31] Split scsi_internal_device_block() Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:48 ` Hannes Reinecke 2017-05-24 7:36 ` Johannes Thumshirn 2017-05-24 0:33 ` [PATCH 02/31] Create two versions of scsi_internal_device_unblock() Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:48 ` Hannes Reinecke 2017-05-24 7:38 ` Johannes Thumshirn 2017-05-24 0:33 ` [PATCH 03/31] Protect SCSI device state changes with a mutex Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:51 ` Hannes Reinecke 2017-05-24 15:10 ` Bart Van Assche 2017-05-24 15:10 ` Bart Van Assche 2017-05-24 0:33 ` [PATCH 04/31] Introduce scsi_start_queue() Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:51 ` Hannes Reinecke 2017-05-24 0:33 ` [PATCH 05/31] Make __scsi_remove_device go straight from BLOCKED to DEL Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:52 ` Hannes Reinecke 2017-05-24 0:33 ` [PATCH 06/31] scmd_eh_abort_handler(): Add a comment Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:53 ` Hannes Reinecke 2017-05-24 0:33 ` [PATCH 07/31] scsi: Use blk_mq_rq_to_pdu() to convert a request to a SCSI command pointer Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:54 ` Hannes Reinecke 2017-05-24 7:50 ` Johannes Thumshirn 2017-05-24 0:33 ` [PATCH 08/31] sd, sr: Convert two assignments into warning statements Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:55 ` Hannes Reinecke 2017-05-24 7:52 ` Johannes Thumshirn 2017-05-24 0:33 ` [PATCH 09/31] block: Avoid that blk_exit_rl() triggers a use-after-free Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:55 ` Hannes Reinecke 2017-05-24 15:09 ` Tejun Heo 2017-05-24 0:33 ` [PATCH 10/31] Avoid that scsi_exit_rq() " Bart Van Assche 2017-05-24 0:33 ` Bart Van Assche 2017-05-24 5:58 ` Hannes Reinecke 2017-05-24 0:34 ` Bart Van Assche [this message] 2017-05-24 0:34 ` [PATCH 11/31] block: Introduce queue flag QUEUE_FLAG_SCSI_SUP Bart Van Assche 2017-05-24 6:01 ` Hannes Reinecke 2017-05-24 15:05 ` Bart Van Assche 2017-05-24 15:05 ` Bart Van Assche 2017-05-24 0:34 ` [PATCH 12/31] bsg: Check queue type before attaching to a queue Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:01 ` Hannes Reinecke 2017-05-25 2:01 ` Martin K. Petersen 2017-05-25 2:01 ` Martin K. Petersen 2017-05-24 0:34 ` [PATCH 13/31] pktcdvd: " Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:02 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 14/31] cdrom: Check private request size " Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:02 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 15/31] nfsd: Check private request size before submitting a SCSI request Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:02 ` Hannes Reinecke 2017-05-24 6:02 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 16/31] scsi: Make scsi_ioctl_reset() pass the request queue pointer to blk_rq_init() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:03 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 17/31] block: Introduce request_queue.initialize_rq_fn() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:04 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 18/31] block: Make scsi_req_init() calls implicit Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:05 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 19/31] scsi: Change argument type of scsi_req_init() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:06 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 20/31] scsi: Only add commands to the device command list if required by the LLD Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:07 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 21/31] scsi: Move most of scsi_init_command() into scsi_initialize_rq() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:09 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 22/31] scsi: Inline scsi_init_command() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:09 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 23/31] scsi: Move sense buffer pointer initialization into scsi_initialize_rq() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:10 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 24/31] scsi: Make scsi_initialize_rq() zero the entire struct scsi_cmnd Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:10 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 25/31] scsi-mq: Make behavior scsi_mq_prep_fn() closer to that of scsi_prep_fn() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:11 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 26/31] scsi: Move the code for clearing private command data into scsi_dispatch_cmd() Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:12 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 27/31] scsi: Consolidate more initialization code Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:13 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 28/31] scsi_setup_fs_cmnd(): Call scsi_req_init() instead of open-coding it Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:13 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 29/31] scsi: snic: Remove code that zeroes driver-private command data Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:14 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 30/31] scsi: virtio: " Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:14 ` Hannes Reinecke 2017-05-24 0:34 ` [PATCH 31/31] xen/scsifront: " Bart Van Assche 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 6:14 ` Hannes Reinecke 2017-05-24 6:14 ` Hannes Reinecke 2017-05-24 7:02 ` Juergen Gross 2017-05-24 7:02 ` Juergen Gross 2017-05-24 0:34 ` Bart Van Assche 2017-05-24 2:31 ` [PATCH 00/31] SCSI patches for kernel v4.13 Martin K. Petersen 2017-05-24 2:31 ` Martin K. Petersen 2017-05-24 3:55 ` Jens Axboe 2017-05-24 4:43 ` Bart Van Assche 2017-05-24 4:43 ` Bart Van Assche 2017-05-25 2:04 ` Martin K. Petersen 2017-05-25 2:04 ` Martin K. Petersen 2017-06-01 14:08 ` Bart Van Assche 2017-06-01 14:08 ` Bart Van Assche 2017-06-01 14:09 ` Christoph Hellwig
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170524003420.5381-12-bart.vanassche@sandisk.com \ --to=bart.vanassche@sandisk.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=axboe@fb.com \ --cc=hare@suse.com \ --cc=hch@lst.de \ --cc=linux-block@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=osandov@fb.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.