[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <70e14e12-2ffc-37db-dd8f-229bc580546e@oracle.com>
Date: Tue, 26 Mar 2019 09:17:24 +0800
From: "jianchao.wang" <jianchao.w.wang@...cle.com>
To: Keith Busch <kbusch@...nel.org>
Cc: axboe@...nel.dk, linux-block@...r.kernel.org, jsmart2021@...il.com,
bvanassche@....org, josef@...icpanda.com,
linux-nvme@...ts.infradead.org, linux-kernel@...r.kernel.org,
keith.busch@...el.com, hare@...e.de, jthumshirn@...e.de,
hch@....de, sagi@...mberg.me
Subject: Re: [PATCH V2 7/8] nvme: use blk_mq_queue_tag_inflight_iter
Hi Keith
On 3/25/19 9:49 PM, Keith Busch wrote:
> On Mon, Mar 25, 2019 at 01:38:37PM +0800, Jianchao Wang wrote:
>> blk_mq_tagset_inflight_iter is not safe that it could get stale request
>> in tags->rqs[]. Use blk_mq_queue_tag_inflight_iter here. A new helper
>> interface nvme_iterate_inflight_rqs is introduced to iterate
>> all of the ns under a ctrl.
>
> Nak, NVMe only iterates tags when new requests can't enter, allocated
> requests can't dispatch, and dispatched commands can't complete. So
> it is perfectly safe to iterate if the driver takes reasonable steps
> beforehand.
nvme_dev_disable just quiesce and freeze the request_queue, but not drain the enters.
So there still could be someone escapes the queue freeze checking and tries to allocate
request.
> Further, for M tags and N namespaces, we complete teardown
> in O(M) time, but this makes in O(M*N) without gaining anything.
>
Yes, it is indeed inefficient.
Thanks
Jianchao
Powered by blists - more mailing lists