77 lines
1.6 KiB
C
77 lines
1.6 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||
|
/*
|
||
|
* Copyright (c) 2020-2024 Oracle. All Rights Reserved.
|
||
|
* Author: Darrick J. Wong <djwong@kernel.org>
|
||
|
*/
|
||
|
#ifndef __XFS_SCRUB_QUOTACHECK_H__
|
||
|
#define __XFS_SCRUB_QUOTACHECK_H__
|
||
|
|
||
|
/* Quota counters for live quotacheck. */
|
||
|
struct xqcheck_dquot {
|
||
|
/* block usage count */
|
||
|
int64_t bcount;
|
||
|
|
||
|
/* inode usage count */
|
||
|
int64_t icount;
|
||
|
|
||
|
/* realtime block usage count */
|
||
|
int64_t rtbcount;
|
||
|
|
||
|
/* Record state */
|
||
|
unsigned int flags;
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* This incore dquot record has been written at least once. We never want to
|
||
|
* store an xqcheck_dquot that looks uninitialized.
|
||
|
*/
|
||
|
#define XQCHECK_DQUOT_WRITTEN (1U << 0)
|
||
|
|
||
|
/* Already checked this dquot. */
|
||
|
#define XQCHECK_DQUOT_COMPARE_SCANNED (1U << 1)
|
||
|
|
||
|
/* Already repaired this dquot. */
|
||
|
#define XQCHECK_DQUOT_REPAIR_SCANNED (1U << 2)
|
||
|
|
||
|
/* Live quotacheck control structure. */
|
||
|
struct xqcheck {
|
||
|
struct xfs_scrub *sc;
|
||
|
|
||
|
/* Shadow dquot counter data. */
|
||
|
struct xfarray *ucounts;
|
||
|
struct xfarray *gcounts;
|
||
|
struct xfarray *pcounts;
|
||
|
|
||
|
/* Lock protecting quotacheck count observations */
|
||
|
struct mutex lock;
|
||
|
|
||
|
struct xchk_iscan iscan;
|
||
|
|
||
|
/* Hooks into the quota code. */
|
||
|
struct xfs_dqtrx_hook qhook;
|
||
|
|
||
|
/* Shadow quota delta tracking structure. */
|
||
|
struct rhashtable shadow_dquot_acct;
|
||
|
};
|
||
|
|
||
|
/* Return the incore counter array for a given quota type. */
|
||
|
static inline struct xfarray *
|
||
|
xqcheck_counters_for(
|
||
|
struct xqcheck *xqc,
|
||
|
xfs_dqtype_t dqtype)
|
||
|
{
|
||
|
switch (dqtype) {
|
||
|
case XFS_DQTYPE_USER:
|
||
|
return xqc->ucounts;
|
||
|
case XFS_DQTYPE_GROUP:
|
||
|
return xqc->gcounts;
|
||
|
case XFS_DQTYPE_PROJ:
|
||
|
return xqc->pcounts;
|
||
|
}
|
||
|
|
||
|
ASSERT(0);
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
#endif /* __XFS_SCRUB_QUOTACHECK_H__ */
|