]> Git Repo - J-linux.git/blob - fs/xfs/scrub/quotacheck.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / fs / xfs / scrub / quotacheck.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (c) 2020-2024 Oracle.  All Rights Reserved.
4  * Author: Darrick J. Wong <[email protected]>
5  */
6 #ifndef __XFS_SCRUB_QUOTACHECK_H__
7 #define __XFS_SCRUB_QUOTACHECK_H__
8
9 /* Quota counters for live quotacheck. */
10 struct xqcheck_dquot {
11         /* block usage count */
12         int64_t                 bcount;
13
14         /* inode usage count */
15         int64_t                 icount;
16
17         /* realtime block usage count */
18         int64_t                 rtbcount;
19
20         /* Record state */
21         unsigned int            flags;
22 };
23
24 /*
25  * This incore dquot record has been written at least once.  We never want to
26  * store an xqcheck_dquot that looks uninitialized.
27  */
28 #define XQCHECK_DQUOT_WRITTEN           (1U << 0)
29
30 /* Already checked this dquot. */
31 #define XQCHECK_DQUOT_COMPARE_SCANNED   (1U << 1)
32
33 /* Already repaired this dquot. */
34 #define XQCHECK_DQUOT_REPAIR_SCANNED    (1U << 2)
35
36 /* Live quotacheck control structure. */
37 struct xqcheck {
38         struct xfs_scrub        *sc;
39
40         /* Shadow dquot counter data. */
41         struct xfarray          *ucounts;
42         struct xfarray          *gcounts;
43         struct xfarray          *pcounts;
44
45         /* Lock protecting quotacheck count observations */
46         struct mutex            lock;
47
48         struct xchk_iscan       iscan;
49
50         /* Hooks into the quota code. */
51         struct xfs_dqtrx_hook   qhook;
52
53         /* Shadow quota delta tracking structure. */
54         struct rhashtable       shadow_dquot_acct;
55 };
56
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)
62 {
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;
70         }
71
72         ASSERT(0);
73         return NULL;
74 }
75
76 #endif /* __XFS_SCRUB_QUOTACHECK_H__ */
This page took 0.029537 seconds and 4 git commands to generate.