]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nvme: multipath: enable BLK_FEAT_ATOMIC_WRITES for multipathing
authorAlan Adamson <alan.adamson@oracle.com>
Thu, 8 May 2025 22:38:00 +0000 (15:38 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jun 2025 12:45:10 +0000 (14:45 +0200)
[ Upstream commit a21675ee3b1ba094e229ae4cd8bddf7d215ab1b9 ]

A change to QEMU resulted in all nvme controllers (single and
multi-controller subsystems) to have its CMIC.MCTRS bit set which
indicates the subsystem supports multiple controllers and it is possible
a namespace can be shared between those multiple controllers in a
multipath configuration.

When a namespace of a CMIC.MCTRS enabled subsystem is allocated, a
multipath node is created.  The queue limits for this node are inherited
from the namespace being allocated. When inheriting queue limits, the
features being inherited need to be specified. The atomic write feature
(BLK_FEAT_ATOMIC_WRITES) was not specified so the atomic queue limits
were not inherited by the multipath disk node which resulted in the sysfs
atomic write attributes being zeroed. The fix is to include
BLK_FEAT_ATOMIC_WRITES in the list of features to be inherited.

Signed-off-by: Alan Adamson <alan.adamson@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/nvme/host/multipath.c

index f39823cde62c72346b0aa555532b52acfb069d04..ac17e650327f1ab0b206983bb06d31483b5ba8f3 100644 (file)
@@ -638,7 +638,8 @@ int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl, struct nvme_ns_head *head)
 
        blk_set_stacking_limits(&lim);
        lim.dma_alignment = 3;
-       lim.features |= BLK_FEAT_IO_STAT | BLK_FEAT_NOWAIT | BLK_FEAT_POLL;
+       lim.features |= BLK_FEAT_IO_STAT | BLK_FEAT_NOWAIT |
+               BLK_FEAT_POLL | BLK_FEAT_ATOMIC_WRITES;
        if (head->ids.csi == NVME_CSI_ZNS)
                lim.features |= BLK_FEAT_ZONED;