diff options
| -rw-r--r-- | fs/btrfs/transaction.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 2d654c1c794d..43054285f638 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
| @@ -147,18 +147,13 @@ static void wait_current_trans(struct btrfs_root *root) | |||
| 147 | while (1) { | 147 | while (1) { |
| 148 | prepare_to_wait(&root->fs_info->transaction_wait, &wait, | 148 | prepare_to_wait(&root->fs_info->transaction_wait, &wait, |
| 149 | TASK_UNINTERRUPTIBLE); | 149 | TASK_UNINTERRUPTIBLE); |
| 150 | if (cur_trans->blocked) { | 150 | if (!cur_trans->blocked) |
| 151 | mutex_unlock(&root->fs_info->trans_mutex); | ||
| 152 | schedule(); | ||
| 153 | mutex_lock(&root->fs_info->trans_mutex); | ||
| 154 | finish_wait(&root->fs_info->transaction_wait, | ||
| 155 | &wait); | ||
| 156 | } else { | ||
| 157 | finish_wait(&root->fs_info->transaction_wait, | ||
| 158 | &wait); | ||
| 159 | break; | 151 | break; |
| 160 | } | 152 | mutex_unlock(&root->fs_info->trans_mutex); |
| 153 | schedule(); | ||
| 154 | mutex_lock(&root->fs_info->trans_mutex); | ||
| 161 | } | 155 | } |
| 156 | finish_wait(&root->fs_info->transaction_wait, &wait); | ||
| 162 | put_transaction(cur_trans); | 157 | put_transaction(cur_trans); |
| 163 | } | 158 | } |
| 164 | } | 159 | } |
