|
@@ -571,12 +571,16 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
|
|
orig_inode->i_ino, donor_inode->i_ino);
|
|
orig_inode->i_ino, donor_inode->i_ino);
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
- /* TODO: This is non obvious task to swap blocks for inodes with full
|
|
|
|
- jornaling enabled */
|
|
|
|
|
|
+
|
|
|
|
+ /* TODO: it's not obvious how to swap blocks for inodes with full
|
|
|
|
+ journaling enabled */
|
|
if (ext4_should_journal_data(orig_inode) ||
|
|
if (ext4_should_journal_data(orig_inode) ||
|
|
ext4_should_journal_data(donor_inode)) {
|
|
ext4_should_journal_data(donor_inode)) {
|
|
- return -EINVAL;
|
|
|
|
|
|
+ ext4_msg(orig_inode->i_sb, KERN_ERR,
|
|
|
|
+ "Online defrag not supported with data journaling");
|
|
|
|
+ return -EOPNOTSUPP;
|
|
}
|
|
}
|
|
|
|
+
|
|
/* Protect orig and donor inodes against a truncate */
|
|
/* Protect orig and donor inodes against a truncate */
|
|
lock_two_nondirectories(orig_inode, donor_inode);
|
|
lock_two_nondirectories(orig_inode, donor_inode);
|
|
|
|
|