From 4855f95c7081d7438b55fed8f8808cc656f0ccc0 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Thu, 14 Dec 2006 17:32:59 +1100 Subject: [PATCH] Fix bug where v1 superblock might appear active when they should be clean. Only happens on kernel with 32 bit sector_t. --- Assemble.c | 2 +- super1.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Assemble.c b/Assemble.c index 5e4e3941..0450a47e 100644 --- a/Assemble.c +++ b/Assemble.c @@ -990,7 +990,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, if (must_close) close(mdfd); return 0; } - if (verbose >= 0) { + if (verbose >= -1) { fprintf(stderr, Name ": %s assembled from %d drive%s", mddev, okcnt, okcnt==1?"":"s"); if (sparecnt) fprintf(stderr, " and %d spare%s", sparecnt, sparecnt==1?"":"s"); diff --git a/super1.c b/super1.c index f1732f7b..88f15024 100644 --- a/super1.c +++ b/super1.c @@ -431,7 +431,9 @@ static void getinfo_super1(struct mdinfo *info, void *sbv) info->array.ctime = __le64_to_cpu(sb->ctime); info->array.utime = __le64_to_cpu(sb->utime); info->array.chunk_size = __le32_to_cpu(sb->chunksize)*512; - info->array.state = (__le64_to_cpu(sb->resync_offset)+1) ? 0 : 1; + info->array.state = + (__le64_to_cpu(sb->resync_offset) >= __le64_to_cpu(sb->size)) + ? 1 : 0; info->data_offset = __le64_to_cpu(sb->data_offset); info->component_size = __le64_to_cpu(sb->size); -- 2.39.2