From: Josef Bacik Date: Thu, 21 Feb 2013 20:28:28 +0000 (-0500) Subject: Btrfs: make sure NODATACOW also gets NODATASUM set X-Git-Tag: MMI-PSA29.97-13-9~14657^2~49 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=f2bdf9a8f79052e9577936cbe5696c0e232aa0e3;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git Btrfs: make sure NODATACOW also gets NODATASUM set A user reported hitting the BUG_ON() in btrfs_finished_ordered_io() where we had csums on a NOCOW extent. This can happen if we have NODATACOW set but not NODATASUM set, which can happen in two cases, either we mount with -o nodatacow and then write into preallocated space, or chattr +C a directory and move a file into that directory. Liu has fixed the move case in a different place, but this fixes the mount -o nodatacow case. Thanks, Signed-off-by: Josef Bacik --- diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 40d49da5e846..14c82cdbb696 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -5574,7 +5574,8 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans, if (btrfs_test_opt(root, NODATASUM)) BTRFS_I(inode)->flags |= BTRFS_INODE_NODATASUM; if (btrfs_test_opt(root, NODATACOW)) - BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW; + BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW | + BTRFS_INODE_NODATASUM; } insert_inode_hash(inode);