Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b263c2c8 authored by Chris Mason's avatar Chris Mason
Browse files

Btrfs: fix extent_buffer leak during tree log replay



During tree log replay, we read in the tree log roots,
process them and then free them.  A recent change
takes an extra reference on the root node of the tree
when the root is read in, and stores that reference
in root->commit_root.

This reference was not being freed, leaving us with
one buffer pinned in ram for each subvol with
a tree log root after a crash.

Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 0b4dcea5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3019,6 +3019,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
		key.offset = found_key.offset - 1;
		wc.replay_dest->log_root = NULL;
		free_extent_buffer(log->node);
		free_extent_buffer(log->commit_root);
		kfree(log);

		if (found_key.offset == 0)