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>
This commit is contained in:
committed by
Theodore Ts'o
parent
6afd670713
commit
7061eba75c
@@ -810,7 +810,7 @@ inserted:
|
||||
/* We need to allocate a new block */
|
||||
ext4_fsblk_t goal = ext4_group_first_block_no(sb,
|
||||
EXT4_I(inode)->i_block_group);
|
||||
ext4_fsblk_t block = ext4_new_block(handle, inode,
|
||||
ext4_fsblk_t block = ext4_new_meta_block(handle, inode,
|
||||
goal, &error);
|
||||
if (error)
|
||||
goto cleanup;
|
||||
|
Reference in New Issue
Block a user