Hi,

there's one thing I want to bring up. It's not related to delayed
functionality itself but to git tree base of the patch.

There's a merge conflict when your patch is applied directly onto
Linus' tree, and not when on Chris' one.

On Thu, Mar 24, 2011 at 07:41:31PM +0800, Miao Xie wrote:
...
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -6726,6 +6775,9 @@ void btrfs_destroy_inode(struct inode *inode)
>       inode_tree_del(inode);
>       btrfs_drop_extent_cache(inode, 0, (u64)-1, 0);
>  free:
> +     ret = btrfs_remove_delayed_node(inode);
> +     BUG_ON(ret);
> +
>       kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode));
>  }
>  

the call to kmem_cache_free has been replaced by

commit fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9
Author: Nick Piggin <npig...@kernel.dk>
Date:   Fri Jan 7 17:49:49 2011 +1100
    fs: icache RCU free inodes

relevant hunk:

--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6495,6 +6495,13 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
        return inode;
 }

+static void btrfs_i_callback(struct rcu_head *head)
+{
+       struct inode *inode = container_of(head, struct inode, i_rcu);
+       INIT_LIST_HEAD(&inode->i_dentry);
+       kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode));
+}
+
 void btrfs_destroy_inode(struct inode *inode)
 {
        struct btrfs_ordered_extent *ordered;
@@ -6564,7 +6571,7 @@ void btrfs_destroy_inode(struct inode *inode)
        inode_tree_del(inode);
        btrfs_drop_extent_cache(inode, 0, (u64)-1, 0);
 free:
-       kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode));
+       call_rcu(&inode->i_rcu, btrfs_i_callback);
 }


I don't think this disqualifies all the testing already done but maybe it's
time to rebase btrfs-unstable.git to .38 .

Chris?


dave
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to