xfs_vn_lookup: simplify a bit
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 1 May 2018 03:04:19 +0000 (23:04 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 22 May 2018 18:27:57 +0000 (14:27 -0400)
have all post-xfs_lookup() branches converge on d_splice_alias()

Cc: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/xfs/xfs_iops.c

index a3ed3c8..df42e4c 100644 (file)
@@ -260,6 +260,7 @@ xfs_vn_lookup(
        struct dentry   *dentry,
        unsigned int flags)
 {
+       struct inode *inode;
        struct xfs_inode *cip;
        struct xfs_name name;
        int             error;
@@ -269,14 +270,13 @@ xfs_vn_lookup(
 
        xfs_dentry_to_name(&name, dentry);
        error = xfs_lookup(XFS_I(dir), &name, &cip, NULL);
-       if (unlikely(error)) {
-               if (unlikely(error != -ENOENT))
-                       return ERR_PTR(error);
-               d_add(dentry, NULL);
-               return NULL;
-       }
-
-       return d_splice_alias(VFS_I(cip), dentry);
+       if (likely(!error))
+               inode = VFS_I(cip);
+       else if (likely(error == -ENOENT))
+               inode = NULL;
+       else
+               inode = ERR_PTR(error);
+       return d_splice_alias(inode, dentry);
 }
 
 STATIC struct dentry *