Re: [PATCH v4 16/23] ext4: disable online defrag when inode using iomap buffered I/O path
From: Ojaswin Mujoo
Date: Wed May 27 2026 - 09:24:37 EST
On Mon, May 11, 2026 at 03:23:36PM +0800, Zhang Yi wrote:
> From: Zhang Yi <yi.zhang@xxxxxxxxxx>
>
> Online defragmentation does not currently support inodes using the
> iomap buffered I/O path. The existing implementation relies on
> buffer_head for sub-folio block management and data=ordered mode for
> data consistency, both of which are incompatible with the iomap path.
>
> Signed-off-by: Zhang Yi <yi.zhang@xxxxxxxxxx>
Looks good, feel free to add:
Reviewed-by: Ojaswin Mujoo <ojaswin@xxxxxxxxxxxxx>
Regards,
Ojaswin
> ---
> fs/ext4/move_extent.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
> index 3329b7ad5dbd..f707a1096544 100644
> --- a/fs/ext4/move_extent.c
> +++ b/fs/ext4/move_extent.c
> @@ -476,6 +476,17 @@ static int mext_check_validity(struct inode *orig_inode,
> return -EOPNOTSUPP;
> }
>
> + /*
> + * TODO: support online defrag for inodes that using the buffered
> + * I/O iomap path.
> + */
> + if (ext4_inode_buffered_iomap(orig_inode) ||
> + ext4_inode_buffered_iomap(donor_inode)) {
> + ext4_msg(sb, KERN_ERR,
> + "Online defrag not supported for inode with iomap buffered IO path");
> + return -EOPNOTSUPP;
> + }
> +
> if (donor_inode->i_mode & (S_ISUID|S_ISGID)) {
> ext4_debug("ext4 move extent: suid or sgid is set to donor file [ino:orig %llu, donor %llu]\n",
> orig_inode->i_ino, donor_inode->i_ino);
> --
> 2.52.0
>