From: NeilBrown 1/ Must typecast int to (sector_t) before inverting or we might not invert enough bits. 2/ When "bitmap_offset" was added to mdp_superblock_1, we didn't increase the count of words-used (96 to 100). Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- drivers/md/md.c | 2 +- include/linux/raid/md_p.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/md/md.c~md-two-small-fixes-for-md-verion-1-superblocks drivers/md/md.c --- 25/drivers/md/md.c~md-two-small-fixes-for-md-verion-1-superblocks 2005-05-09 22:34:01.000000000 -0700 +++ 25-akpm/drivers/md/md.c 2005-05-09 22:34:01.000000000 -0700 @@ -847,7 +847,7 @@ static int super_1_load(mdk_rdev_t *rdev case 0: sb_offset = rdev->bdev->bd_inode->i_size >> 9; sb_offset -= 8*2; - sb_offset &= ~(4*2-1); + sb_offset &= ~(sector_t)(4*2-1); /* convert from sectors to K */ sb_offset /= 2; break; diff -puN include/linux/raid/md_p.h~md-two-small-fixes-for-md-verion-1-superblocks include/linux/raid/md_p.h --- 25/include/linux/raid/md_p.h~md-two-small-fixes-for-md-verion-1-superblocks 2005-05-09 22:34:01.000000000 -0700 +++ 25-akpm/include/linux/raid/md_p.h 2005-05-09 22:34:01.000000000 -0700 @@ -202,7 +202,7 @@ struct mdp_superblock_1 { * NOTE: signed, so bitmap can be before superblock * only meaningful of feature_map[0] is set. */ - __u8 pad1[128-96]; /* set to 0 when written */ + __u8 pad1[128-100]; /* set to 0 when written */ /* constant this-device information - 64 bytes */ __u64 data_offset; /* sector start of data, often 0 */ _