[PATCH v2 1/2] nvmet: defer setting ns->enabled to false in nvmet_ns_disable()

Shin'ichiro Kawasaki shinichiro.kawasaki at wdc.com
Wed Sep 30 22:55:45 PDT 2026


On Sep 18, 2026 / 21:57, Nilay Shroff wrote:
> nvmet_ns_disable() currently clears ns->enabled before draining
> in-flight I/O references. This allows namespace configuration to be
> changed while existing I/O requests can still hold a reference to the
> namespace.
> 
> This can race with configuration of namespace attributes such as the
> device path, UUID, NGUID etc. These attributes can be accessed by I/O
> requests without holding subsys->lock and must not be modified while
> such requests are still using the namespace.
> 
> In nvmet_ns_disable(), keep ns->enabled set while existing namespace
> references are being drained, so namespace configuration remains blocked
> until all in-flight I/O has completed. Set ns->enabled to false only
> after the namespace references have been drained and the namespace
> device has been disabled.
> 
> Introduce the NVMET_NS_IO_LIVE flag, which is set after the namespace
> is successfully enabled in nvmet_ns_enable(). When nvmet_ns_disable()
> starts, clear NVMET_NS_IO_LIVE so that the I/O path stops admitting new
> I/O once the flag is cleared. Using test_and_clear_bit() in
> nvmet_ns_disable() also prevents concurrent callers from starting a
> second disable operation.
> 
> Signed-off-by: Nilay Shroff <nilay at linux.ibm.com>

Recent blktests-ci trial runs for nvme-7.3 branch reported failure of nvme/052
[*]. It is required to repeat the test case 3 to 20 times to recreate the
failure on my test system. I bisected and find this patch is the trigger of the
failure.

Nilay, may I ask you to take a look in the failure? I'm not sure if this should
be addressed in kernel side of blktests side.

[*]

  nvme/052 (tr=loop) (Test file-ns creation/deletion under one subsystem) [failed]
      runtime    ...  12.165s
      --- tests/nvme/052.out    2026-09-29 00:36:09.236884509 +0000
      +++ /home/runner/blktests/results/nodev_tr_loop/nvme/052.out.bad  2026-09-29 01:06:09.513359622 +0000
      @@ -1,2 +1,4 @@
       Running nvme/052
      +namespace with uuid "492157d2-1f3b-4bc2-b717-e6234d0fa466" not  created within 5 seconds
      +FAIL
       Test complete



More information about the Linux-nvme mailing list