diff options
author | Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> | 2008-07-11 19:27:31 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2008-07-11 19:27:31 -0400 |
commit | 7061eba75ceb0835ba61e7cbd757a6f9c1e4af92 (patch) | |
tree | 9c70df3078c0543573a9f38bb60c6b0f54608c7a /fs/ext4/ext4.h | |
parent | 6afd670713c9e7d5c5550e379dfedca8ffab4c90 (diff) |
ext4: Use inode preallocation with -o noextents
When mballoc is enabled, block allocation for old block-based
files are allocated using mballoc allocator instead of old
block-based allocator. The old ext3 block reservation is turned
off when mballoc is turned on.
However, the in-core preallocation is not enabled for block-based/
non-extent based file block allocation. This result in performance
regression, as now we don't have "reservation" ore in-core preallocation
to prevent interleaved fragmentation in multiple writes workload.
This patch fix this by enable per inode in-core preallocation
for non extent files when mballoc is used.
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4.h')
-rw-r--r-- | fs/ext4/ext4.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 0bfeae18f1a2..d44a7fb6a7b1 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h | |||
@@ -970,10 +970,13 @@ extern ext4_grpblk_t ext4_block_group_offset(struct super_block *sb, | |||
970 | extern int ext4_bg_has_super(struct super_block *sb, ext4_group_t group); | 970 | extern int ext4_bg_has_super(struct super_block *sb, ext4_group_t group); |
971 | extern unsigned long ext4_bg_num_gdb(struct super_block *sb, | 971 | extern unsigned long ext4_bg_num_gdb(struct super_block *sb, |
972 | ext4_group_t group); | 972 | ext4_group_t group); |
973 | extern ext4_fsblk_t ext4_new_block (handle_t *handle, struct inode *inode, | 973 | extern ext4_fsblk_t ext4_new_meta_block(handle_t *handle, struct inode *inode, |
974 | ext4_fsblk_t goal, int *errp); | 974 | ext4_fsblk_t goal, int *errp); |
975 | extern ext4_fsblk_t ext4_new_blocks (handle_t *handle, struct inode *inode, | 975 | extern ext4_fsblk_t ext4_new_meta_blocks(handle_t *handle, struct inode *inode, |
976 | ext4_fsblk_t goal, unsigned long *count, int *errp); | 976 | ext4_fsblk_t goal, unsigned long *count, int *errp); |
977 | extern ext4_fsblk_t ext4_new_blocks(handle_t *handle, struct inode *inode, | ||
978 | ext4_lblk_t iblock, ext4_fsblk_t goal, | ||
979 | unsigned long *count, int *errp); | ||
977 | extern ext4_fsblk_t ext4_new_blocks_old(handle_t *handle, struct inode *inode, | 980 | extern ext4_fsblk_t ext4_new_blocks_old(handle_t *handle, struct inode *inode, |
978 | ext4_fsblk_t goal, unsigned long *count, int *errp); | 981 | ext4_fsblk_t goal, unsigned long *count, int *errp); |
979 | extern void ext4_free_blocks (handle_t *handle, struct inode *inode, | 982 | extern void ext4_free_blocks (handle_t *handle, struct inode *inode, |