From: Song Liu Date: Tue, 8 Dec 2015 01:08:39 +0000 (-0800) Subject: fix bug in assemble X-Git-Tag: mdadm-3.4~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbfbca430080de55ce70ba1fcdec44173a0ddc02;p=thirdparty%2Fmdadm.git 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 --- 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