[PATCH v2] nvme: recompute multipath zoned limits from ready paths

Christoph Hellwig hch at lst.de
Mon May 25 00:30:12 PDT 2026


On Mon, May 25, 2026 at 02:40:26PM +0800, Yao Sang wrote:
> What I saw was not different live paths of the same namespace
> reporting different zoned limits. On a QEMU VM with native NVMe
> multipath enabled, two emulated NVMe controllers shared the same ZNS
> namespace and advertised CMIC.MULTI_CTRL, so the kernel created a
> multipath namespace head. In that setup, both controller paths
> reported max_open_zones=16 and max_active_zones=16, while the
> multipath namespace head for the same namespace reported 0/0.
> 
> I also checked Identify Namespace data through both controllers. In
> both cases, nvme zns id-ns reported mor=15 and mar=15, so I did not
> observe any path-to-path MOR/MAR mismatch. The mismatch was between
> the namespace head and the controller paths.

They have to.  The high-level approach in your earlier patch is
the correct one.  The problem is just that we use the block-level
stacking for totally different things (multipath and complicated
DM setups).  The long-term strategy is to unwind that, but for
now I think you should just open code what you did there in the
nvme-multipath driver.




More information about the Linux-nvme mailing list