[PATCH 3/5] nvme: track shared namespaces

Christoph Hellwig hch at lst.de
Thu Nov 9 05:20:46 PST 2017


On Thu, Nov 09, 2017 at 02:59:50PM +0200, Sagi Grimberg wrote:
>
>>>> To allow lockless path lookup the list of nvme_ns structures per
>>>> nvme_ns_head is protected by SRCU, which requires freeing the nvme_ns
>>>> structure through call_srcu.
>>>
>>> Can you remind me why isn't rcu sufficient? Can looking up a
>>> path (ns from head->list) block?
>>
>> blk_mq_make_request can block.
>
> Oh I see, so can you explain why srcu should cover direct_make_request?
>
> What if we were to do:
> --
> 	rcu_read_lock();
> 	ns = nvme_find_path(head);
> 	rcu_read_unlock();
> 	if (likely(ns)) {
> 		...
> --

That way we'd have to take and release a namespace reference for every I/O.



More information about the Linux-nvme mailing list