]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: pass full xfs_dqblk to repair during quotacheck
authorEric Sandeen <sandeen@sandeen.net>
Thu, 28 Jun 2018 20:11:54 +0000 (15:11 -0500)
committerEric Sandeen <sandeen@redhat.com>
Thu, 28 Jun 2018 20:11:54 +0000 (15:11 -0500)
Source kernel commit: 48fa1db87f730da1aed2d3df0cc8c33c7c133b4b

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: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/libxfs_api_defs.h
libxfs/xfs_dquot_buf.c
libxfs/xfs_quota_defs.h
repair/dinode.c

index 63bf27eac8fb0acdbb1d6e9e1fee661f149969cf..a98483bf4cb54302422c787a76d481635a999bd9 100644 (file)
 
 #define xfs_calc_dquots_per_chunk      libxfs_calc_dquots_per_chunk
 #define xfs_dquot_verify               libxfs_dquot_verify
-#define xfs_dquot_repair               libxfs_dquot_repair
+#define xfs_dqblk_repair               libxfs_dqblk_repair
 
 #define xfs_symlink_blocks             libxfs_symlink_blocks
 #define xfs_symlink_hdr_ok             libxfs_symlink_hdr_ok
index 50da0191d88d764a0210c69dc4a7d938e0882f86..414fbc7bb5568d1f5632186980084d74cf859693 100644 (file)
@@ -102,29 +102,26 @@ xfs_dquot_verify(
  * Do some primitive error checking on ondisk dquot data structures.
  */
 int
-xfs_dquot_repair(
+xfs_dqblk_repair(
        struct xfs_mount        *mp,
-       struct xfs_disk_dquot   *ddq,
+       struct xfs_dqblk        *dqb,
        xfs_dqid_t              id,
        uint                    type)
 {
-       struct xfs_dqblk        *d = (struct xfs_dqblk *)ddq;
-
-
        /*
         * Typically, a repair is only requested by quotacheck.
         */
        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);
-       d->dd_diskdq.d_version = XFS_DQUOT_VERSION;
-       d->dd_diskdq.d_flags = type;
-       d->dd_diskdq.d_id = cpu_to_be32(id);
+       dqb->dd_diskdq.d_magic = cpu_to_be16(XFS_DQUOT_MAGIC);
+       dqb->dd_diskdq.d_version = XFS_DQUOT_VERSION;
+       dqb->dd_diskdq.d_flags = type;
+       dqb->dd_diskdq.d_id = cpu_to_be32(id);
 
        if (xfs_sb_version_hascrc(&mp->m_sb)) {
-               uuid_copy(&d->dd_uuid, &mp->m_sb.sb_meta_uuid);
-               xfs_update_cksum((char *)d, sizeof(struct xfs_dqblk),
+               uuid_copy(&dqb->dd_uuid, &mp->m_sb.sb_meta_uuid);
+               xfs_update_cksum((char *)dqb, sizeof(struct xfs_dqblk),
                                 XFS_DQUOT_CRC_OFF);
        }
 
index eeccffec30e45436ef5e4e8cce5ec63c4d8bc65b..9b5c3e4548185cb013af6d3f5cc3066cab47956c 100644 (file)
@@ -156,7 +156,7 @@ typedef uint16_t    xfs_qwarncnt_t;
 extern xfs_failaddr_t xfs_dquot_verify(struct xfs_mount *mp,
                struct xfs_disk_dquot *ddq, xfs_dqid_t id, uint type);
 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);
 
 #endif /* __XFS_QUOTA_H__ */
index de89c0f40c7912848c05c86f70270f28463fed0b..d36338f6943be9d97af6f2906ed988b3fb2801d8 100644 (file)
@@ -1411,7 +1411,7 @@ bad:
                                        do_warn(_("Would correct.\n"));
                                else {
                                        do_warn(_("Corrected.\n"));
-                                       libxfs_dquot_repair(mp, &dqb->dd_diskdq,
+                                       libxfs_dqblk_repair(mp, dqb,
                                                            dqid, quota_type);
                                        writebuf = 1;
                                }