xfs: Convert xfs_attr_sf macros to inline functions
authorCarlos Maiolino <cmaiolino@redhat.com>
Mon, 7 Sep 2020 15:08:50 +0000 (08:08 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 16 Sep 2020 03:52:42 +0000 (20:52 -0700)
xfs_attr_sf_totsize() requires access to xfs_inode structure, so, once
xfs_attr_shortform_addname() is its only user, move it to xfs_attr.c
instead of playing with more #includes.

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_attr.c
fs/xfs/libxfs/xfs_attr_leaf.c
fs/xfs/libxfs/xfs_attr_sf.h
fs/xfs/xfs_attr_list.c

index 2e055c0..fd8e641 100644 (file)
@@ -428,7 +428,7 @@ xfs_attr_set(
                 */
                if (XFS_IFORK_Q(dp) == 0) {
                        int sf_size = sizeof(struct xfs_attr_sf_hdr) +
-                               XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen,
+                               xfs_attr_sf_entsize_byname(args->namelen,
                                                args->valuelen);
 
                        error = xfs_bmap_add_attrfork(dp, sf_size, rsvd);
@@ -523,6 +523,14 @@ out_trans_cancel:
  * External routines when attribute list is inside the inode
  *========================================================================*/
 
+static inline int xfs_attr_sf_totsize(struct xfs_inode *dp)
+{
+       struct xfs_attr_shortform *sf;
+
+       sf = (struct xfs_attr_shortform *)dp->i_afp->if_u1.if_data;
+       return be16_to_cpu(sf->hdr.totsize);
+}
+
 /*
  * Add a name to the shortform attribute list structure
  * This is the external routine.
@@ -555,8 +563,8 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)
            args->valuelen >= XFS_ATTR_SF_ENTSIZE_MAX)
                return -ENOSPC;
 
-       newsize = XFS_ATTR_SF_TOTSIZE(args->dp);
-       newsize += XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen);
+       newsize = xfs_attr_sf_totsize(args->dp);
+       newsize += xfs_attr_sf_entsize_byname(args->namelen, args->valuelen);
 
        forkoff = xfs_attr_shortform_bytesfit(args->dp, newsize);
        if (!forkoff)
index 61dacb7..bb128db 100644 (file)
@@ -684,9 +684,9 @@ xfs_attr_sf_findname(
        sf = (struct xfs_attr_shortform *)args->dp->i_afp->if_u1.if_data;
        sfe = &sf->list[0];
        end = sf->hdr.count;
-       for (i = 0; i < end; sfe = XFS_ATTR_SF_NEXTENTRY(sfe),
+       for (i = 0; i < end; sfe = xfs_attr_sf_nextentry(sfe),
                             base += size, i++) {
-               size = XFS_ATTR_SF_ENTSIZE(sfe);
+               size = xfs_attr_sf_entsize(sfe);
                if (!xfs_attr_match(args, sfe->namelen, sfe->nameval,
                                    sfe->flags))
                        continue;
@@ -733,7 +733,7 @@ xfs_attr_shortform_add(
                ASSERT(0);
 
        offset = (char *)sfe - (char *)sf;
-       size = XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen);
+       size = xfs_attr_sf_entsize_byname(args->namelen, args->valuelen);
        xfs_idata_realloc(dp, size, XFS_ATTR_FORK);
        sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data;
        sfe = (struct xfs_attr_sf_entry *)((char *)sf + offset);
@@ -792,7 +792,7 @@ xfs_attr_shortform_remove(
        error = xfs_attr_sf_findname(args, &sfe, &base);
        if (error != -EEXIST)
                return error;
-       size = XFS_ATTR_SF_ENTSIZE(sfe);
+       size = xfs_attr_sf_entsize(sfe);
 
        /*
         * Fix up the attribute fork data, covering the hole
@@ -849,7 +849,7 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args)
        sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data;
        sfe = &sf->list[0];
        for (i = 0; i < sf->hdr.count;
-                               sfe = XFS_ATTR_SF_NEXTENTRY(sfe), i++) {
+                               sfe = xfs_attr_sf_nextentry(sfe), i++) {
                if (xfs_attr_match(args, sfe->namelen, sfe->nameval,
                                sfe->flags))
                        return -EEXIST;
@@ -876,7 +876,7 @@ xfs_attr_shortform_getvalue(
        sf = (struct xfs_attr_shortform *)args->dp->i_afp->if_u1.if_data;
        sfe = &sf->list[0];
        for (i = 0; i < sf->hdr.count;
-                               sfe = XFS_ATTR_SF_NEXTENTRY(sfe), i++) {
+                               sfe = xfs_attr_sf_nextentry(sfe), i++) {
                if (xfs_attr_match(args, sfe->namelen, sfe->nameval,
                                sfe->flags))
                        return xfs_attr_copy_value(args,
@@ -951,7 +951,7 @@ xfs_attr_shortform_to_leaf(
                ASSERT(error != -ENOSPC);
                if (error)
                        goto out;
-               sfe = XFS_ATTR_SF_NEXTENTRY(sfe);
+               sfe = xfs_attr_sf_nextentry(sfe);
        }
        error = 0;
        *leaf_bp = bp;
@@ -992,7 +992,7 @@ xfs_attr_shortform_allfit(
                        return 0;
                if (be16_to_cpu(name_loc->valuelen) >= XFS_ATTR_SF_ENTSIZE_MAX)
                        return 0;
-               bytes += XFS_ATTR_SF_ENTSIZE_BYNAME(name_loc->namelen,
+               bytes += xfs_attr_sf_entsize_byname(name_loc->namelen,
                                        be16_to_cpu(name_loc->valuelen));
        }
        if ((dp->i_mount->m_flags & XFS_MOUNT_ATTR2) &&
@@ -1050,7 +1050,7 @@ xfs_attr_shortform_verify(
                 * within the data buffer.  The next entry starts after the
                 * name component, so nextentry is an acceptable test.
                 */
-               next_sfep = XFS_ATTR_SF_NEXTENTRY(sfep);
+               next_sfep = xfs_attr_sf_nextentry(sfep);
                if ((char *)next_sfep > endp)
                        return __this_address;
 
index 2993410..37578b3 100644 (file)
@@ -26,18 +26,26 @@ typedef struct xfs_attr_sf_sort {
        unsigned char   *name;          /* name value, pointer into buffer */
 } xfs_attr_sf_sort_t;
 
-#define XFS_ATTR_SF_ENTSIZE_BYNAME(nlen,vlen)  /* space name/value uses */ \
-       ((sizeof(struct xfs_attr_sf_entry) + (nlen) + (vlen)))
 #define XFS_ATTR_SF_ENTSIZE_MAX                        /* max space for name&value */ \
        ((1 << (NBBY*(int)sizeof(uint8_t))) - 1)
-#define XFS_ATTR_SF_ENTSIZE(sfep)              /* space an entry uses */ \
-       ((int)sizeof(struct xfs_attr_sf_entry) + \
-               (sfep)->namelen+(sfep)->valuelen)
-#define XFS_ATTR_SF_NEXTENTRY(sfep)            /* next entry in struct */ \
-       ((struct xfs_attr_sf_entry *)((char *)(sfep) + \
-               XFS_ATTR_SF_ENTSIZE(sfep)))
-#define XFS_ATTR_SF_TOTSIZE(dp)                        /* total space in use */ \
-       (be16_to_cpu(((struct xfs_attr_shortform *)     \
-               ((dp)->i_afp->if_u1.if_data))->hdr.totsize))
+
+/* space name/value uses */
+static inline int xfs_attr_sf_entsize_byname(uint8_t nlen, uint8_t vlen)
+{
+       return sizeof(struct xfs_attr_sf_entry) + nlen + vlen;
+}
+
+/* space an entry uses */
+static inline int xfs_attr_sf_entsize(struct xfs_attr_sf_entry *sfep)
+{
+       return struct_size(sfep, nameval, sfep->namelen + sfep->valuelen);
+}
+
+/* next entry in struct */
+static inline struct xfs_attr_sf_entry *
+xfs_attr_sf_nextentry(struct xfs_attr_sf_entry *sfep)
+{
+       return (void *)sfep + xfs_attr_sf_entsize(sfep);
+}
 
 #endif /* __XFS_ATTR_SF_H__ */
index 4eb1d6f..8f8837f 100644 (file)
@@ -96,7 +96,7 @@ xfs_attr_shortform_list(
                         */
                        if (context->seen_enough)
                                break;
-                       sfe = XFS_ATTR_SF_NEXTENTRY(sfe);
+                       sfe = xfs_attr_sf_nextentry(sfe);
                }
                trace_xfs_attr_list_sf_all(context);
                return 0;
@@ -136,7 +136,7 @@ xfs_attr_shortform_list(
                /* These are bytes, and both on-disk, don't endian-flip */
                sbp->valuelen = sfe->valuelen;
                sbp->flags = sfe->flags;
-               sfe = XFS_ATTR_SF_NEXTENTRY(sfe);
+               sfe = xfs_attr_sf_nextentry(sfe);
                sbp++;
                nsbuf++;
        }