mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Make ->d_sb assign-once and always non-NULL
New helper (non-exported, fs/internal.h-only): __d_alloc(sb, name). Allocates dentry, sets its ->d_sb to given superblock and sets ->d_op accordingly. Old d_alloc(NULL, name) callers are converted to that (all of them know what superblock they want). d_alloc() itself is left only for parent != NULl case; uses __d_alloc(), inserts result into the list of parent's children. Note that now ->d_sb is assign-once and never NULL *and* ->d_parent is never NULL either. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
e3c3d9c838
commit
a4464dbc0c
3 changed files with 47 additions and 39 deletions
|
@ -16,6 +16,8 @@
|
|||
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
static inline int simple_positive(struct dentry *dentry)
|
||||
{
|
||||
return dentry->d_inode && !d_unhashed(dentry);
|
||||
|
@ -246,13 +248,11 @@ struct dentry *mount_pseudo(struct file_system_type *fs_type, char *name,
|
|||
root->i_ino = 1;
|
||||
root->i_mode = S_IFDIR | S_IRUSR | S_IWUSR;
|
||||
root->i_atime = root->i_mtime = root->i_ctime = CURRENT_TIME;
|
||||
dentry = d_alloc(NULL, &d_name);
|
||||
dentry = __d_alloc(s, &d_name);
|
||||
if (!dentry) {
|
||||
iput(root);
|
||||
goto Enomem;
|
||||
}
|
||||
dentry->d_sb = s;
|
||||
dentry->d_parent = dentry;
|
||||
d_instantiate(dentry, root);
|
||||
s->s_root = dentry;
|
||||
s->s_d_op = dops;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue