1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * Copyright (c) 2020-2024 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
6 #ifndef __XFS_SCRUB_QUOTACHECK_H__
7 #define __XFS_SCRUB_QUOTACHECK_H__
9 /* Quota counters for live quotacheck. */
10 struct xqcheck_dquot
{
11 /* block usage count */
14 /* inode usage count */
17 /* realtime block usage count */
25 * This incore dquot record has been written at least once. We never want to
26 * store an xqcheck_dquot that looks uninitialized.
28 #define XQCHECK_DQUOT_WRITTEN (1U << 0)
30 /* Already checked this dquot. */
31 #define XQCHECK_DQUOT_COMPARE_SCANNED (1U << 1)
33 /* Already repaired this dquot. */
34 #define XQCHECK_DQUOT_REPAIR_SCANNED (1U << 2)
36 /* Live quotacheck control structure. */
40 /* Shadow dquot counter data. */
41 struct xfarray
*ucounts
;
42 struct xfarray
*gcounts
;
43 struct xfarray
*pcounts
;
45 /* Lock protecting quotacheck count observations */
48 struct xchk_iscan iscan
;
50 /* Hooks into the quota code. */
51 struct xfs_dqtrx_hook qhook
;
53 /* Shadow quota delta tracking structure. */
54 struct rhashtable shadow_dquot_acct
;
57 /* Return the incore counter array for a given quota type. */
58 static inline struct xfarray
*
66 case XFS_DQTYPE_GROUP
:
76 #endif /* __XFS_SCRUB_QUOTACHECK_H__ */