]> Pileus Git - ~andy/linux/commitdiff
make freeing super_block rcu-delayed
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 4 Oct 2013 21:06:56 +0000 (17:06 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 25 Oct 2013 03:43:26 +0000 (23:43 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/super.c
include/linux/fs.h

index efa6e488a95c4e98804a2a6069822ba3702b8978..743bb7118053071381d8e9bc0f09e634d2264061 100644 (file)
@@ -149,7 +149,7 @@ static void destroy_super(struct super_block *s)
        WARN_ON(!list_empty(&s->s_mounts));
        kfree(s->s_subtype);
        kfree(s->s_options);
-       kfree(s);
+       kfree_rcu(s, rcu);
 }
 
 /**
index b09e4e1d747a07d81c01840895e9a12a76ac69dd..2ab8a67ee054f0f56d92111df1e5a0090efd8ad3 100644 (file)
@@ -1330,6 +1330,7 @@ struct super_block {
         */
        struct list_lru         s_dentry_lru ____cacheline_aligned_in_smp;
        struct list_lru         s_inode_lru ____cacheline_aligned_in_smp;
+       struct rcu_head         rcu;
 };
 
 extern struct timespec current_fs_time(struct super_block *sb);