xfs: simplify di_flags2 inheritance in xfs_ialloc
authorChristoph Hellwig <hch@lst.de>
Wed, 18 Mar 2020 15:15:10 +0000 (08:15 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Thu, 19 Mar 2020 15:48:47 +0000 (08:48 -0700)
di_flags2 is initialized to zero for v4 and earlier file systems.  This
means di_flags2 can only be non-zero for a v5 file systems, in which
case both the parent and child inodes can store the field.  Remove the
extra di_version check, and also remove the rather pointless local
di_flags2 variable while at it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_inode.c

index d65d250..dfb0a45 100644 (file)
@@ -907,20 +907,13 @@ xfs_ialloc(
 
                        ip->i_d.di_flags |= di_flags;
                }
-               if (pip &&
-                   (pip->i_d.di_flags2 & XFS_DIFLAG2_ANY) &&
-                   pip->i_d.di_version == 3 &&
-                   ip->i_d.di_version == 3) {
-                       uint64_t        di_flags2 = 0;
-
+               if (pip && (pip->i_d.di_flags2 & XFS_DIFLAG2_ANY)) {
                        if (pip->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE) {
-                               di_flags2 |= XFS_DIFLAG2_COWEXTSIZE;
+                               ip->i_d.di_flags2 |= XFS_DIFLAG2_COWEXTSIZE;
                                ip->i_d.di_cowextsize = pip->i_d.di_cowextsize;
                        }
                        if (pip->i_d.di_flags2 & XFS_DIFLAG2_DAX)
-                               di_flags2 |= XFS_DIFLAG2_DAX;
-
-                       ip->i_d.di_flags2 |= di_flags2;
+                               ip->i_d.di_flags2 |= XFS_DIFLAG2_DAX;
                }
                /* FALLTHROUGH */
        case S_IFLNK: