]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Fix bug where v1 superblock might appear active when they should be clean.
authorNeil Brown <neilb@suse.de>
Thu, 14 Dec 2006 06:32:59 +0000 (17:32 +1100)
committerNeil Brown <neilb@suse.de>
Thu, 14 Dec 2006 06:32:59 +0000 (17:32 +1100)
Only happens on kernel with 32 bit sector_t.

Assemble.c
super1.c

index 5e4e3941ac735592abcdd1f573140a0867b9bdbe..0450a47e6a107b4ed6d1f877cd84d5fae613d958 100644 (file)
@@ -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");
index f1732f7b6c751e56842b255702e4bf3ad5b2f729..88f1502455d2dab9f06f2a39b0eb467a26973b43 100644 (file)
--- 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);