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)) { ... --