mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 09:34:17 +00:00
ext4: online defrag not supported with DAX
Online defrag operations for ext4 are hard coded to use the page cache. See ext4_ioctl() -> ext4_move_extents() -> move_extent_per_page() When combined with DAX I/O, which circumvents the page cache, this can result in data corruption. This was observed with xfstests ext4/307 and ext4/308. Fix this by only allowing online defrag for non-DAX files. Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com> Reviewed-by: Jan Kara <jack@suse.cz> Cc: Theodore Ts'o <tytso@mit.edu> Cc: Al Viro <viro@ftp.linux.org.uk> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Dave Chinner <david@fromorbit.com> Cc: Jens Axboe <axboe@fb.com> Cc: Matthew Wilcox <matthew.r.wilcox@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
0a6cf9137d
commit
73f34a5e2c
@ -583,6 +583,11 @@ group_extend_out:
|
|||||||
"Online defrag not supported with bigalloc");
|
"Online defrag not supported with bigalloc");
|
||||||
err = -EOPNOTSUPP;
|
err = -EOPNOTSUPP;
|
||||||
goto mext_out;
|
goto mext_out;
|
||||||
|
} else if (IS_DAX(inode)) {
|
||||||
|
ext4_msg(sb, KERN_ERR,
|
||||||
|
"Online defrag not supported with DAX");
|
||||||
|
err = -EOPNOTSUPP;
|
||||||
|
goto mext_out;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = mnt_want_write_file(filp);
|
err = mnt_want_write_file(filp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user