Hannes Reinecke 084ef2
From: Sagi Grimberg <sagi@grimberg.me>
Hannes Reinecke 084ef2
Date: Wed, 1 Apr 2020 22:44:43 -0700
Hannes Reinecke 084ef2
Subject: [PATCH] nvme: inherit stable pages constraint in the mpath stack
Hannes Reinecke 084ef2
Git-commit: 74e4d20e2f43cf09a35543d960ac8f7a1ffcbbb5
Michal Kubecek 66e035
Patch-mainline: v5.7-rc1
Hannes Reinecke 084ef2
References: bsc#1169045
Hannes Reinecke 084ef2
 device
Hannes Reinecke 084ef2
Hannes Reinecke 084ef2
If the backing device require stable pages, we need to set it on the
Hannes Reinecke 084ef2
stack mpath device as well. This applies to rdma/fc transports when
Hannes Reinecke 084ef2
doing data integrity and tcp transport calculating digests.
Hannes Reinecke 084ef2
Hannes Reinecke 084ef2
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Hannes Reinecke 084ef2
Signed-off-by: Christoph Hellwig <hch@lst.de>
Hannes Reinecke 084ef2
Acked-by: Hannes Reinecke <hare@suse.com>
Hannes Reinecke 084ef2
---
Hannes Reinecke 084ef2
 drivers/nvme/host/core.c | 7 +++++++
Hannes Reinecke 084ef2
 1 file changed, 7 insertions(+)
Hannes Reinecke 084ef2
Hannes Reinecke 084ef2
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
Hannes Reinecke 084ef2
index 2db8563aeb2d..91c1bd659947 100644
Hannes Reinecke 084ef2
--- a/drivers/nvme/host/core.c
Hannes Reinecke 084ef2
+++ b/drivers/nvme/host/core.c
Hannes Reinecke 084ef2
@@ -1897,6 +1897,13 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id)
Hannes Reinecke 084ef2
 	if (ns->head->disk) {
Hannes Reinecke 084ef2
 		nvme_update_disk_info(ns->head->disk, ns, id);
Hannes Reinecke 084ef2
 		blk_queue_stack_limits(ns->head->disk->queue, ns->queue);
Hannes Reinecke 084ef2
+		if (bdi_cap_stable_pages_required(ns->queue->backing_dev_info)) {
Hannes Reinecke 084ef2
+			struct backing_dev_info *info =
Hannes Reinecke 084ef2
+				ns->head->disk->queue->backing_dev_info;
Hannes Reinecke 084ef2
+
Hannes Reinecke 084ef2
+                        info->capabilities |= BDI_CAP_STABLE_WRITES;
Hannes Reinecke 084ef2
+		}
Hannes Reinecke 084ef2
+
Hannes Reinecke 084ef2
 		revalidate_disk(ns->head->disk);
Hannes Reinecke 084ef2
 	}
Hannes Reinecke 084ef2
 #endif
Hannes Reinecke 084ef2
-- 
Hannes Reinecke 084ef2
2.16.4
Hannes Reinecke 084ef2