linux/fs/ext4
Ross Zwisler 73f34a5e2c 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>
2016-02-27 10:28:52 -08:00
..
acl.c
acl.h
balloc.c ext4: fix scheduling in atomic on group checksum failure 2016-02-11 23:15:12 -05:00
bitmap.c
block_validity.c
crypto_fname.c
crypto_key.c ext4 crypto: add missing locking for keyring_key access 2015-12-10 00:57:58 -05:00
crypto_policy.c
crypto.c ext4 crypto: revalidate dentry after adding or removing the key 2016-02-07 19:35:05 -05:00
dir.c ext4: fix memleak in ext4_readdir() 2016-02-16 00:20:19 -05:00
ext4_crypto.h
ext4_extents.h
ext4_jbd2.c
ext4_jbd2.h
ext4.h ext4 crypto: revalidate dentry after adding or removing the key 2016-02-07 19:35:05 -05:00
extents_status.c
extents_status.h
extents.c ext4: remove unused parameter "newblock" in convert_initialized_extent() 2016-02-12 01:23:00 -05:00
file.c ext4 crypto: move context consistency check to ext4_file_open() 2016-02-08 00:54:26 -05:00
fsync.c
hash.c
ialloc.c ext4: fix scheduling in atomic on group checksum failure 2016-02-11 23:15:12 -05:00
indirect.c
inline.c ext4 crypto: simplify interfaces to directory entry insert functions 2016-01-08 16:00:31 -05:00
inode.c ext2, ext4: only set S_DAX for regular inodes 2016-02-27 10:28:52 -08:00
ioctl.c ext4: online defrag not supported with DAX 2016-02-27 10:28:52 -08:00
Kconfig
Makefile
mballoc.c ext4: add a line break for proc mb_groups display 2016-02-12 00:17:16 -05:00
mballoc.h
migrate.c
mmp.c
move_extent.c ext4: don't read blocks from disk after extents being swapped 2016-02-12 01:20:43 -05:00
namei.c ext4 crypto: move context consistency check to ext4_file_open() 2016-02-08 00:54:26 -05:00
page-io.c fs: use block_device name vsprintf helper 2016-01-06 13:03:18 -05:00
readpage.c Merge branch 'akpm' (patches from Andrew) 2015-11-07 14:32:45 -08:00
resize.c ext4: fix potential integer overflow 2016-02-12 01:15:59 -05:00
super.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
symlink.c Merge branch 'work.symlinks' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-01-11 13:13:23 -08:00
sysfs.c ext4: add "static" to ext4_seq_##name##_fops struct 2015-11-26 15:52:24 -05:00
truncate.h ext4: fix races between page faults and hole punching 2015-12-07 14:28:03 -05:00
xattr_security.c xattr handlers: Simplify list operation 2015-12-13 19:46:12 -05:00
xattr_trusted.c xattr handlers: Simplify list operation 2015-12-13 19:46:12 -05:00
xattr_user.c xattr handlers: Simplify list operation 2015-12-13 19:46:12 -05:00
xattr.c Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-01-12 17:11:47 -08:00
xattr.h