|
@@ -305,11 +305,10 @@ static struct dentry *omfs_lookup(struct inode *dir, struct dentry *dentry,
|
|
|
ino_t ino = be64_to_cpu(oi->i_head.h_self);
|
|
|
brelse(bh);
|
|
|
inode = omfs_iget(dir->i_sb, ino);
|
|
|
- if (IS_ERR(inode))
|
|
|
- return ERR_CAST(inode);
|
|
|
+ } else if (bh != ERR_PTR(-ENOENT)) {
|
|
|
+ inode = ERR_CAST(bh);
|
|
|
}
|
|
|
- d_add(dentry, inode);
|
|
|
- return NULL;
|
|
|
+ return d_splice_alias(inode, dentry);
|
|
|
}
|
|
|
|
|
|
/* sanity check block's self pointer */
|