Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a00b7745 authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

xfs: cleanup struct xfs_dir2_free



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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarAlex Elder <aelder@sgi.com>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent 57926640
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -516,13 +516,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.
@@ -530,7 +532,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);
}

/*
@@ -539,7 +541,7 @@ xfs_dir2_db_to_fdb(struct xfs_mount *mp, xfs_dir2_db_t db)
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);
}

/*
+4 −4
Original line number Diff line number Diff line
@@ -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.