Coly Li 6214ae
From e120a5f1e78fab6223544e425015f393d90d6f0d Mon Sep 17 00:00:00 2001
Coly Li 6214ae
From: Mike Snitzer <snitzer@kernel.org>
Coly Li 6214ae
Date: Fri, 22 Jul 2022 15:31:23 -0400
Coly Li 6214ae
Subject: [PATCH] dm: return early from dm_pr_call() if DM device is suspended
Coly Li 6214ae
Git-commit: e120a5f1e78fab6223544e425015f393d90d6f0d
Coly Li 6214ae
Patch-mainline: v6.0-rc1
Coly Li 6214ae
References: git-fixes
Coly Li 6214ae
Coly Li 6214ae
Otherwise PR ops may be issued while the broader DM device is being
Coly Li 6214ae
reconfigured, etc.
Coly Li 6214ae
Coly Li 6214ae
Fixes: 9c72bad1f31a ("dm: call PR reserve/unreserve on each underlying device")
Coly Li 6214ae
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Coly Li 6214ae
Signed-off-by: Coly Li <colyli@suse.de>
Coly Li 6214ae
Coly Li 6214ae
---
Coly Li 6214ae
 drivers/md/dm.c | 5 +++++
Coly Li 6214ae
 1 file changed, 5 insertions(+)
Coly Li 6214ae
Coly Li 6214ae
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
Coly Li 6214ae
index 560ad05497a9..e44415daa98f 100644
Coly Li 6214ae
--- a/drivers/md/dm.c
Coly Li 6214ae
+++ b/drivers/md/dm.c
Coly Li 6214ae
@@ -3096,6 +3096,11 @@ static int dm_call_pr(struct block_device *bdev, iterate_devices_callout_fn fn,
Coly Li 6214ae
 		goto out;
Coly Li 6214ae
 	ti = dm_table_get_target(table, 0);
Coly Li 6214ae
 
Coly Li 6214ae
+	if (dm_suspended_md(md)) {
Coly Li 6214ae
+		ret = -EAGAIN;
Coly Li 6214ae
+		goto out;
Coly Li 6214ae
+	}
Coly Li 6214ae
+
Coly Li 6214ae
 	ret = -EINVAL;
Coly Li 6214ae
 	if (!ti->type->iterate_devices)
Coly Li 6214ae
 		goto out;
Coly Li 6214ae
-- 
Coly Li 6214ae
2.35.3
Coly Li 6214ae