simplify gfs2_lookup()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 17 Jul 2011 14:22:27 +0000 (10:22 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 21 Jul 2011 00:48:02 +0000 (20:48 -0400)
d_splice_alias() will DTRT when given NULL or ERR_PTR

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/gfs2/inode.c

index b1090d66a6fdd8db040a7542e863939f643ae4de..0fb51a96eff0a8bb743fc83b2961a16465d8fa0c 100644 (file)
@@ -792,13 +792,8 @@ static int gfs2_create(struct inode *dir, struct dentry *dentry,
 static struct dentry *gfs2_lookup(struct inode *dir, struct dentry *dentry,
                                  struct nameidata *nd)
 {
-       struct inode *inode = NULL;
-
-       inode = gfs2_lookupi(dir, &dentry->d_name, 0);
-       if (inode && IS_ERR(inode))
-               return ERR_CAST(inode);
-
-       if (inode) {
+       struct inode *inode = gfs2_lookupi(dir, &dentry->d_name, 0);
+       if (inode && !IS_ERR(inode)) {
                struct gfs2_glock *gl = GFS2_I(inode)->i_gl;
                struct gfs2_holder gh;
                int error;
@@ -808,11 +803,8 @@ static struct dentry *gfs2_lookup(struct inode *dir, struct dentry *dentry,
                        return ERR_PTR(error);
                }
                gfs2_glock_dq_uninit(&gh);
-               return d_splice_alias(inode, dentry);
        }
-       d_add(dentry, inode);
-
-       return NULL;
+       return d_splice_alias(inode, dentry);
 }
 
 /**