From: (Andrew Church) The following patch fixes a bug in the processing of the sb= (alternate superblock) mount option for ext2: when changing the device block size, the given superblock is ignored and the code reverts to using block 1. --- 25-akpm/fs/ext2/super.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff -puN fs/ext2/super.c~ext2-alternate-sb-mount-fix fs/ext2/super.c --- 25/fs/ext2/super.c~ext2-alternate-sb-mount-fix 2004-04-06 21:20:00.730489128 -0700 +++ 25-akpm/fs/ext2/super.c 2004-04-06 21:20:00.735488368 -0700 @@ -564,8 +564,9 @@ static int ext2_fill_super(struct super_ struct ext2_sb_info * sbi; struct ext2_super_block * es; struct inode *root; - unsigned long block, sb_block = 1; - unsigned long logic_sb_block = get_sb_block(&data); + unsigned long block; + unsigned long sb_block = get_sb_block(&data); + unsigned long logic_sb_block; unsigned long offset = 0; unsigned long def_mount_opts; int blocksize = BLOCK_SIZE; @@ -598,6 +599,8 @@ static int ext2_fill_super(struct super_ if (blocksize != BLOCK_SIZE) { logic_sb_block = (sb_block*BLOCK_SIZE) / blocksize; offset = (sb_block*BLOCK_SIZE) % blocksize; + } else { + logic_sb_block = sb_block; } if (!(bh = sb_bread(sb, logic_sb_block))) { _