accel/qaic: Add AIC200 support
[drm/drm-misc.git] / fs / xfs / scrub / quotacheck.h
blob4ea5f249c97820d95e0f332c9e744a7ef0f33af4
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3 * Copyright (c) 2020-2024 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
5 */
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 */
12 int64_t bcount;
14 /* inode usage count */
15 int64_t icount;
17 /* realtime block usage count */
18 int64_t rtbcount;
20 /* Record state */
21 unsigned int flags;
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. */
37 struct xqcheck {
38 struct xfs_scrub *sc;
40 /* Shadow dquot counter data. */
41 struct xfarray *ucounts;
42 struct xfarray *gcounts;
43 struct xfarray *pcounts;
45 /* Lock protecting quotacheck count observations */
46 struct mutex lock;
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 *
59 xqcheck_counters_for(
60 struct xqcheck *xqc,
61 xfs_dqtype_t dqtype)
63 switch (dqtype) {
64 case XFS_DQTYPE_USER:
65 return xqc->ucounts;
66 case XFS_DQTYPE_GROUP:
67 return xqc->gcounts;
68 case XFS_DQTYPE_PROJ:
69 return xqc->pcounts;
72 ASSERT(0);
73 return NULL;
76 #endif /* __XFS_SCRUB_QUOTACHECK_H__ */