xfs: remove XFS_IFINLINE
authorChristoph Hellwig <hch@lst.de>
Tue, 13 Apr 2021 18:15:11 +0000 (11:15 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 15 Apr 2021 16:35:51 +0000 (09:35 -0700)
Just check for an inline format fork instead of the using the equivalent
in-memory XFS_IFINLINE flag.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/libxfs/xfs_attr.c
fs/xfs/libxfs/xfs_attr_leaf.c
fs/xfs/libxfs/xfs_bmap.c
fs/xfs/libxfs/xfs_dir2_block.c
fs/xfs/libxfs/xfs_dir2_sf.c
fs/xfs/libxfs/xfs_inode_fork.c
fs/xfs/libxfs/xfs_inode_fork.h
fs/xfs/scrub/symlink.c
fs/xfs/xfs_dir2_readdir.c
fs/xfs/xfs_iops.c
fs/xfs/xfs_symlink.c

index 43ef85678cba6b178afa30025383b52e1708d6bd..96146f425e503d5d5cb94e9a21e29bb4a2595382 100644 (file)
@@ -362,10 +362,8 @@ xfs_has_attr(
        if (!xfs_inode_hasattr(dp))
                return -ENOATTR;
 
-       if (dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL) {
-               ASSERT(dp->i_afp->if_flags & XFS_IFINLINE);
+       if (dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL)
                return xfs_attr_sf_findname(args, NULL, NULL);
-       }
 
        if (xfs_attr_is_leaf(dp)) {
                error = xfs_attr_leaf_hasname(args, &bp);
@@ -389,10 +387,8 @@ xfs_attr_remove_args(
        if (!xfs_inode_hasattr(args->dp))
                return -ENOATTR;
 
-       if (args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL) {
-               ASSERT(args->dp->i_afp->if_flags & XFS_IFINLINE);
+       if (args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL)
                return xfs_attr_shortform_remove(args);
-       }
        if (xfs_attr_is_leaf(args->dp))
                return xfs_attr_leaf_removename(args);
        return xfs_attr_node_removename(args);
index 23e2bf3341a0156a025b5768b1d0d389a3c2d9aa..1ab7a73b5a9a46043cb30aa231a7538716edd57a 100644 (file)
@@ -654,9 +654,6 @@ xfs_attr_shortform_create(
        if (ifp->if_format == XFS_DINODE_FMT_EXTENTS) {
                ifp->if_flags &= ~XFS_IFEXTENTS;        /* just in case */
                ifp->if_format = XFS_DINODE_FMT_LOCAL;
-               ifp->if_flags |= XFS_IFINLINE;
-       } else {
-               ASSERT(ifp->if_flags & XFS_IFINLINE);
        }
        xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK);
        hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data;
@@ -733,7 +730,7 @@ xfs_attr_shortform_add(
        dp->i_forkoff = forkoff;
 
        ifp = dp->i_afp;
-       ASSERT(ifp->if_flags & XFS_IFINLINE);
+       ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
        sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data;
        if (xfs_attr_sf_findname(args, &sfe, NULL) == -EEXIST)
                ASSERT(0);
@@ -851,7 +848,7 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args)
        trace_xfs_attr_sf_lookup(args);
 
        ifp = args->dp->i_afp;
-       ASSERT(ifp->if_flags & XFS_IFINLINE);
+       ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
        sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data;
        sfe = &sf->list[0];
        for (i = 0; i < sf->hdr.count;
@@ -878,7 +875,7 @@ xfs_attr_shortform_getvalue(
        struct xfs_attr_sf_entry *sfe;
        int                     i;
 
-       ASSERT(args->dp->i_afp->if_flags == XFS_IFINLINE);
+       ASSERT(args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL);
        sf = (struct xfs_attr_shortform *)args->dp->i_afp->if_u1.if_data;
        sfe = &sf->list[0];
        for (i = 0; i < sf->hdr.count;
index 580b36f19a26f7b3ab194ffacc704065940ad27c..0af3edf8443c7391a892d37ebb27c2c2cdb0ea87 100644 (file)
@@ -805,7 +805,6 @@ xfs_bmap_local_to_extents_empty(
        ASSERT(ifp->if_nextents == 0);
 
        xfs_bmap_forkoff_reset(ip, whichfork);
-       ifp->if_flags &= ~XFS_IFINLINE;
        ifp->if_flags |= XFS_IFEXTENTS;
        ifp->if_u1.if_root = NULL;
        ifp->if_height = 0;
@@ -850,7 +849,7 @@ xfs_bmap_local_to_extents(
 
        flags = 0;
        error = 0;
-       ASSERT((ifp->if_flags & (XFS_IFINLINE|XFS_IFEXTENTS)) == XFS_IFINLINE);
+       ASSERT(!(ifp->if_flags & XFS_IFEXTENTS));
        memset(&args, 0, sizeof(args));
        args.tp = tp;
        args.mp = ip->i_mount;
index 7824af54637513f070c3b6dbfb6fe72c11debdf3..75e1421f69c45812c15885638b5ae084c7b5b1a4 100644 (file)
@@ -1096,7 +1096,7 @@ xfs_dir2_sf_to_block(
 
        trace_xfs_dir2_sf_to_block(args);
 
-       ASSERT(ifp->if_flags & XFS_IFINLINE);
+       ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
        ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
 
        oldsfp = (xfs_dir2_sf_hdr_t *)ifp->if_u1.if_data;
index bd89de61301c851dfaeffa4d09b49600b750e8ae..b031be033838f68bd79e61eb02053f98a6144833 100644 (file)
@@ -378,7 +378,7 @@ xfs_dir2_sf_addname(
 
        ASSERT(xfs_dir2_sf_lookup(args) == -ENOENT);
        dp = args->dp;
-       ASSERT(dp->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
        ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
        ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
        ASSERT(dp->i_df.if_u1.if_data != NULL);
@@ -830,9 +830,8 @@ xfs_dir2_sf_create(
                dp->i_df.if_flags &= ~XFS_IFEXTENTS;    /* just in case */
                dp->i_df.if_format = XFS_DINODE_FMT_LOCAL;
                xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE);
-               dp->i_df.if_flags |= XFS_IFINLINE;
        }
-       ASSERT(dp->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
        ASSERT(dp->i_df.if_bytes == 0);
        i8count = pino > XFS_DIR2_MAX_SHORT_INUM;
        size = xfs_dir2_sf_hdr_size(i8count);
@@ -877,7 +876,7 @@ xfs_dir2_sf_lookup(
 
        xfs_dir2_sf_check(args);
 
-       ASSERT(dp->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
        ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
        ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
        ASSERT(dp->i_df.if_u1.if_data != NULL);
@@ -954,7 +953,7 @@ xfs_dir2_sf_removename(
 
        trace_xfs_dir2_sf_removename(args);
 
-       ASSERT(dp->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
        oldsize = (int)dp->i_disk_size;
        ASSERT(oldsize >= offsetof(struct xfs_dir2_sf_hdr, parent));
        ASSERT(dp->i_df.if_bytes == oldsize);
@@ -1053,7 +1052,7 @@ xfs_dir2_sf_replace(
 
        trace_xfs_dir2_sf_replace(args);
 
-       ASSERT(dp->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
        ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
        ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
        ASSERT(dp->i_df.if_u1.if_data != NULL);
index 02ad722004d3f4be32d00d5e0ad1615cf0eb1834..3f2c16bf82e8c63f41ae67f68f5cfb0261caa9f1 100644 (file)
@@ -61,7 +61,6 @@ xfs_init_local_fork(
 
        ifp->if_bytes = size;
        ifp->if_flags &= ~XFS_IFEXTENTS;
-       ifp->if_flags |= XFS_IFINLINE;
 }
 
 /*
index 8ffaa7cc1f7c3f246daf29871515bdcd229e102a..ac8b2182ce8c57b8d3f458e0c7201610c2d1efbd 100644 (file)
@@ -30,7 +30,6 @@ struct xfs_ifork {
 /*
  * Per-fork incore inode flags.
  */
-#define        XFS_IFINLINE    0x01    /* Inline data is read in */
 #define        XFS_IFEXTENTS   0x02    /* All extent pointers are read in */
 
 /*
index ad7b85e248c78eb38d477e34583aebad0555f269..599ee277bba2f41035c61ec8f6cc3b13f014a89b 100644 (file)
@@ -51,7 +51,7 @@ xchk_symlink(
        }
 
        /* Inline symlink? */
-       if (ifp->if_flags & XFS_IFINLINE) {
+       if (ifp->if_format == XFS_DINODE_FMT_LOCAL) {
                if (len > XFS_IFORK_DSIZE(ip) ||
                    len > strnlen(ifp->if_u1.if_data, XFS_IFORK_DSIZE(ip)))
                        xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
index 1d2fe48ad19fb735488c4c676283666acab2d6cc..da1cc683560c7509235af419861472ee56ecbad8 100644 (file)
@@ -57,7 +57,7 @@ xfs_dir2_sf_getdents(
        xfs_ino_t               ino;
        struct xfs_da_geometry  *geo = args->geo;
 
-       ASSERT(dp->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
        ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
        ASSERT(dp->i_df.if_u1.if_data != NULL);
 
index 607b3f263b064476550a260273a5c1e3a98f5c66..8f2f74a496bd24da8471660833f8e71c73cfcf7f 100644 (file)
@@ -519,7 +519,7 @@ xfs_vn_get_link_inline(
        struct xfs_inode        *ip = XFS_I(inode);
        char                    *link;
 
-       ASSERT(ip->i_df.if_flags & XFS_IFINLINE);
+       ASSERT(ip->i_df.if_format == XFS_DINODE_FMT_LOCAL);
 
        /*
         * The VFS crashes on a NULL pointer, so return -EFSCORRUPTED if
@@ -1401,7 +1401,7 @@ xfs_setup_iops(
                inode->i_fop = &xfs_dir_file_operations;
                break;
        case S_IFLNK:
-               if (ip->i_df.if_flags & XFS_IFINLINE)
+               if (ip->i_df.if_format == XFS_DINODE_FMT_LOCAL)
                        inode->i_op = &xfs_inline_symlink_inode_operations;
                else
                        inode->i_op = &xfs_symlink_inode_operations;
index 1a625920ddff94daed29ff5707561267ad401506..d4b3567d87943f1757568d8763c789be816760c8 100644 (file)
@@ -104,7 +104,7 @@ xfs_readlink(
 
        trace_xfs_readlink(ip);
 
-       ASSERT(!(ip->i_df.if_flags & XFS_IFINLINE));
+       ASSERT(ip->i_df.if_format != XFS_DINODE_FMT_LOCAL);
 
        if (XFS_FORCED_SHUTDOWN(mp))
                return -EIO;
@@ -492,7 +492,7 @@ xfs_inactive_symlink(
         * Inline fork state gets removed by xfs_difree() so we have nothing to
         * do here in that case.
         */
-       if (ip->i_df.if_flags & XFS_IFINLINE) {
+       if (ip->i_df.if_format == XFS_DINODE_FMT_LOCAL) {
                xfs_iunlock(ip, XFS_ILOCK_EXCL);
                return 0;
        }