[PATCH] ext3 block reservations
commit382c958e6addaaccfd1b046b7ba00ee8e2cf92f9
authorMingming Cao <cmm@us.ibm.com>
Fri, 29 Oct 2004 06:23:35 +0000 (28 23:23 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 29 Oct 2004 06:23:35 +0000 (28 23:23 -0700)
tree99e02d39294372e405a928ede2802d201973a05d
parent9a995d4405591f5f987813728ababeef608bc2de
[PATCH] ext3 block reservations

rbtree implementation and other changes From: Stephen Tweedie <sct@redhat.com>
contributions From: Badari Pulavarty <pbadari@us.ibm.com> and probably me.

This is the ext3 block reservation patch.  It improves the layout of ext3
files by establishing, for each inode, reserved areas of the disk in which
only that file can allocate blocks.  Those reserved areas are managed in an
rbtree, via the in-core inode.

It's a bit like ext2 preallocation only stronger in that it can span
already-allocated blocks, including the per-blockgroup inode tables and
bitmaps.

The patch fixes ext3's worst performance problem: disastrous layout when
multiple files are being concurrently grown.

It increases the size of the inode by rather a lot.  A todo item is to
dynamically allocate the `struct reserve_window_node', so we don't need to
carry this storage for inodes which aren't opened for writing.

The feature is enabled by mounting with the "reservation" mount option.
Reservations default to "off".

Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/ext3/balloc.c
fs/ext3/file.c
fs/ext3/ialloc.c
fs/ext3/inode.c
fs/ext3/ioctl.c
fs/ext3/super.c
include/linux/ext3_fs.h
include/linux/ext3_fs_i.h
include/linux/ext3_fs_sb.h