On May 29, 2007 22:26 +0100, Daniel Drake wrote: > The partition in question has a block size of 4096, and mke2fs reports that > backup superblocks were created on blocks 32768, 98304, 163840, ... > > When running e2fsck, get_backup_sb starts by guessing a block size of 1024 > and backup superblock at block 8193. I'm not sure why, but it actually finds > a superblock at this location, so returns a context with superblock 8193, > blocksize 1024. This might be due to the superblock being in the journal at that location... This would fit right in the 32MB = 8192 block * 4kB block journal default. I wonder if e2fsck should start by guessing the default blocksize based on the size of the device, as we might otherwise find old superblocks from previous fdisk/mke2fs incarnations. > The following patch solves the problem by discounting superblocks which do > not meet the currently-sought block size. > As a result, block 32768 (blocksize=4096) is now used to restore the backup, > which agrees with the first location that mke2fs listed. Looks reasonable. > @@ -453,7 +453,8 @@ blk_t get_backup_sb(e2fsck_t ctx, ext2_f > if (sb->s_magic == ext2fs_swab16(EXT2_SUPER_MAGIC)) > ext2fs_swap_super(sb); > #endif > - if (sb->s_magic == EXT2_SUPER_MAGIC) { > + if (sb->s_magic == EXT2_SUPER_MAGIC && > + EXT2_BLOCK_SIZE(sb) == blocksize) { > ret_sb = superblock; > if (ctx) { > ctx->superblock = superblock; Cheers, Andreas -- Andreas Dilger Principal Software Engineer Cluster File Systems, Inc. - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html