[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