brintos

brintos / linux-shallow public Read only

0
0
Text · 1.6 KiB · 4ea5f24 Raw
77 lines · c
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. */10struct 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 to26 * 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. */37struct 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. */58static inline struct xfarray *59xqcheck_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