proc_fill_cache(): clean up, get rid of pointless find_inode_number() use
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
c52a47ace7
commit
1df98b8bbc
@ -1686,39 +1686,29 @@ bool proc_fill_cache(struct file *file, struct dir_context *ctx,
|
||||
instantiate_t instantiate, struct task_struct *task, const void *ptr)
|
||||
{
|
||||
struct dentry *child, *dir = file->f_path.dentry;
|
||||
struct qstr qname = QSTR_INIT(name, len);
|
||||
struct inode *inode;
|
||||
struct qstr qname;
|
||||
ino_t ino = 0;
|
||||
unsigned type = DT_UNKNOWN;
|
||||
unsigned type;
|
||||
ino_t ino;
|
||||
|
||||
qname.name = name;
|
||||
qname.len = len;
|
||||
qname.hash = full_name_hash(name, len);
|
||||
|
||||
child = d_lookup(dir, &qname);
|
||||
child = d_hash_and_lookup(dir, &qname);
|
||||
if (!child) {
|
||||
struct dentry *new;
|
||||
new = d_alloc(dir, &qname);
|
||||
if (new) {
|
||||
child = ERR_PTR(instantiate(dir->d_inode, new, task, ptr));
|
||||
if (child)
|
||||
dput(new);
|
||||
else
|
||||
child = new;
|
||||
child = d_alloc(dir, &qname);
|
||||
if (!child)
|
||||
goto end_instantiate;
|
||||
if (instantiate(dir->d_inode, child, task, ptr) < 0) {
|
||||
dput(child);
|
||||
goto end_instantiate;
|
||||
}
|
||||
}
|
||||
if (!child || IS_ERR(child) || !child->d_inode)
|
||||
goto end_instantiate;
|
||||
inode = child->d_inode;
|
||||
ino = inode->i_ino;
|
||||
type = inode->i_mode >> 12;
|
||||
dput(child);
|
||||
end_instantiate:
|
||||
if (!ino)
|
||||
ino = find_inode_number(dir, &qname);
|
||||
if (!ino)
|
||||
ino = 1;
|
||||
return dir_emit(ctx, name, len, ino, type);
|
||||
|
||||
end_instantiate:
|
||||
return dir_emit(ctx, name, len, 1, DT_UNKNOWN);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CHECKPOINT_RESTORE
|
||||
|
Loading…
Reference in New Issue
Block a user