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]
/
fs
/
block_dev.c
diff --git
a/fs/block_dev.c
b/fs/block_dev.c
index 4230252fd6895c97cb81541741f9e8e584e04322..771f23527010ded79b2293b7c59b528238139530 100644
(file)
--- a/
fs/block_dev.c
+++ b/
fs/block_dev.c
@@
-409,13
+409,20
@@
static struct inode *bdev_alloc_inode(struct super_block *sb)
return &ei->vfs_inode;
}
return &ei->vfs_inode;
}
-static void bdev_
destroy_inode(struct inode *inode
)
+static void bdev_
i_callback(struct rcu_head *head
)
{
{
+ struct inode *inode = container_of(head, struct inode, i_rcu);
struct bdev_inode *bdi = BDEV_I(inode);
struct bdev_inode *bdi = BDEV_I(inode);
+ INIT_LIST_HEAD(&inode->i_dentry);
kmem_cache_free(bdev_cachep, bdi);
}
kmem_cache_free(bdev_cachep, bdi);
}
+static void bdev_destroy_inode(struct inode *inode)
+{
+ call_rcu(&inode->i_rcu, bdev_i_callback);
+}
+
static void init_once(void *foo)
{
struct bdev_inode *ei = (struct bdev_inode *) foo;
static void init_once(void *foo)
{
struct bdev_inode *ei = (struct bdev_inode *) foo;
This page took
0.025 seconds
and
5
git commands to generate.