From dbfbca430080de55ce70ba1fcdec44173a0ddc02 Mon Sep 17 00:00:00 2001 From: Song Liu Date: Mon, 7 Dec 2015 17:08:39 -0800 Subject: [PATCH] fix bug in assemble In Assemble, getinfo_super() over-writes journal_clean. To ensure correct journal_clean, keep it in a local variable before getinfo_super(). Signed-off-by: Song Liu Signed-off-by: Shaohua Li Signed-off-by: NeilBrown --- Assemble.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Assemble.c b/Assemble.c index 90c99184..a7cd1638 100644 --- a/Assemble.c +++ b/Assemble.c @@ -1302,6 +1302,7 @@ int Assemble(struct supertype *st, char *mddev, int bestcnt = 0; int devcnt; unsigned int okcnt, sparecnt, rebuilding_cnt, replcnt, journalcnt; + int journal_clean = 0; int i; int was_forced = 0; int most_recent = 0; @@ -1592,7 +1593,7 @@ try_again: ) { devices[j].uptodate = 1; if (devices[j].i.disk.state & (1<journal_clean = 1; + journal_clean = 1; if (i < content->array.raid_disks * 2) { if (devices[j].i.recovery_start == MaxSector || (content->reshape_active && @@ -1664,6 +1665,8 @@ try_again: #ifndef MDASSEMBLE sysfs_init(content, mdfd, NULL); #endif + /* after reload context, store journal_clean in context */ + content->journal_clean = journal_clean; for (i=0; i