Re: [PATCH] Btrfs: make sure NODATACOW also gets NODATASUM set

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Feb 21, 2013 at 03:34:15PM -0500, Josef Bacik wrote:
> 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.  This patch fixes up those two cases and now we should
> uniformly have NODATACOW and NODATASUM set always.  Thanks,

Reviewed-by: Liu Bo <bo.li.liu@xxxxxxxxxx>

> 
> Signed-off-by: Josef Bacik <jbacik@xxxxxxxxxxxx>
> ---
>  fs/btrfs/inode.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 40d49da..5d7ceb5 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);
> @@ -8069,7 +8070,8 @@ static void fixup_inode_flags(struct inode *dir, struct inode *inode)
>  	struct btrfs_inode *b_inode = BTRFS_I(inode);
>  
>  	if (b_dir->flags & BTRFS_INODE_NODATACOW)
> -		b_inode->flags |= BTRFS_INODE_NODATACOW;
> +		b_inode->flags |= BTRFS_INODE_NODATACOW |
> +			BTRFS_INODE_NODATASUM;
>  	else
>  		b_inode->flags &= ~BTRFS_INODE_NODATACOW;
>  
> -- 
> 1.7.7.6
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux