From 09c15216e79d9997cd7fec2a0b0446cb4351d461 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Sun, 12 Feb 2012 22:15:47 -0500 Subject: [PATCH] --- yaml --- r: 292333 b: refs/heads/master c: 32991ab305ace7017c62f8eecbe5eb36dc32e13b h: refs/heads/master i: 292331: 5b72599f7453b9bd3c10725983460bb4e33cdac9 v: v3 --- [refs] | 2 +- trunk/Documentation/filesystems/porting | 6 ++++++ trunk/fs/dcache.c | 24 ------------------------ trunk/include/linux/dcache.h | 1 - 4 files changed, 7 insertions(+), 26 deletions(-) diff --git a/[refs] b/[refs] index 04b5042f4b00..b18d450c912f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 318ceed088497d1ca839b1172518ac4cc7096b82 +refs/heads/master: 32991ab305ace7017c62f8eecbe5eb36dc32e13b diff --git a/trunk/Documentation/filesystems/porting b/trunk/Documentation/filesystems/porting index b4a3d765ff9a..74acd9618819 100644 --- a/trunk/Documentation/filesystems/porting +++ b/trunk/Documentation/filesystems/porting @@ -429,3 +429,9 @@ filemap_write_and_wait_range() so that all dirty pages are synced out properly. You must also keep in mind that ->fsync() is not called with i_mutex held anymore, so if you require i_mutex locking you must make sure to take it and release it yourself. + +-- +[mandatory] + d_alloc_root() is gone, along with a lot of bugs caused by code +misusing it. Replacement: d_make_root(inode). The difference is, +d_make_root() drops the reference to inode if dentry allocation fails. diff --git a/trunk/fs/dcache.c b/trunk/fs/dcache.c index bcbdb33fcc20..a78e145a4357 100644 --- a/trunk/fs/dcache.c +++ b/trunk/fs/dcache.c @@ -1443,30 +1443,6 @@ struct dentry *d_instantiate_unique(struct dentry *entry, struct inode *inode) EXPORT_SYMBOL(d_instantiate_unique); -/** - * d_alloc_root - allocate root dentry - * @root_inode: inode to allocate the root for - * - * Allocate a root ("/") dentry for the inode given. The inode is - * instantiated and returned. %NULL is returned if there is insufficient - * memory or the inode passed is %NULL. - */ - -struct dentry * d_alloc_root(struct inode * root_inode) -{ - struct dentry *res = NULL; - - if (root_inode) { - static const struct qstr name = { .name = "/", .len = 1 }; - - res = __d_alloc(root_inode->i_sb, &name); - if (res) - d_instantiate(res, root_inode); - } - return res; -} -EXPORT_SYMBOL(d_alloc_root); - struct dentry *d_make_root(struct inode *root_inode) { struct dentry *res = NULL; diff --git a/trunk/include/linux/dcache.h b/trunk/include/linux/dcache.h index ff5f5256d175..7e11f1418203 100644 --- a/trunk/include/linux/dcache.h +++ b/trunk/include/linux/dcache.h @@ -222,7 +222,6 @@ extern void shrink_dcache_for_umount(struct super_block *); extern int d_invalidate(struct dentry *); /* only used at mount-time */ -extern struct dentry * d_alloc_root(struct inode *); extern struct dentry * d_make_root(struct inode *); /* - the ramfs-type tree */