projects
/
deliverable
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fs: icache RCU free inodes
[deliverable/linux.git]
/
net
/
sunrpc
/
rpc_pipe.c
diff --git
a/net/sunrpc/rpc_pipe.c
b/net/sunrpc/rpc_pipe.c
index 10a17a37ec4e90c683588de990670288136cc793..2899fe27f8805229c9878d99a4c7afc6f9526d7b 100644
(file)
--- a/
net/sunrpc/rpc_pipe.c
+++ b/
net/sunrpc/rpc_pipe.c
@@
-162,11
+162,19
@@
rpc_alloc_inode(struct super_block *sb)
}
static void
}
static void
-rpc_
destroy_inode(struct inode *inode
)
+rpc_
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(rpc_inode_cachep, RPC_I(inode));
}
kmem_cache_free(rpc_inode_cachep, RPC_I(inode));
}
+static void
+rpc_destroy_inode(struct inode *inode)
+{
+ call_rcu(&inode->i_rcu, rpc_i_callback);
+}
+
static int
rpc_pipe_open(struct inode *inode, struct file *filp)
{
static int
rpc_pipe_open(struct inode *inode, struct file *filp)
{
@@
-430,7
+438,7
@@
void rpc_put_mount(void)
}
EXPORT_SYMBOL_GPL(rpc_put_mount);
}
EXPORT_SYMBOL_GPL(rpc_put_mount);
-static int rpc_delete_dentry(struct dentry *dentry)
+static int rpc_delete_dentry(
const
struct dentry *dentry)
{
return 1;
}
{
return 1;
}
This page took
0.029162 seconds
and
5
git commands to generate.