On Wed, Oct 19, 2022 at 09:16:57AM +0800, Ming Lei wrote: > On Tue, Oct 18, 2022 at 03:57:18PM +0200, Christoph Hellwig wrote: > > Now that blk_mq_destroy_queue does not release the queue reference, there > > is no need for a second queue reference to be held by the scsi_device. > > > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > > --- > > drivers/scsi/scsi_scan.c | 1 - > > drivers/scsi/scsi_sysfs.c | 1 - > > 2 files changed, 2 deletions(-) > > > > diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c > > index 5d27f5196de6f..0a95fa787fdf4 100644 > > --- a/drivers/scsi/scsi_scan.c > > +++ b/drivers/scsi/scsi_scan.c > > @@ -344,7 +344,6 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, > > sdev->request_queue = q; > > q->queuedata = sdev; > > __scsi_init_queue(sdev->host, q); > > - WARN_ON_ONCE(!blk_get_queue(q)); > > > > depth = sdev->host->cmd_per_lun ?: 1; > > > > diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c > > index 1214c6f07bc64..c95177ca6ed26 100644 > > --- a/drivers/scsi/scsi_sysfs.c > > +++ b/drivers/scsi/scsi_sysfs.c > > @@ -1478,7 +1478,6 @@ void __scsi_remove_device(struct scsi_device *sdev) > > mutex_unlock(&sdev->state_mutex); > > > > blk_mq_destroy_queue(sdev->request_queue); > > - blk_put_queue(sdev->request_queue); > > The above put is counter-pair of blk_get_queue() in scsi_alloc_sdev, and > the original blk_put_queue() in blk_mq_destroy_queue() is counter-pair of > the initial get in blk_alloc_queue(). > > Now blk_put_queue() is moved out of blk_mq_destroy_queue(), I am wondering > how the scsi queue lifetime can work correctly with this patch? Or is there > bug in current scsi code? oops, the above blk_put_queue() is actually added in the 1st patch, so this patch is fine, sorry for the noise. thanks, Ming