Commit 48fa1db8 authored by Eric Sandeen's avatar Eric Sandeen Committed by Darrick J. Wong

xfs: pass full xfs_dqblk to repair during quotacheck

It's a bit dicey to pass in the smaller xfs_disk_dquot and then cast it to
something larger; pass in the full xfs_dqblk so we know the caller has sent
us the right thing.  Rename the function to xfs_dqblk_repair for
clarity.
Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 57ab3245
...@@ -104,29 +104,26 @@ xfs_dquot_verify( ...@@ -104,29 +104,26 @@ xfs_dquot_verify(
* Do some primitive error checking on ondisk dquot data structures. * Do some primitive error checking on ondisk dquot data structures.
*/ */
int int
xfs_dquot_repair( xfs_dqblk_repair(
struct xfs_mount *mp, struct xfs_mount *mp,
struct xfs_disk_dquot *ddq, struct xfs_dqblk *dqb,
xfs_dqid_t id, xfs_dqid_t id,
uint type) uint type)
{ {
struct xfs_dqblk *d = (struct xfs_dqblk *)ddq;
/* /*
* Typically, a repair is only requested by quotacheck. * Typically, a repair is only requested by quotacheck.
*/ */
ASSERT(id != -1); ASSERT(id != -1);
memset(d, 0, sizeof(xfs_dqblk_t)); memset(dqb, 0, sizeof(xfs_dqblk_t));
d->dd_diskdq.d_magic = cpu_to_be16(XFS_DQUOT_MAGIC); dqb->dd_diskdq.d_magic = cpu_to_be16(XFS_DQUOT_MAGIC);
d->dd_diskdq.d_version = XFS_DQUOT_VERSION; dqb->dd_diskdq.d_version = XFS_DQUOT_VERSION;
d->dd_diskdq.d_flags = type; dqb->dd_diskdq.d_flags = type;
d->dd_diskdq.d_id = cpu_to_be32(id); dqb->dd_diskdq.d_id = cpu_to_be32(id);
if (xfs_sb_version_hascrc(&mp->m_sb)) { if (xfs_sb_version_hascrc(&mp->m_sb)) {
uuid_copy(&d->dd_uuid, &mp->m_sb.sb_meta_uuid); uuid_copy(&dqb->dd_uuid, &mp->m_sb.sb_meta_uuid);
xfs_update_cksum((char *)d, sizeof(struct xfs_dqblk), xfs_update_cksum((char *)dqb, sizeof(struct xfs_dqblk),
XFS_DQUOT_CRC_OFF); XFS_DQUOT_CRC_OFF);
} }
......
...@@ -154,7 +154,7 @@ typedef uint16_t xfs_qwarncnt_t; ...@@ -154,7 +154,7 @@ typedef uint16_t xfs_qwarncnt_t;
extern xfs_failaddr_t xfs_dquot_verify(struct xfs_mount *mp, extern xfs_failaddr_t xfs_dquot_verify(struct xfs_mount *mp,
struct xfs_disk_dquot *ddq, xfs_dqid_t id, uint type); struct xfs_disk_dquot *ddq, xfs_dqid_t id, uint type);
extern int xfs_calc_dquots_per_chunk(unsigned int nbblks); extern int xfs_calc_dquots_per_chunk(unsigned int nbblks);
extern int xfs_dquot_repair(struct xfs_mount *mp, struct xfs_disk_dquot *ddq, extern int xfs_dqblk_repair(struct xfs_mount *mp, struct xfs_dqblk *dqb,
xfs_dqid_t id, uint type); xfs_dqid_t id, uint type);
#endif /* __XFS_QUOTA_H__ */ #endif /* __XFS_QUOTA_H__ */
...@@ -867,7 +867,7 @@ xfs_qm_reset_dqcounts( ...@@ -867,7 +867,7 @@ xfs_qm_reset_dqcounts(
*/ */
fa = xfs_dquot_verify(mp, ddq, id + j, type); fa = xfs_dquot_verify(mp, ddq, id + j, type);
if (fa) if (fa)
xfs_dquot_repair(mp, ddq, id + j, type); xfs_dqblk_repair(mp, &dqb[j], id + j, type);
/* /*
* Reset type in case we are reusing group quota file for * Reset type in case we are reusing group quota file for
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment