diff options
author | David Sterba <dsterba@suse.cz> | 2012-04-02 18:31:37 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2012-04-18 19:22:14 +0200 |
commit | 871383be592ba7e819d27556591e315a0df38cee (patch) | |
tree | 0f0c2bc7ecf2d70a5ffa842001d70b5b0f8958d0 /fs/btrfs | |
parent | 8d082fb727ac11930ea20bf1612e334ea7c2b697 (diff) | |
download | linux-stable-871383be592ba7e819d27556591e315a0df38cee.tar.gz linux-stable-871383be592ba7e819d27556591e315a0df38cee.tar.bz2 linux-stable-871383be592ba7e819d27556591e315a0df38cee.zip |
btrfs: add missing unlocks to transaction abort paths
Added in commit 49b25e0540904be0bf558b84475c69d72e4de66e
("btrfs: enhance transaction abort infrastructure")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/transaction.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 11b77a59db62..36422254ef67 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -73,8 +73,10 @@ loop: cur_trans = root->fs_info->running_transaction; if (cur_trans) { - if (cur_trans->aborted) + if (cur_trans->aborted) { + spin_unlock(&root->fs_info->trans_lock); return cur_trans->aborted; + } atomic_inc(&cur_trans->use_count); atomic_inc(&cur_trans->num_writers); cur_trans->num_joined++; @@ -1400,6 +1402,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans, ret = commit_fs_roots(trans, root); if (ret) { mutex_unlock(&root->fs_info->tree_log_mutex); + mutex_unlock(&root->fs_info->reloc_mutex); goto cleanup_transaction; } @@ -1411,6 +1414,7 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans, ret = commit_cowonly_roots(trans, root); if (ret) { mutex_unlock(&root->fs_info->tree_log_mutex); + mutex_unlock(&root->fs_info->reloc_mutex); goto cleanup_transaction; } |