diff options
Diffstat (limited to 'fs/btrfs/tree-log.c')
| -rw-r--r-- | fs/btrfs/tree-log.c | 19 | 
1 files changed, 7 insertions, 12 deletions
| diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 2186e87fb61b..69e11557fd13 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -2605,14 +2605,14 @@ static int replay_one_buffer(struct btrfs_root *log, struct extent_buffer *eb,  /*   * Correctly adjust the reserved bytes occupied by a log tree extent buffer   */ -static void unaccount_log_buffer(struct btrfs_fs_info *fs_info, u64 start) +static int unaccount_log_buffer(struct btrfs_fs_info *fs_info, u64 start)  {  	struct btrfs_block_group *cache;  	cache = btrfs_lookup_block_group(fs_info, start);  	if (!cache) {  		btrfs_err(fs_info, "unable to find block group for %llu", start); -		return; +		return -ENOENT;  	}  	spin_lock(&cache->space_info->lock); @@ -2623,27 +2623,22 @@ static void unaccount_log_buffer(struct btrfs_fs_info *fs_info, u64 start)  	spin_unlock(&cache->space_info->lock);  	btrfs_put_block_group(cache); + +	return 0;  }  static int clean_log_buffer(struct btrfs_trans_handle *trans,  			    struct extent_buffer *eb)  { -	int ret; -  	btrfs_tree_lock(eb);  	btrfs_clear_buffer_dirty(trans, eb);  	wait_on_extent_buffer_writeback(eb);  	btrfs_tree_unlock(eb); -	if (trans) { -		ret = btrfs_pin_reserved_extent(trans, eb); -		if (ret) -			return ret; -	} else { -		unaccount_log_buffer(eb->fs_info, eb->start); -	} +	if (trans) +		return btrfs_pin_reserved_extent(trans, eb); -	return 0; +	return unaccount_log_buffer(eb->fs_info, eb->start);  }  static noinline int walk_down_log_tree(struct btrfs_trans_handle *trans, | 
