diff options
author | Darrick J. Wong <darrick.wong@oracle.com> | 2018-02-26 22:43:17 -0600 |
---|---|---|
committer | Eric Sandeen <sandeen@redhat.com> | 2018-02-26 22:43:17 -0600 |
commit | 055b84e39cabe4e2242b37bd2554908e10dd9d06 (patch) | |
tree | 69eb9e94dbd358df6414e5f4db067420560cc91a | |
parent | 95d9582b620a1e91ef4cf532597b9edbfb8ea793 (diff) | |
download | xfsprogs-dev-055b84e39cabe4e2242b37bd2554908e10dd9d06.tar.gz |
xfs: separate dquot repair into a separate function
Source kernel commit: eeea79802871fef82a8ca6ab1220515855e5cdcc
Move the dquot repair code into a separate function and remove
XFS_QMOPT_DQREPAIR in favor of calling the helper directly. Remove
other dead code because quotacheck is the only caller of DQREPAIR.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
-rw-r--r-- | libxfs/xfs_dquot_buf.c | 22 | ||||
-rw-r--r-- | libxfs/xfs_quota_defs.h | 3 |
2 files changed, 17 insertions, 8 deletions
diff --git a/libxfs/xfs_dquot_buf.c b/libxfs/xfs_dquot_buf.c index 4dcc3cfb10..b5830d0f55 100644 --- a/libxfs/xfs_dquot_buf.c +++ b/libxfs/xfs_dquot_buf.c @@ -49,7 +49,6 @@ xfs_dqcheck( uint flags, const char *str) { - xfs_dqblk_t *d = (xfs_dqblk_t *)ddq; int errs = 0; /* @@ -137,17 +136,26 @@ xfs_dqcheck( } } - if (!errs || !(flags & XFS_QMOPT_DQREPAIR)) - return errs; + return errs; +} + +/* + * Do some primitive error checking on ondisk dquot data structures. + */ +int +xfs_dquot_repair( + struct xfs_mount *mp, + struct xfs_disk_dquot *ddq, + xfs_dqid_t id, + uint type) +{ + struct xfs_dqblk *d = (struct xfs_dqblk *)ddq; - if (flags & XFS_QMOPT_DOWARN) - xfs_notice(mp, "Re-initializing dquot ID 0x%x", id); /* * Typically, a repair is only requested by quotacheck. */ ASSERT(id != -1); - ASSERT(flags & XFS_QMOPT_DQREPAIR); memset(d, 0, sizeof(xfs_dqblk_t)); d->dd_diskdq.d_magic = cpu_to_be16(XFS_DQUOT_MAGIC); @@ -161,7 +169,7 @@ xfs_dqcheck( XFS_DQUOT_CRC_OFF); } - return errs; + return 0; } STATIC bool diff --git a/libxfs/xfs_quota_defs.h b/libxfs/xfs_quota_defs.h index d69c772271..7187ec93fc 100644 --- a/libxfs/xfs_quota_defs.h +++ b/libxfs/xfs_quota_defs.h @@ -113,7 +113,6 @@ typedef uint16_t xfs_qwarncnt_t; #define XFS_QMOPT_FORCE_RES 0x0000010 /* ignore quota limits */ #define XFS_QMOPT_SBVERSION 0x0000040 /* change superblock version num */ #define XFS_QMOPT_DOWARN 0x0000400 /* increase warning cnt if needed */ -#define XFS_QMOPT_DQREPAIR 0x0001000 /* repair dquot if damaged */ #define XFS_QMOPT_GQUOTA 0x0002000 /* group dquot requested */ #define XFS_QMOPT_ENOSPC 0x0004000 /* enospc instead of edquot (prj) */ #define XFS_QMOPT_DQNEXT 0x0008000 /* return next dquot >= this ID */ @@ -156,5 +155,7 @@ typedef uint16_t xfs_qwarncnt_t; extern int xfs_dqcheck(struct xfs_mount *mp, xfs_disk_dquot_t *ddq, xfs_dqid_t id, uint type, uint flags, const char *str); extern int xfs_calc_dquots_per_chunk(unsigned int nbblks); +extern int xfs_dquot_repair(struct xfs_mount *mp, struct xfs_disk_dquot *ddq, + xfs_dqid_t id, uint type); #endif /* __XFS_QUOTA_H__ */ |