diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
| -rw-r--r-- | fs/btrfs/extent-tree.c | 15 | 
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 7208ecef7088..2f4328511ac8 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -3502,13 +3502,6 @@ again:  		goto again;  	} -	/* We've already setup this transaction, go ahead and exit */ -	if (block_group->cache_generation == trans->transid && -	    i_size_read(inode)) { -		dcs = BTRFS_DC_SETUP; -		goto out_put; -	} -  	/*  	 * We want to set the generation to 0, that way if anything goes wrong  	 * from here on out we know not to trust this cache when we load up next @@ -3532,6 +3525,13 @@ again:  	}  	WARN_ON(ret); +	/* We've already setup this transaction, go ahead and exit */ +	if (block_group->cache_generation == trans->transid && +	    i_size_read(inode)) { +		dcs = BTRFS_DC_SETUP; +		goto out_put; +	} +  	if (i_size_read(inode) > 0) {  		ret = btrfs_check_trunc_cache_free_space(fs_info,  					&fs_info->global_block_rsv); @@ -9206,6 +9206,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root,  	ret = btrfs_del_root(trans, fs_info, &root->root_key);  	if (ret) {  		btrfs_abort_transaction(trans, ret); +		err = ret;  		goto out_end_trans;  	}  |