About using per_cpu to replace SRCU, I suggest separate discussion.
Can you show the patch? This will make it easier to discuss.
https://lore.kernel.org/linux-block/20200728134938.1505467-1-ming.lei@xxxxxxxxxx/
Directly replace SRCU with percpu_ref, is not safe.
This may make quiesce queue wait extra time, in extreme scenario,
maybe wait for ever.
Agree with Ming that this is not necessarily pressing as this issue
existed in nvme for a long time.
I don't resist to change the locking mechanism, but Ming needs to
provide evidence that this change does not degrade reliability nor
performance. Personally I'd like to see this specific issue solved
first and then do a an infrastructure change.