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

Commit e3acc2a6 authored by Josef Bacik's avatar Josef Bacik Committed by Chris Mason
Browse files

Btrfs: run orphan cleanup on default fs root



This patch revert's commit

6c090a11

Since it introduces this problem where we can run orphan cleanup on a
volume that can have orphan entries re-added.  Instead of my original
fix, Yan Zheng pointed out that we can just revert my original fix and
then run the orphan cleanup in open_ctree after we look up the fs_root.
I have tested this with all the tests that gave me problems and this
patch fixes both problems.  Thanks,

Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent f858153c
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -1993,6 +1993,12 @@ struct btrfs_root *open_ctree(struct super_block *sb,
	if (!fs_info->fs_root)
	if (!fs_info->fs_root)
		goto fail_trans_kthread;
		goto fail_trans_kthread;


	if (!(sb->s_flags & MS_RDONLY)) {
		down_read(&fs_info->cleanup_work_sem);
		btrfs_orphan_cleanup(fs_info->fs_root);
		up_read(&fs_info->cleanup_work_sem);
	}

	return tree_root;
	return tree_root;


fail_trans_kthread:
fail_trans_kthread:
+0 −6
Original line number Original line Diff line number Diff line
@@ -3797,12 +3797,6 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry)


	if (location.type == BTRFS_INODE_ITEM_KEY) {
	if (location.type == BTRFS_INODE_ITEM_KEY) {
		inode = btrfs_iget(dir->i_sb, &location, root);
		inode = btrfs_iget(dir->i_sb, &location, root);
		if (unlikely(root->clean_orphans) &&
		    !(inode->i_sb->s_flags & MS_RDONLY)) {
			down_read(&root->fs_info->cleanup_work_sem);
			btrfs_orphan_cleanup(root);
			up_read(&root->fs_info->cleanup_work_sem);
		}
		return inode;
		return inode;
	}
	}