[PATCH v3 0/5] block, nvme: support same-LBA multipath limit stacking

John Garry john.g.garry at oracle.com
Mon Sep 7 02:34:17 PDT 2026


On 21/08/2026 11:10, Yao Sang wrote:
> blk_stack_limits() stacks limits for a top-device range mapped onto a
> bottom device. Same-LBA multipath instead needs to stack limits across
> paths without applying mapped-range topology calculations.

Sorry, again, I'm finding this hard to follow.

My thoughts are that we should be doing the following:
- apply the "topology" limits from the first NS to the NS head
	- those "topology" limits are fixed and like logical and physical block 
size
	- this is only ever done once for NS head lifetime
- then stack per-path (NS) limits, which may be affected by the 
transport or HBA or controller

Am I right? If so, is this what this series is doing?

 From checking nvme_update_ns_head_limits(), we seem to apply the 
"topology" limit per NS (which I did not expect).

> 
> Factor the common topology, path and atomic write code into helpers. Add
> block helpers for same-LBA multipath and use them for NVMe namespace heads.
> SCSI multipath can use the same helpers.
> 
> Changes since v2:
> - replace the exported low-level helpers with block helpers for same-LBA
>     multipath;
> - keep mapped-range and start-dependent checks inside blk_stack_limits().
> 
> Review of v2 noted that fixed namespace limits should not be updated for
> each path. V3 separates these limits from path limit stacking, but keeps
> the existing NVMe update behavior.
> 
> Changing this also requires explicit namespace-head revalidation after
> events such as Format NVM. That work is left for a follow-up.
> 
> Tests:
> - blktests nvme/004, 005, 006, 008, 010, 012, 014, 016, 017, 018,
>     019, 021, 022, 023, 025, 026, 027, 028, 029, 030, 031, 040, 041,
>     042, 043, 044, 045, 049, 051, 052, 053, 054, 057, 058, 059, 065,
>     067 and 068 passed.
> - blktests zbd/001, 003, 004, 005, 006, 008, 009, 011, 012 and 013
>     passed.
> - blktests block/003, 004 and 012, and scsi/009 and 010 passed.
> - xfstests xfs/643, xfs/646, generic/765 and generic/773 passed.




More information about the Linux-nvme mailing list