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: Christoph Hellwig <hch@lst.de> Reviewed-by: Alex Elder <aelder@sgi.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
parent
5792664070
commit
a00b7745c6
@ -516,13 +516,15 @@ typedef struct xfs_dir2_free_hdr {
|
|||||||
|
|
||||||
typedef struct xfs_dir2_free {
|
typedef struct xfs_dir2_free {
|
||||||
xfs_dir2_free_hdr_t hdr; /* block header */
|
xfs_dir2_free_hdr_t hdr; /* block header */
|
||||||
__be16 bests[1]; /* best free counts */
|
__be16 bests[]; /* best free counts */
|
||||||
/* unused entries are -1 */
|
/* unused entries are -1 */
|
||||||
} xfs_dir2_free_t;
|
} xfs_dir2_free_t;
|
||||||
|
|
||||||
#define XFS_DIR2_MAX_FREE_BESTS(mp) \
|
static inline int xfs_dir2_free_max_bests(struct xfs_mount *mp)
|
||||||
(((mp)->m_dirblksize - (uint)sizeof(struct xfs_dir2_free_hdr)) / \
|
{
|
||||||
(uint)sizeof(xfs_dir2_data_off_t))
|
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.
|
* Convert data space db to the corresponding free db.
|
||||||
@ -530,7 +532,7 @@ typedef struct xfs_dir2_free {
|
|||||||
static inline xfs_dir2_db_t
|
static inline xfs_dir2_db_t
|
||||||
xfs_dir2_db_to_fdb(struct xfs_mount *mp, xfs_dir2_db_t db)
|
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
|
static inline int
|
||||||
xfs_dir2_db_to_fdindex(struct xfs_mount *mp, xfs_dir2_db_t db)
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -408,7 +408,7 @@ xfs_dir2_leafn_lookup_for_addname(
|
|||||||
ASSERT(be32_to_cpu(free->hdr.magic) ==
|
ASSERT(be32_to_cpu(free->hdr.magic) ==
|
||||||
XFS_DIR2_FREE_MAGIC);
|
XFS_DIR2_FREE_MAGIC);
|
||||||
ASSERT((be32_to_cpu(free->hdr.firstdb) %
|
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(be32_to_cpu(free->hdr.firstdb) <= curdb);
|
||||||
ASSERT(curdb < be32_to_cpu(free->hdr.firstdb) +
|
ASSERT(curdb < be32_to_cpu(free->hdr.firstdb) +
|
||||||
be32_to_cpu(free->hdr.nvalid));
|
be32_to_cpu(free->hdr.nvalid));
|
||||||
@ -924,7 +924,7 @@ xfs_dir2_leafn_remove(
|
|||||||
free = fbp->data;
|
free = fbp->data;
|
||||||
ASSERT(free->hdr.magic == cpu_to_be32(XFS_DIR2_FREE_MAGIC));
|
ASSERT(free->hdr.magic == cpu_to_be32(XFS_DIR2_FREE_MAGIC));
|
||||||
ASSERT(be32_to_cpu(free->hdr.firstdb) ==
|
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)));
|
(fdb - XFS_DIR2_FREE_FIRSTDB(mp)));
|
||||||
/*
|
/*
|
||||||
* Calculate which entry we need to fix.
|
* 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.magic = cpu_to_be32(XFS_DIR2_FREE_MAGIC);
|
||||||
free->hdr.firstdb = cpu_to_be32(
|
free->hdr.firstdb = cpu_to_be32(
|
||||||
(fbno - XFS_DIR2_FREE_FIRSTDB(mp)) *
|
(fbno - XFS_DIR2_FREE_FIRSTDB(mp)) *
|
||||||
XFS_DIR2_MAX_FREE_BESTS(mp));
|
xfs_dir2_free_max_bests(mp));
|
||||||
free->hdr.nvalid = 0;
|
free->hdr.nvalid = 0;
|
||||||
free->hdr.nused = 0;
|
free->hdr.nused = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -1620,7 +1620,7 @@ xfs_dir2_node_addname_int(
|
|||||||
* freespace block, extend that table.
|
* freespace block, extend that table.
|
||||||
*/
|
*/
|
||||||
if (findex >= be32_to_cpu(free->hdr.nvalid)) {
|
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);
|
free->hdr.nvalid = cpu_to_be32(findex + 1);
|
||||||
/*
|
/*
|
||||||
* Tag new entry so nused will go up.
|
* Tag new entry so nused will go up.
|
||||||
|
Loading…
Reference in New Issue
Block a user