96ed2ae4a9
Use the shadow quota counters that live quotacheck creates to reset the incore dquot counters. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
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__ */
|