|
@@ -1957,7 +1957,8 @@ static int wait_log_commit(struct btrfs_trans_handle *trans,
|
|
|
|
|
|
finish_wait(&root->log_commit_wait[index], &wait);
|
|
|
mutex_lock(&root->log_mutex);
|
|
|
- } while (root->log_transid < transid + 2 &&
|
|
|
+ } while (root->fs_info->last_trans_log_full_commit !=
|
|
|
+ trans->transid && root->log_transid < transid + 2 &&
|
|
|
atomic_read(&root->log_commit[index]));
|
|
|
return 0;
|
|
|
}
|
|
@@ -1966,7 +1967,8 @@ static int wait_for_writer(struct btrfs_trans_handle *trans,
|
|
|
struct btrfs_root *root)
|
|
|
{
|
|
|
DEFINE_WAIT(wait);
|
|
|
- while (atomic_read(&root->log_writers)) {
|
|
|
+ while (root->fs_info->last_trans_log_full_commit !=
|
|
|
+ trans->transid && atomic_read(&root->log_writers)) {
|
|
|
prepare_to_wait(&root->log_writer_wait,
|
|
|
&wait, TASK_UNINTERRUPTIBLE);
|
|
|
mutex_unlock(&root->log_mutex);
|