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 43ef856..96146f4 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 23e2bf3..1ab7a73 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 580b36f..0af3edf 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 7824af5..75e1421 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 bd89de6..b031be0 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 02ad722..3f2c16b 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 8ffaa7c..ac8b218 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 ad7b85e..599ee27 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 1d2fe48..da1cc68 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 607b3f2..8f2f74a 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 1a62592..d4b3567 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;
        }