On Wed, Oct 31, 2018 at 03:41:47PM +0800, Lu Fengqi wrote: > On Tue, Oct 30, 2018 at 05:14:42PM -0700, Omar Sandoval wrote: > >From: Omar Sandoval <osan...@fb.com> > > > >There's a race between close_ctree() and cleaner_kthread(). > >close_ctree() sets btrfs_fs_closing(), and the cleaner stops when it > >sees it set, but this is racy; the cleaner might have already checked > >the bit and could be cleaning stuff. In particular, if it deletes unused > >block groups, it will create delayed iputs for the free space cache > >inodes. As of "btrfs: don't run delayed_iputs in commit", we're no > >longer running delayed iputs after a commit. Therefore, if the cleaner > >creates more delayed iputs after delayed iputs are run in > >btrfs_commit_super(), we will leak inodes on unmount and get a busy > > Since the assert added via commit e187831e1875 ("btrfs: assert on non-empty > delayed iputs") wasn't triggered, it doesn't seem to be the cause of inode > leak.
This was in our production build without CONFIG_BTRFS_ASSERT.