diff options
author | Chris Mason <clm@fb.com> | 2016-09-06 05:37:40 -0700 |
---|---|---|
committer | Sasha Levin <alexander.levin@verizon.com> | 2016-10-05 22:40:20 -0400 |
commit | 52e5087ce97a09d5baba7cfe85def389e892d73f (patch) | |
tree | a6f5059d7d3096615f269d368cbdd3b1211aba59 /fs | |
parent | a55325e134ecca559da21385d64fa9eef3e6cefe (diff) | |
download | lwn-52e5087ce97a09d5baba7cfe85def389e892d73f.tar.gz lwn-52e5087ce97a09d5baba7cfe85def389e892d73f.zip |
Btrfs: remove root_log_ctx from ctx list before btrfs_sync_log returns
[ Upstream commit cbd60aa7cd17d81a434234268c55192862147439 ]
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@fb.com>
Fixes: d1433debe7f4346cf9fc0dafc71c3137d2a97bc4
cc: stable@vger.kernel.org # 3.15+
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/tree-log.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 0b976fa1dae6..ccad76a482ca 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -2605,6 +2605,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans, 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; |