aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Whitney <enwlinux@gmail.com>2016-08-29 15:45:11 -0400
committerMister Oyster <oysterized@gmail.com>2017-12-31 02:09:48 +0100
commit4db756ba8da17cdda9a794b8a22bf569514390c7 (patch)
tree0d2bfa97d80c265066c96fd15dc5257277887570
parent87f4b4b9188ae09fd004ab5bcda8b8d9467c66d8 (diff)
ext4: enforce online defrag restriction for encrypted files
Online defragging of encrypted files is not currently implemented. However, the move extent ioctl can still return successfully when called. For example, this occurs when xfstest ext4/020 is run on an encrypted file system, resulting in a corrupted test file and a corresponding test failure. Until the proper functionality is implemented, fail the move extent ioctl if either the original or donor file is encrypted. Cc: stable@vger.kernel.org Signed-off-by: Eric Whitney <enwlinux@gmail.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Joe Maples <joe@frap129.org>
-rw-r--r--fs/ext4/move_extent.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
index 18143c55b..fa00a0e3f 100644
--- a/fs/ext4/move_extent.c
+++ b/fs/ext4/move_extent.c
@@ -596,6 +596,14 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
ext4_should_journal_data(donor_inode)) {
return -EINVAL;
}
+
+ if (ext4_encrypted_inode(orig_inode) ||
+ ext4_encrypted_inode(donor_inode)) {
+ ext4_msg(orig_inode->i_sb, KERN_ERR,
+ "Online defrag not supported for encrypted files");
+ return -EOPNOTSUPP;
+ }
+
/* Protect orig and donor inodes against a truncate */
lock_two_nondirectories(orig_inode, donor_inode);