diff options
author | Theodore Ts'o <tytso@mit.edu> | 2009-03-12 12:18:34 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2009-03-12 12:18:34 -0400 |
commit | a4912123b688e057084e6557cef8924f7ae5bbde (patch) | |
tree | 34e88705d6617b52caa0f87692b480119a9c9e2e /fs/ext4/ext4_i.h | |
parent | 2dc6b0d48ca0599837df21b14bb8393d0804af57 (diff) |
ext4: New inode/block allocation algorithms for flex_bg filesystems
The find_group_flex() inode allocator is now only used if the
filesystem is mounted using the "oldalloc" mount option. It is
replaced with the original Orlov allocator that has been updated for
flex_bg filesystems (it should behave the same way if flex_bg is
disabled). The inode allocator now functions by taking into account
each flex_bg group, instead of each block group, when deciding whether
or not it's time to allocate a new directory into a fresh flex_bg.
The block allocator has also been changed so that the first block
group in each flex_bg is preferred for use for storing directory
blocks. This keeps directory blocks close together, which is good for
speeding up e2fsck since large directories are more likely to look
like this:
debugfs: stat /home/tytso/Maildir/cur
Inode: 1844562 Type: directory Mode: 0700 Flags: 0x81000
Generation: 1132745781 Version: 0x00000000:0000ad71
User: 15806 Group: 15806 Size: 1060864
File ACL: 0 Directory ACL: 0
Links: 2 Blockcount: 2072
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x499c0ff4:164961f4 -- Wed Feb 18 08:41:08 2009
atime: 0x499c0ff4:00000000 -- Wed Feb 18 08:41:08 2009
mtime: 0x49957f51:00000000 -- Fri Feb 13 09:10:25 2009
crtime: 0x499c0f57:00d51440 -- Wed Feb 18 08:38:31 2009
Size of extra inode fields: 28
BLOCKS:
(0):7348651, (1-258):7348654-7348911
TOTAL: 259
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4_i.h')
-rw-r--r-- | fs/ext4/ext4_i.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ext4/ext4_i.h b/fs/ext4/ext4_i.h index 2d516c0a22af..4ce2187123aa 100644 --- a/fs/ext4/ext4_i.h +++ b/fs/ext4/ext4_i.h | |||
@@ -122,6 +122,9 @@ struct ext4_inode_info { | |||
122 | struct list_head i_prealloc_list; | 122 | struct list_head i_prealloc_list; |
123 | spinlock_t i_prealloc_lock; | 123 | spinlock_t i_prealloc_lock; |
124 | 124 | ||
125 | /* ialloc */ | ||
126 | ext4_group_t i_last_alloc_group; | ||
127 | |||
125 | /* allocation reservation info for delalloc */ | 128 | /* allocation reservation info for delalloc */ |
126 | unsigned int i_reserved_data_blocks; | 129 | unsigned int i_reserved_data_blocks; |
127 | unsigned int i_reserved_meta_blocks; | 130 | unsigned int i_reserved_meta_blocks; |