On Tue, Mar 16, 2021 at 04:53:46PM +0000, fdman...@kernel.org wrote: > From: Filipe Manana <fdman...@suse.com> > > During the mount procedure we are calling btrfs_orphan_cleanup() against > the root tree, which will find all orphans items in this tree. When an > orphan item corresponds to a deleted subvolume/snapshot (instead of an > inode space cache), it must not delete the orphan item, because that will > cause btrfs_find_orphan_roots() to not find the orphan item and therefore > not add the corresponding subvolume root to the list of dead roots, which > results in the subvolume's tree never being deleted by the cleanup thread. > > The same applies to the remount from RO to RW path. > > Fix this by making btrfs_find_orphan_roots() run before calling > btrfs_orphan_cleanup() against the root tree. > > A test case for fstests will follow soon. > > Reported-by: Robbie Ko <robbi...@synology.com> > Link: > https://lore.kernel.org/linux-btrfs/b19f4310-35e0-606e-1eea-2dd84d28c...@synology.com/ > Fixes: 638331fa56caea ("btrfs: fix transaction leak and crash after cleaning > up orphans on RO mount") > Signed-off-by: Filipe Manana <fdman...@suse.com>
Added to misc-next, thanks.