Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 : /* 3 : * Copyright (C) 2020-2023 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 hooks; 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 11709150 : xqcheck_counters_for( 60 : struct xqcheck *xqc, 61 : xfs_dqtype_t dqtype) 62 : { 63 11709150 : switch (dqtype) { 64 5539458 : case XFS_DQTYPE_USER: 65 5539458 : return xqc->ucounts; 66 5567807 : case XFS_DQTYPE_GROUP: 67 5567807 : return xqc->gcounts; 68 601885 : case XFS_DQTYPE_PROJ: 69 601885 : return xqc->pcounts; 70 : } 71 : 72 0 : ASSERT(0); 73 0 : return NULL; 74 : } 75 : 76 : #endif /* __XFS_SCRUB_QUOTACHECK_H__ */