mirror of https://gitee.com/openkylin/linux.git
hfs: use d_splice_alias()
code is simpler that way Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
18fbbfc2bf
commit
6b9cceead0
20
fs/hfs/dir.c
20
fs/hfs/dir.c
|
@ -31,21 +31,15 @@ static struct dentry *hfs_lookup(struct inode *dir, struct dentry *dentry,
|
|||
hfs_cat_build_key(dir->i_sb, fd.search_key, dir->i_ino, &dentry->d_name);
|
||||
res = hfs_brec_read(&fd, &rec, sizeof(rec));
|
||||
if (res) {
|
||||
hfs_find_exit(&fd);
|
||||
if (res == -ENOENT) {
|
||||
/* No such entry */
|
||||
inode = NULL;
|
||||
goto done;
|
||||
}
|
||||
return ERR_PTR(res);
|
||||
if (res != -ENOENT)
|
||||
inode = ERR_PTR(res);
|
||||
} else {
|
||||
inode = hfs_iget(dir->i_sb, &fd.search_key->cat, &rec);
|
||||
if (!inode)
|
||||
inode = ERR_PTR(-EACCES);
|
||||
}
|
||||
inode = hfs_iget(dir->i_sb, &fd.search_key->cat, &rec);
|
||||
hfs_find_exit(&fd);
|
||||
if (!inode)
|
||||
return ERR_PTR(-EACCES);
|
||||
done:
|
||||
d_add(dentry, inode);
|
||||
return NULL;
|
||||
return d_splice_alias(inode, dentry);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -544,8 +544,7 @@ static struct dentry *hfs_file_lookup(struct inode *dir, struct dentry *dentry,
|
|||
hlist_add_fake(&inode->i_hash);
|
||||
mark_inode_dirty(inode);
|
||||
out:
|
||||
d_add(dentry, inode);
|
||||
return NULL;
|
||||
return d_splice_alias(inode, dentry);
|
||||
}
|
||||
|
||||
void hfs_evict_inode(struct inode *inode)
|
||||
|
|
Loading…
Reference in New Issue