gfs2: Minor gfs2_lookup_by_inum cleanup
authorAndreas Gruenbacher <agruenba@redhat.com>
Wed, 15 Jan 2020 04:31:38 +0000 (05:31 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Fri, 5 Jun 2020 18:19:21 +0000 (20:19 +0200)
Use a zero no_formal_ino instead of a NULL pointer to indicate that any inode
generation number will qualify: a valid inode never has a zero no_formal_ino.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/export.c
fs/gfs2/glock.c
fs/gfs2/inode.c
fs/gfs2/inode.h

index 3f717285ee4837b8728217daa35ba24be6f8eae3..756d05779200dcdac43f67daa0fea9e9ccd3ff6d 100644 (file)
@@ -134,7 +134,9 @@ static struct dentry *gfs2_get_dentry(struct super_block *sb,
        struct gfs2_sbd *sdp = sb->s_fs_info;
        struct inode *inode;
 
-       inode = gfs2_lookup_by_inum(sdp, inum->no_addr, &inum->no_formal_ino,
+       if (!inum->no_formal_ino)
+               return ERR_PTR(-ESTALE);
+       inode = gfs2_lookup_by_inum(sdp, inum->no_addr, inum->no_formal_ino,
                                    GFS2_BLKST_DINODE);
        if (IS_ERR(inode))
                return ERR_CAST(inode);
index bf7daa35f73f37aedd8d5bd64d4eebf81a585963..b6078b0e74b9f08793e906aca92365fb3140bfc9 100644 (file)
@@ -843,7 +843,7 @@ static void delete_work_func(struct work_struct *work)
                }
        }
 
-       inode = gfs2_lookup_by_inum(sdp, no_addr, NULL, GFS2_BLKST_UNLINKED);
+       inode = gfs2_lookup_by_inum(sdp, no_addr, 0, GFS2_BLKST_UNLINKED);
        if (!IS_ERR_OR_NULL(inode)) {
                d_prune_aliases(inode);
                iput(inode);
index a4112906abc2e998251dc8031247f76c4b6d1d29..812a6ae03f6c89e9746cadaedd2d05f231ff5d06 100644 (file)
@@ -207,8 +207,15 @@ fail:
        return ERR_PTR(error);
 }
 
+/**
+ * gfs2_lookup_by_inum - look up an inode by inode number
+ * @sdp: The super block
+ * @no_addr: The inode number
+ * @no_formal_ino: The inode generation number (0 for any)
+ * @blktype: Requested block type (see gfs2_inode_lookup)
+ */
 struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
-                                 u64 *no_formal_ino, unsigned int blktype)
+                                 u64 no_formal_ino, unsigned int blktype)
 {
        struct super_block *sb = sdp->sd_vfs;
        struct inode *inode;
@@ -221,7 +228,7 @@ struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
        /* Two extra checks for NFS only */
        if (no_formal_ino) {
                error = -ESTALE;
-               if (GFS2_I(inode)->i_no_formal_ino != *no_formal_ino)
+               if (GFS2_I(inode)->i_no_formal_ino != no_formal_ino)
                        goto fail_iput;
 
                error = -EIO;
index 580adbf0b5e1f414c51bb316687014b17bca0f63..b52ecf4ffe6341df042078587a8b6f61fb5168ca 100644 (file)
@@ -92,7 +92,7 @@ extern struct inode *gfs2_inode_lookup(struct super_block *sb, unsigned type,
                                       u64 no_addr, u64 no_formal_ino,
                                       unsigned int blktype);
 extern struct inode *gfs2_lookup_by_inum(struct gfs2_sbd *sdp, u64 no_addr,
-                                        u64 *no_formal_ino,
+                                        u64 no_formal_ino,
                                         unsigned int blktype);
 
 extern int gfs2_inode_refresh(struct gfs2_inode *ip);