linux/fs/ext4
Frederic Bohe c806e68f56 ext4: fix initialization of UNINIT bitmap blocks
This fixes a bug which caused on-line resizing of filesystems with a
1k blocksize to fail.  The root cause of this bug was the fact that if
an uninitalized bitmap block gets read in by userspace (which
e2fsprogs does try to avoid, but can happen when the blocksize is less
than the pagesize and an adjacent blocks is read into memory)
ext4_read_block_bitmap() was erroneously depending on the buffer
uptodate flag to decide whether it needed to initialize the bitmap
block in memory --- i.e., to set the standard set of blocks in use by
a block group (superblock, bitmaps, inode table, etc.).  Essentially,
ext4_read_block_bitmap() assumed it was the only routine that might
try to read a block containing a block bitmap, which is simply not
true.  

To fix this, ext4_read_block_bitmap() and ext4_read_inode_bitmap()
must always initialize uninitialized bitmap blocks.  Once a block or
inode is allocated out of that bitmap, it will be marked as
initialized in the block group descriptor, so in general this won't
result any extra unnecessary work.

Signed-off-by: Frederic Bohe <frederic.bohe@bull.net>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-10-10 08:09:18 -04:00
..
acl.c [PATCH] sanitize ->permission() prototype 2008-07-26 20:53:14 -04:00
acl.h ext4: Fix whitespace checkpatch warnings/errors 2008-09-08 22:25:24 -04:00
balloc.c ext4: fix initialization of UNINIT bitmap blocks 2008-10-10 08:09:18 -04:00
bitmap.c ext4: Fix whitespace checkpatch warnings/errors 2008-09-08 22:25:24 -04:00
dir.c ext4: Avoid printk floods in the face of directory corruption 2008-10-09 11:15:52 -04:00
ext4_extents.h ext4: journal credits reservation fixes for extent file writepage 2008-08-19 22:16:05 -04:00
ext4_i.h ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
ext4_jbd2.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
ext4_jbd2.h ext4: journal credits calulation cleanup and fix for non-extent writepage 2008-08-19 22:16:07 -04:00
ext4_sb.h ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
ext4.h ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
extents.c ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
file.c ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
fsync.c ext4: Fix whitespace checkpatch warnings/errors 2008-09-08 22:25:24 -04:00
group.h ext4: Rename read_block_bitmap() to ext4_read_block_bitmap() 2008-07-11 19:27:31 -04:00
hash.c ext4: Fix whitespace checkpatch warnings/errors 2008-09-08 22:25:24 -04:00
ialloc.c ext4: fix initialization of UNINIT bitmap blocks 2008-10-10 08:09:18 -04:00
inode.c ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
ioctl.c ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
Makefile ext4: Add multi block allocator for ext4 2008-01-29 00:19:52 -05:00
mballoc.c ext4: fix initialization of UNINIT bitmap blocks 2008-10-10 08:09:18 -04:00
mballoc.h ext4: move /proc setup and teardown out of mballoc.c 2008-09-23 09:18:24 -04:00
migrate.c ext4: elevate write count for migrate ioctl 2008-09-13 12:52:26 -04:00
namei.c ext4: Don't use 'struct dentry' for internal lookups 2008-09-22 15:21:01 -04:00
namei.h
resize.c ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
super.c ext4: Remove old legacy block allocator 2008-10-10 09:40:52 -04:00
symlink.c ext4: Fix whitespace checkpatch warnings/errors 2008-09-08 22:25:24 -04:00
xattr_security.c ext4: move headers out of include/linux 2008-04-29 18:13:32 -04:00
xattr_trusted.c ext4: remove double definitions of xattr macros 2008-07-11 19:27:31 -04:00
xattr_user.c ext4: remove double definitions of xattr macros 2008-07-11 19:27:31 -04:00
xattr.c ext4: Cleanup whitespace and other miscellaneous style issues 2008-07-26 16:15:44 -04:00
xattr.h ext4: Fix whitespace checkpatch warnings/errors 2008-09-08 22:25:24 -04:00