On Wednesday 15 July 2020 7:21:33 AM IST Darrick xJ. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > Move the dquot cluster size #define to xfs_format.h. It is an important > part of the ondisk format because the ondisk dquot record size is not an > even power of two, which means that the buffer size we use is > significant here because the kernel leaves slack space at the end of the > buffer to avoid having to deal with a dquot record crossing a block > boundary. > > This is also an excuse to fix one of the longstanding discrepancies > between kernel and userspace libxfs headers. The changes look good to me. Reviewed-by: Chandan Babu R <chandanrlinux@xxxxxxxxx> > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > Reviewed-by: Christoph Hellwig <hch@xxxxxx> > --- > fs/xfs/libxfs/xfs_format.h | 16 ++++++++++++++++ > fs/xfs/xfs_qm.h | 11 ----------- > 2 files changed, 16 insertions(+), 11 deletions(-) > > > diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h > index 79fbabeb476c..76d34b77031a 100644 > --- a/fs/xfs/libxfs/xfs_format.h > +++ b/fs/xfs/libxfs/xfs_format.h > @@ -1209,6 +1209,22 @@ typedef struct xfs_dqblk { > > #define XFS_DQUOT_CRC_OFF offsetof(struct xfs_dqblk, dd_crc) > > +/* > + * This defines the unit of allocation of dquots. > + * > + * Currently, it is just one file system block, and a 4K blk contains 30 > + * (136 * 30 = 4080) dquots. It's probably not worth trying to make > + * this more dynamic. > + * > + * However, if this number is changed, we have to make sure that we don't > + * implicitly assume that we do allocations in chunks of a single filesystem > + * block in the dquot/xqm code. > + * > + * This is part of the ondisk format because the structure size is not a power > + * of two, which leaves slack at the end of the disk block. > + */ > +#define XFS_DQUOT_CLUSTER_SIZE_FSB (xfs_filblks_t)1 > + > /* > * Remote symlink format and access functions. > */ > diff --git a/fs/xfs/xfs_qm.h b/fs/xfs/xfs_qm.h > index 27789272da95..c5d0716b378e 100644 > --- a/fs/xfs/xfs_qm.h > +++ b/fs/xfs/xfs_qm.h > @@ -30,17 +30,6 @@ extern struct kmem_zone *xfs_qm_dqtrxzone; > !dqp->q_core.d_rtbcount && \ > !dqp->q_core.d_icount) > > -/* > - * This defines the unit of allocation of dquots. > - * Currently, it is just one file system block, and a 4K blk contains 30 > - * (136 * 30 = 4080) dquots. It's probably not worth trying to make > - * this more dynamic. > - * XXXsup However, if this number is changed, we have to make sure that we don't > - * implicitly assume that we do allocations in chunks of a single filesystem > - * block in the dquot/xqm code. > - */ > -#define XFS_DQUOT_CLUSTER_SIZE_FSB (xfs_filblks_t)1 > - > /* Defaults for each quota type: time limits, warn limits, usage limits */ > struct xfs_def_quota { > time64_t btimelimit; /* limit for blks timer */ > > -- chandan