]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] md: fix problems with verion-1 superblock code
authorNeil Brown <neilb@cse.unsw.edu.au>
Mon, 7 Feb 2005 23:46:44 +0000 (15:46 -0800)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 7 Feb 2005 23:46:44 +0000 (15:46 -0800)
- off-by-one error
- missing recalc of checksum

Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/md/md.c

index 071b347b282bce8d1b157e5c581e45f0e77ec304..1a8c43bede92aaa4336445d8b9bc89ca52e16e1e 100644 (file)
@@ -935,8 +935,8 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
 
        max_dev = 0;
        ITERATE_RDEV(mddev,rdev2,tmp)
-               if (rdev2->desc_nr > max_dev)
-                       max_dev = rdev2->desc_nr;
+               if (rdev2->desc_nr+1 > max_dev)
+                       max_dev = rdev2->desc_nr+1;
        
        sb->max_dev = cpu_to_le32(max_dev);
        for (i=0; i<max_dev;i++)
@@ -953,6 +953,7 @@ static void super_1_sync(mddev_t *mddev, mdk_rdev_t *rdev)
        }
 
        sb->recovery_offset = cpu_to_le64(0); /* not supported yet */
+       sb->sb_csum = calc_sb_1_csum(sb);
 }