Coly Li e35c01
From 880bcce0dcc3172fe865352b492c41d85290cb8d Mon Sep 17 00:00:00 2001
Coly Li e35c01
From: Heinz Mauelshagen <heinzm@redhat.com>
Coly Li e35c01
Date: Fri, 16 Mar 2018 23:01:59 +0100
Coly Li e35c01
Subject: [PATCH] dm raid: fix nosync status
Coly Li e35c01
Git-commit: 880bcce0dcc3172fe865352b492c41d85290cb8d
Coly Li e35c01
Patch-mainline: v4.17-rc1
Coly Li e35c01
References: bsc#1093023
Coly Li e35c01
Coly Li e35c01
Fix a race for "nosync" activations providing "aa.." device health
Coly Li e35c01
characters and "0/N" sync ratio rather than "AA..." and "N/N".  Occurs
Coly Li e35c01
when status for the raid set is retrieved during resume before the MD
Coly Li e35c01
sync thread starts and clears the MD_RECOVERY_NEEDED flag.
Coly Li e35c01
Coly Li e35c01
Cc: stable@vger.kernel.org # 4.16+
Coly Li e35c01
Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Coly Li e35c01
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Coly Li e35c01
Signed-off-by: Coly Li <colyli@suse.de>
Coly Li e35c01
Coly Li e35c01
---
Coly Li e35c01
 drivers/md/dm-raid.c | 3 ++-
Coly Li e35c01
 1 file changed, 2 insertions(+), 1 deletion(-)
Coly Li e35c01
Coly Li e35c01
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
Coly Li e35c01
index b7a9c710ebec..598c9e3e41a5 100644
Coly Li e35c01
--- a/drivers/md/dm-raid.c
Coly Li e35c01
+++ b/drivers/md/dm-raid.c
Coly Li e35c01
@@ -3408,7 +3408,8 @@ static sector_t rs_get_progress(struct raid_set *rs, unsigned long recovery,
Coly Li e35c01
 		set_bit(RT_FLAG_RS_IN_SYNC, &rs->runtime_flags);
Coly Li e35c01
 
Coly Li e35c01
 	} else {
Coly Li e35c01
-		if (!test_bit(MD_RECOVERY_INTR, &recovery) &&
Coly Li e35c01
+		if (!test_bit(__CTR_FLAG_NOSYNC, &rs->ctr_flags) &&
Coly Li e35c01
+		    !test_bit(MD_RECOVERY_INTR, &recovery) &&
Coly Li e35c01
 		    (test_bit(MD_RECOVERY_NEEDED, &recovery) ||
Coly Li e35c01
 		     test_bit(MD_RECOVERY_RESHAPE, &recovery) ||
Coly Li e35c01
 		     test_bit(MD_RECOVERY_RUNNING, &recovery)))
Coly Li e35c01
-- 
Coly Li e35c01
2.16.3
Coly Li e35c01