]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: separate dquot repair into a separate function
authorDarrick J. Wong <darrick.wong@oracle.com>
Tue, 27 Feb 2018 04:43:17 +0000 (22:43 -0600)
committerEric Sandeen <sandeen@redhat.com>
Tue, 27 Feb 2018 04:43:17 +0000 (22:43 -0600)
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>
libxfs/xfs_dquot_buf.c
libxfs/xfs_quota_defs.h

index 4dcc3cfb1021f783cf092167f9401571387baf90..b5830d0f556e5b5c6e22ccaefaa625318d3612a6 100644 (file)
@@ -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
index d69c772271cb0d882ceabbc0b5754c94ec4d5367..7187ec93fc7630e00006bce243aadea13abd0317 100644 (file)
@@ -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__ */