From aa93c916593c9124b1b704d81ca6449d2eba5a6a Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Fri, 15 Jan 2010 20:08:22 +0000 Subject: [PATCH] --- yaml --- r: 179625 b: refs/heads/master c: 6c090a11e1c403b727a6a8eff0b97d5fb9e95cb5 h: refs/heads/master i: 179623: 4ea3c4036c6f4300e33ae0e03b5c2d57d4a161af v: v3 --- [refs] | 2 +- trunk/fs/btrfs/inode.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5aea2c5e7ffa..a43cb4ffaa5b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6c7d54ac87f338c479d9729e8392eca3f76e11e1 +refs/heads/master: 6c090a11e1c403b727a6a8eff0b97d5fb9e95cb5 diff --git a/trunk/fs/btrfs/inode.c b/trunk/fs/btrfs/inode.c index d5aa97310943..b330e27c2d8b 100644 --- a/trunk/fs/btrfs/inode.c +++ b/trunk/fs/btrfs/inode.c @@ -3796,6 +3796,12 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry) if (location.type == BTRFS_INODE_ITEM_KEY) { 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; }