Warning: This file is not a C or C++ file. It does not have highlighting.
| 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__ |
| 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__ */ |
| 77 |
Warning: This file is not a C or C++ file. It does not have highlighting.
