ext4: minor defrag code improvements
PATCH v2 1/1 ext4: minor defrag code improvements
Modify the error returns for two file types that can't be defragged to more clearly communicate those restrictions to a caller. When the defrag code is applied to swap files, return -ETXTBSY, and when applied to quota files, return -EOPNOTSUPP. Move an extent tree search whose results are only occasionally required to the site always requiring them for improved efficiency. Address a few typos.
--- fs/ext4/move_extent.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
fs/ext4/move_extent.c +7 -9
@@ -472,19 +472,17 @@ mext_check_arguments(struct inode *orig_inode,if (IS_IMMUTABLE (donor_inode) ||IS_APPEND (donor_inode))return -EPERM ; -/* Ext4 move extent does not support swapfile */ +/* Ext4 move extent does not support swap files */ if (IS_SWAPFILE (orig_inode) ||IS_SWAPFILE (donor_inode)) { -ext4_debug ("ext4 move extent: The argument files should " -"not be swapfile [ino:orig %lu, donor %lu]\n" , +ext4_debug ("ext4 move extent: The argument files should not be swap files [ino:orig %lu, donor %lu]\n" , orig_inode->i_ino, donor_inode->i_ino); -return -EBUSY ; +return -ETXTBSY ; }if (ext4_is_quota_file (orig_inode) &&ext4_is_quota_file (donor_inode)) { -ext4_debug ("ext4 move extent: The argument files should " -"not be quota files [ino:orig %lu, donor %lu]\n" , +ext4_debug ("ext4 move extent: The argument files should not be quota files [ino:orig %lu, donor %lu]\n" , orig_inode->i_ino, donor_inode->i_ino); -return -EBUSY ; +return -EOPNOTSUPP ; }/* Ext4 move extent supports only extent based file */
@@ -631,11 +629,11 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,if (ret) goto out; ex = path[path->p_depth].p_ext; - next_blk =ext4_ext_next_allocated_block (path); cur_blk =le32_to_cpu (ex->ee_block); cur_len =ext4_ext_get_actual_len (ex);/* Check hole before the start pos */ if (cur_blk + cur_len -1 < o_start) { + next_blk =ext4_ext_next_allocated_block (path);if (next_blk ==EXT_MAX_BLOCKS ) { ret = -ENODATA ; goto out;
@@ -663,7 +661,7 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk, donor_page_index = d_start >> (PAGE_SHIFT - donor_inode->i_blkbits); offset_in_page = o_start % blocks_per_page; -if (cur_len > blocks_per_page- offset_in_page) +if (cur_len > blocks_per_page - offset_in_page) cur_len = blocks_per_page - offset_in_page;/* * Up semaphore to avoid following problems:
Signature · 1 line
2.30.2
Quoted 8 lines · Eric Whitney
Modify the error returns for two file types that can't be defragged to more clearly communicate those restrictions to a caller. When the defrag code is applied to swap files, return
-ETXTBSY, and when applied to quota files, return-EOPNOTSUPP. Move an extent tree search whose results are only occasionally required to the site always requiring them for improved efficiency. Address a few typos.[...]
Applied, thanks!
[1/1] ext4: minor defrag code improvements
commit: d412df530f77d0f61c41b83f925997452fc3944c
Best regards,
Signature · 1 line
Theodore Ts'o <[email protected]>