diff -urN ext2-4/fs/ext2/ialloc.c ext2-5/fs/ext2/ialloc.c --- ext2-4/fs/ext2/ialloc.c Fri Dec 1 11:00:19 2000 +++ ext2-5/fs/ext2/ialloc.c Fri Dec 1 11:00:49 2000 @@ -88,8 +88,7 @@ static int load_inode_bitmap (struct super_block * sb, unsigned int block_group) { - int i, j, retval = 0, slot = 0; - unsigned long inode_bitmap_number; + int i, retval = 0, slot = 0; struct ext2_sb_info *sbi = &sb->u.ext2_sb; struct buffer_head *bh = sbi->s_inode_bitmap[0]; @@ -119,7 +118,8 @@ i++) ; if (i < sbi->s_loaded_inode_bitmaps) { - inode_bitmap_number = sbi->s_inode_bitmap_number[i]; + int j; + unsigned long nr = sbi->s_inode_bitmap_number[i]; bh = sbi->s_inode_bitmap[i]; for (j = i; j > 0; j--) { sbi->s_inode_bitmap_number[j] = @@ -127,18 +127,17 @@ sbi->s_inode_bitmap[j] = sbi->s_inode_bitmap[j - 1]; } - sbi->s_inode_bitmap_number[0] = inode_bitmap_number; + sbi->s_inode_bitmap_number[0] = nr; sbi->s_inode_bitmap[0] = bh; - + if (bh) + goto found; /* * There's still one special case here --- if inode_bitmap == 0 * then our last attempt to read the bitmap failed and we have * just ended up caching that failure. Try again to read it. */ - if (bh) - goto found; - } else { + int j; if (sbi->s_loaded_inode_bitmaps < EXT2_MAX_GROUP_LOADED) sbi->s_loaded_inode_bitmaps++; else