[PATCH 3.16 254/346] Btrfs: remove root_log_ctx from ctx list before btrfs_sync_log returns

From: Ben Hutchings
Date: Sun Nov 13 2016 - 22:18:47 EST


3.16.39-rc1 review patch. If anyone has any objections, please let me know.

------------------

From: Chris Mason <clm@xxxxxx>

commit cbd60aa7cd17d81a434234268c55192862147439 upstream.

We use a btrfs_log_ctx structure to pass information into the
tree log commit, and get error values out. It gets added to a per
log-transaction list which we walk when things go bad.

Commit d1433debe added an optimization to skip waiting for the log
commit, but didn't take root_log_ctx out of the list. This
patch makes sure we remove things before exiting.

Signed-off-by: Chris Mason <clm@xxxxxx>
Fixes: d1433debe7f4346cf9fc0dafc71c3137d2a97bc4
Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx>
---
fs/btrfs/tree-log.c | 1 +
1 file changed, 1 insertion(+)

--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -2601,6 +2601,7 @@ int btrfs_sync_log(struct btrfs_trans_ha

if (log_root_tree->log_transid_committed >= root_log_ctx.log_transid) {
blk_finish_plug(&plug);
+ list_del_init(&root_log_ctx.list);
mutex_unlock(&log_root_tree->log_mutex);
ret = root_log_ctx.log_ret;
goto out;