]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: online defrag is not supported for journaled files
authorDmitry Monakhov <dmonakhov@openvz.org>
Wed, 26 Sep 2012 16:32:54 +0000 (12:32 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Mon, 10 Feb 2014 21:11:29 +0000 (16:11 -0500)
commit f066055a3449f0e5b0ae4f3ceab4445bead47638 upstream.

Proper block swap for inodes with full journaling enabled is
truly non obvious task. In order to be on a safe side let's
explicitly disable it for now.

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
fs/ext4/move_extent.c

index deff4a5085e87cf139952a1cd77c37e4b06b5ae5..6764168776bf48f3b03a608b56f2a20db24f565d 100644 (file)
@@ -1209,7 +1209,12 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp,
                        orig_inode->i_ino, donor_inode->i_ino);
                return -EINVAL;
        }
-
+       /* TODO: This is non obvious task to swap blocks for inodes with full
+          jornaling enabled */
+       if (ext4_should_journal_data(orig_inode) ||
+           ext4_should_journal_data(donor_inode)) {
+               return -EINVAL;
+       }
        /* Protect orig and donor inodes against a truncate */
        ret1 = mext_inode_double_lock(orig_inode, donor_inode);
        if (ret1 < 0)