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 7 struct bch_qid { 8 u32 q[QTYP_NR]; 9 }; 10 11 enum quota_acct_mode { 12 KEY_TYPE_QUOTA_PREALLOC, 13 KEY_TYPE_QUOTA_WARN, 14 KEY_TYPE_QUOTA_NOCHECK, 15 }; 16 17 struct memquota_counter { 18 u64 v; 19 u64 hardlimit; 20 u64 softlimit; 21 s64 timer; 22 int warns; 23 int warning_issued; 24 }; 25 26 struct bch_memquota { 27 struct memquota_counter c[Q_COUNTERS]; 28 }; 29 30 typedef GENRADIX(struct bch_memquota) bch_memquota_table; 31 32 struct quota_limit { 33 u32 timelimit; 34 u32 warnlimit; 35 }; 36 37 struct 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