[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <449a5591-252d-e1f9-967b-d9c530f1f788@oracle.com>
Date: Wed, 28 Feb 2018 10:25:10 +0800
From: "jianchao.wang" <jianchao.w.wang@...cle.com>
To: Bart Van Assche <Bart.VanAssche@....com>,
"jejb@...ux.vnet.ibm.com" <jejb@...ux.vnet.ibm.com>,
"martin.petersen@...cle.com" <martin.petersen@...cle.com>
Cc: "linux-scsi@...r.kernel.org" <linux-scsi@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"hch@....de" <hch@....de>
Subject: Re: [PATCH] scsi: core: use blk_mq_requeue_request in
__scsi_queue_insert
Hi Bart
Thanks for your kindly response and precious time to review this.
On 02/28/2018 01:18 AM, Bart Van Assche wrote:
> On Tue, 2018-02-27 at 17:06 +0000, Bart Van Assche wrote:
>> On Tue, 2018-02-27 at 13:15 +0800, jianchao.wang wrote:
>>> Can you share more details about this ?
>>
>> After having had another look, I think your patch is fine.
>
> (replying to my own e-mail)
>
> What I think is fine in your patch is that it skips the unprep and reprep
> when requeueing. However, there is a put_device(&sdev->sdev_gendev) call
> in scsi_mq_requeue_cmd() and your patch causes that put_device() call to
> be skipped when requeueing. An explanation is needed in the commit message
> why you think that removing that put_device() call is fine.
Your concern is right.
For the block legacy path in scsi core, the get_device(&sdev->sdev_gendev) is in prep.
So when it requeue the request w/ RQF_DONTPREP, the reference will not be got again.
However, for blk-mq patch in scsi core, the get_device(&sdev->sdev_gendev) in .get_budget,
so put_device is still needed here.
Thanks for your directive.
Jianchao
Powered by blists - more mailing lists