Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9efc160f authored by Bart Van Assche's avatar Bart Van Assche Committed by Jens Axboe
Browse files

block: Introduce queue flag QUEUE_FLAG_SCSI_PASSTHROUGH



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_PASSTHROUGH.

Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Cc: Omar Sandoval <osandov@fb.com>
Cc: Don Brace <don.brace@microsemi.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent edea55ab
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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_PASSTHROUGH, q);
	blk_queue_softirq_done(q, bsg_softirq_done);
	blk_queue_rq_timeout(q, BLK_DEFAULT_SG_TIMEOUT);

+1 −0
Original line number Diff line number Diff line
@@ -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_PASSTHROUGH, disk->queue);
	if (blk_init_allocated_queue(disk->queue) < 0)
		goto cleanup_queue;

+1 −0
Original line number Diff line number Diff line
@@ -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_PASSTHROUGH, q);
	if (blk_init_allocated_queue(q) < 0) {
		blk_cleanup_queue(q);
		return 1;
+2 −0
Original line number Diff line number Diff line
@@ -2057,6 +2057,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_PASSTHROUGH, q);

	/*
	 * this limit is imposed by hardware restrictions
	 */
+1 −0
Original line number Diff line number Diff line
@@ -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_PASSTHROUGH, q);
	return 0;

out_cleanup_queue:
Loading