]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - c_src/libbcachefs/quota_types.h
move Rust sources to top level, C sources into c_src
[bcachefs-tools-debian] / c_src / libbcachefs / quota_types.h
diff --git a/c_src/libbcachefs/quota_types.h b/c_src/libbcachefs/quota_types.h
new file mode 100644 (file)
index 0000000..6a13608
--- /dev/null
@@ -0,0 +1,43 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _BCACHEFS_QUOTA_TYPES_H
+#define _BCACHEFS_QUOTA_TYPES_H
+
+#include <linux/generic-radix-tree.h>
+
+struct bch_qid {
+       u32             q[QTYP_NR];
+};
+
+enum quota_acct_mode {
+       KEY_TYPE_QUOTA_PREALLOC,
+       KEY_TYPE_QUOTA_WARN,
+       KEY_TYPE_QUOTA_NOCHECK,
+};
+
+struct memquota_counter {
+       u64                             v;
+       u64                             hardlimit;
+       u64                             softlimit;
+       s64                             timer;
+       int                             warns;
+       int                             warning_issued;
+};
+
+struct bch_memquota {
+       struct memquota_counter         c[Q_COUNTERS];
+};
+
+typedef GENRADIX(struct bch_memquota)  bch_memquota_table;
+
+struct quota_limit {
+       u32                             timelimit;
+       u32                             warnlimit;
+};
+
+struct bch_memquota_type {
+       struct quota_limit              limits[Q_COUNTERS];
+       bch_memquota_table              table;
+       struct mutex                    lock;
+};
+
+#endif /* _BCACHEFS_QUOTA_TYPES_H */