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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Oct 2012 20:38:49 +0000 (05:38 +0900)
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ext4/move_extent.c

index df5cde5..e2016f3 100644 (file)
@@ -1142,7 +1142,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 */
        mext_inode_double_lock(orig_inode, donor_inode);