| From 41ef18ac8ba7c99c81d0dc9666f95ffa3fe10f5c Mon Sep 17 00:00:00 2001 |
| From: Dmitry Monakhov <dmonakhov@openvz.org> |
| Date: Wed, 26 Sep 2012 12:32:54 -0400 |
| Subject: [PATCH] ext4: online defrag is not supported for journaled files |
| |
| 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 | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c |
| index deff4a5085e8..6764168776bf 100644 |
| --- a/fs/ext4/move_extent.c |
| +++ b/fs/ext4/move_extent.c |
| @@ -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) |
| -- |
| 1.8.5.2 |
| |