Skip to content

Commit

Permalink
Btrfs: catch errors from btrfs_sync_log
Browse files Browse the repository at this point in the history
btrfs_sync_log returns -EAGAIN when we need full transaction commits
instead of small log commits, but sometimes we were dropping the return
value.

In practice, we check for this a few different ways, but this is still a
bug that can leave off full log commits when we really need them.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Chris Mason committed Jan 31, 2011
1 parent b1953bc commit b31eabd
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion fs/btrfs/tree-log.c
Original file line number Diff line number Diff line change
Expand Up @@ -2051,6 +2051,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
wait_log_commit(trans, log_root_tree,
log_root_tree->log_transid);
mutex_unlock(&log_root_tree->log_mutex);
ret = 0;
goto out;
}
atomic_set(&log_root_tree->log_commit[index2], 1);
Expand Down Expand Up @@ -2115,7 +2116,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
smp_mb();
if (waitqueue_active(&root->log_commit_wait[index1]))
wake_up(&root->log_commit_wait[index1]);
return 0;
return ret;
}

static void free_log_tree(struct btrfs_trans_handle *trans,
Expand Down

0 comments on commit b31eabd

Please sign in to comment.