projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b70a80e
)
make freeing super_block rcu-delayed
author
Al Viro
<
[email protected]
>
Fri, 4 Oct 2013 21:06:56 +0000
(17:06 -0400)
committer
Al Viro
<
[email protected]
>
Fri, 25 Oct 2013 03:43:26 +0000
(23:43 -0400)
Signed-off-by: Al Viro <
[email protected]
>
fs/super.c
patch
|
blob
|
history
include/linux/fs.h
patch
|
blob
|
history
diff --git
a/fs/super.c
b/fs/super.c
index efa6e488a95c4e98804a2a6069822ba3702b8978..743bb7118053071381d8e9bc0f09e634d2264061 100644
(file)
--- a/
fs/super.c
+++ b/
fs/super.c
@@
-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
);
}
/**
diff --git
a/include/linux/fs.h
b/include/linux/fs.h
index b09e4e1d747a07d81c01840895e9a12a76ac69dd..2ab8a67ee054f0f56d92111df1e5a0090efd8ad3 100644
(file)
--- a/
include/linux/fs.h
+++ b/
include/linux/fs.h
@@
-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);