1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _BCACHEFS_QUOTA_TYPES_H
3#define _BCACHEFS_QUOTA_TYPES_H
4
5#include <linux/generic-radix-tree.h>
6
7struct bch_qid {
8	u32		q[QTYP_NR];
9};
10
11enum quota_acct_mode {
12	KEY_TYPE_QUOTA_PREALLOC,
13	KEY_TYPE_QUOTA_WARN,
14	KEY_TYPE_QUOTA_NOCHECK,
15};
16
17struct memquota_counter {
18	u64				v;
19	u64				hardlimit;
20	u64				softlimit;
21	s64				timer;
22	int				warns;
23	int				warning_issued;
24};
25
26struct bch_memquota {
27	struct memquota_counter		c[Q_COUNTERS];
28};
29
30typedef GENRADIX(struct bch_memquota)	bch_memquota_table;
31
32struct quota_limit {
33	u32				timelimit;
34	u32				warnlimit;
35};
36
37struct bch_memquota_type {
38	struct quota_limit		limits[Q_COUNTERS];
39	bch_memquota_table		table;
40	struct mutex			lock;
41};
42
43#endif /* _BCACHEFS_QUOTA_TYPES_H */
44