xfs
[Top] [All Lists]

[PATCH 02/11] xfs: cleanup struct xfs_dir2_free

To: xfs@xxxxxxxxxxx
Subject: [PATCH 02/11] xfs: cleanup struct xfs_dir2_free
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Sun, 10 Jul 2011 16:49:18 -0400
References: <20110710204916.856267100@xxxxxxxxxxxxxxxxxxxxxx>
User-agent: quilt/0.48-1
Change the bests array to be a proper variable sized entry.  This is done
easily as no one relies on the size of the structure.  Also change
XFS_DIR2_MAX_FREE_BESTS to an inline function while we're at it.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Index: xfs/fs/xfs/xfs_dir2_format.h
===================================================================
--- xfs.orig/fs/xfs/xfs_dir2_format.h   2011-07-09 13:29:33.488251514 +0200
+++ xfs/fs/xfs/xfs_dir2_format.h        2011-07-09 13:30:38.428248225 +0200
@@ -523,13 +523,15 @@ typedef   struct xfs_dir2_free_hdr {
 
 typedef struct xfs_dir2_free {
        xfs_dir2_free_hdr_t     hdr;            /* block header */
-       __be16                  bests[1];       /* best free counts */
+       __be16                  bests[];        /* best free counts */
                                                /* unused entries are -1 */
 } xfs_dir2_free_t;
 
-#define        XFS_DIR2_MAX_FREE_BESTS(mp)     \
-       (((mp)->m_dirblksize - (uint)sizeof(struct xfs_dir2_free_hdr)) / \
-        (uint)sizeof(xfs_dir2_data_off_t))
+static inline int xfs_dir2_free_max_bests(struct xfs_mount *mp)
+{
+       return (mp->m_dirblksize - sizeof(struct xfs_dir2_free_hdr)) /
+               sizeof(xfs_dir2_data_off_t);
+}
 
 /*
  * Convert data space db to the corresponding free db.
@@ -537,7 +539,7 @@ typedef struct xfs_dir2_free {
 static inline xfs_dir2_db_t
 xfs_dir2_db_to_fdb(struct xfs_mount *mp, xfs_dir2_db_t db)
 {
-       return XFS_DIR2_FREE_FIRSTDB(mp) + db / XFS_DIR2_MAX_FREE_BESTS(mp);
+       return XFS_DIR2_FREE_FIRSTDB(mp) + db / xfs_dir2_free_max_bests(mp);
 }
 
 /*
@@ -546,7 +548,7 @@ xfs_dir2_db_to_fdb(struct xfs_mount *mp,
 static inline int
 xfs_dir2_db_to_fdindex(struct xfs_mount *mp, xfs_dir2_db_t db)
 {
-       return db % XFS_DIR2_MAX_FREE_BESTS(mp);
+       return db % xfs_dir2_free_max_bests(mp);
 }
 
 /*
Index: xfs/fs/xfs/xfs_dir2_node.c
===================================================================
--- xfs.orig/fs/xfs/xfs_dir2_node.c     2011-07-09 13:29:20.448252173 +0200
+++ xfs/fs/xfs/xfs_dir2_node.c  2011-07-09 13:30:38.428248225 +0200
@@ -408,7 +408,7 @@ xfs_dir2_leafn_lookup_for_addname(
                                ASSERT(be32_to_cpu(free->hdr.magic) ==
                                        XFS_DIR2_FREE_MAGIC);
                                ASSERT((be32_to_cpu(free->hdr.firstdb) %
-                                       XFS_DIR2_MAX_FREE_BESTS(mp)) == 0);
+                                       xfs_dir2_free_max_bests(mp)) == 0);
                                ASSERT(be32_to_cpu(free->hdr.firstdb) <= curdb);
                                ASSERT(curdb < be32_to_cpu(free->hdr.firstdb) +
                                        be32_to_cpu(free->hdr.nvalid));
@@ -924,7 +924,7 @@ xfs_dir2_leafn_remove(
                free = fbp->data;
                ASSERT(free->hdr.magic == cpu_to_be32(XFS_DIR2_FREE_MAGIC));
                ASSERT(be32_to_cpu(free->hdr.firstdb) ==
-                      XFS_DIR2_MAX_FREE_BESTS(mp) *
+                      xfs_dir2_free_max_bests(mp) *
                       (fdb - XFS_DIR2_FREE_FIRSTDB(mp)));
                /*
                 * Calculate which entry we need to fix.
@@ -1603,7 +1603,7 @@ xfs_dir2_node_addname_int(
                        free->hdr.magic = cpu_to_be32(XFS_DIR2_FREE_MAGIC);
                        free->hdr.firstdb = cpu_to_be32(
                                (fbno - XFS_DIR2_FREE_FIRSTDB(mp)) *
-                               XFS_DIR2_MAX_FREE_BESTS(mp));
+                               xfs_dir2_free_max_bests(mp));
                        free->hdr.nvalid = 0;
                        free->hdr.nused = 0;
                } else {
@@ -1620,7 +1620,7 @@ xfs_dir2_node_addname_int(
                 * freespace block, extend that table.
                 */
                if (findex >= be32_to_cpu(free->hdr.nvalid)) {
-                       ASSERT(findex < XFS_DIR2_MAX_FREE_BESTS(mp));
+                       ASSERT(findex < xfs_dir2_free_max_bests(mp));
                        free->hdr.nvalid = cpu_to_be32(findex + 1);
                        /*
                         * Tag new entry so nused will go up.

<Prev in Thread] Current Thread [Next in Thread>