ext4: invalidate extent status tree during extent migration
authorDmitry Monakhov <dmonakhov@openvz.org>
Mon, 4 Mar 2013 05:50:47 +0000 (00:50 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 4 Mar 2013 05:50:47 +0000 (00:50 -0500)
mext_replace_branches() will change inode's extents layout so
we have to drop corresponding cache.

TESTCASE:  301'th xfstest was not yet accepted to official xfstest's branch
and can be found here: https://github.com/dmonakhov/xfstests/commit/7b7efeee30a41109201e2040034e71db9b66ddc0

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
fs/ext4/move_extent.c

index d78c33eed7e54a1d75dff016bbf1ddc49e7c1e0b..c1f15b203e98d3e6a51decb4d49ea1fcee8e1ae1 100644 (file)
@@ -666,6 +666,14 @@ mext_replace_branches(handle_t *handle, struct inode *orig_inode,
        int replaced_count = 0;
        int dext_alen;
 
+       *err = ext4_es_remove_extent(orig_inode, from, count);
+       if (*err)
+               goto out;
+
+       *err = ext4_es_remove_extent(donor_inode, from, count);
+       if (*err)
+               goto out;
+
        /* Get the original extent for the block "orig_off" */
        *err = get_ext_path(orig_inode, orig_off, &orig_path);
        if (*err)