summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fusionio.com>2013-02-28 18:23:38 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-03-14 18:26:11 (GMT)
commit0a8c4b4e2101b6fb45f4510fed204384d468826a (patch)
tree1165e78529e9aad74c3faac521ec163aa173f499
parent9cf1259793a09ae8d01631167a7cdb8882665e1e (diff)
downloadlinux-fsl-qoriq-0a8c4b4e2101b6fb45f4510fed204384d468826a.tar.xz
Btrfs: copy everything if we've created an inline extent
commit bdc20e67e82cfc4901d3a5a0d79104b0e2296d83 upstream. I noticed while looking into a tree logging bug that we aren't logging inline extents properly. Since this requires copying and it shouldn't happen too often just force us to copy everything for the inode into the tree log when we have an inline extent. With this patch we have valid data after a crash when we write an inline extent. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/btrfs/inode.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index cc93b23..8a338c2 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -265,6 +265,7 @@ static noinline int cow_file_range_inline(struct btrfs_trans_handle *trans,
return 1;
}
+ set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, &BTRFS_I(inode)->runtime_flags);
btrfs_delalloc_release_metadata(inode, end + 1 - start);
btrfs_drop_extent_cache(inode, start, aligned_end - 1, 0);
return 0;