diff options
Diffstat (limited to 'fs/btrfs/transaction.c')
| -rw-r--r-- | fs/btrfs/transaction.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 287a6728b1a..04b77e3ceb7 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -327,7 +327,8 @@ again:  	if (num_bytes) {  		trace_btrfs_space_reservation(root->fs_info, "transaction", -					      (u64)h, num_bytes, 1); +					      (u64)(unsigned long)h, +					      num_bytes, 1);  		h->block_rsv = &root->fs_info->trans_block_rsv;  		h->bytes_reserved = num_bytes;  	} @@ -915,7 +916,11 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,  				dentry->d_name.name, dentry->d_name.len,  				parent_inode, &key,  				BTRFS_FT_DIR, index); -	BUG_ON(ret); +	if (ret) { +		pending->error = -EEXIST; +		dput(parent); +		goto fail; +	}  	btrfs_i_size_write(parent_inode, parent_inode->i_size +  					 dentry->d_name.len * 2); @@ -993,12 +998,9 @@ static noinline int create_pending_snapshots(struct btrfs_trans_handle *trans,  {  	struct btrfs_pending_snapshot *pending;  	struct list_head *head = &trans->transaction->pending_snapshots; -	int ret; -	list_for_each_entry(pending, head, list) { -		ret = create_pending_snapshot(trans, fs_info, pending); -		BUG_ON(ret); -	} +	list_for_each_entry(pending, head, list) +		create_pending_snapshot(trans, fs_info, pending);  	return 0;  }  |