summaryrefslogtreecommitdiff
path: root/libbcachefs.h
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs.h')
-rw-r--r--libbcachefs.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/libbcachefs.h b/libbcachefs.h
new file mode 100644
index 00000000..f9cf8fe4
--- /dev/null
+++ b/libbcachefs.h
@@ -0,0 +1,80 @@
+#ifndef _LIBBCACHE_H
+#define _LIBBCACHE_H
+
+#include <linux/uuid.h>
+#include <stdbool.h>
+
+#include "bcachefs_format.h"
+#include "tools-util.h"
+#include "vstructs.h"
+
+struct cache_sb;
+
+enum fsck_err_opts {
+ FSCK_ERR_ASK,
+ FSCK_ERR_YES,
+ FSCK_ERR_NO,
+};
+
+extern enum fsck_err_opts fsck_err_opt;
+
+struct format_opts {
+ char *label;
+ uuid_le uuid;
+
+ unsigned on_error_action;
+ unsigned max_journal_entry_size; /* will be removed */
+
+ unsigned block_size;
+ unsigned btree_node_size;
+
+ unsigned meta_replicas;
+ unsigned data_replicas;
+
+ unsigned meta_replicas_required;
+ unsigned data_replicas_required;
+
+ unsigned meta_csum_type;
+ unsigned data_csum_type;
+ unsigned compression_type;
+
+ bool encrypted;
+ char *passphrase;
+};
+
+static inline struct format_opts format_opts_default()
+{
+ return (struct format_opts) {
+ .on_error_action = BCH_ON_ERROR_RO,
+ .meta_csum_type = BCH_CSUM_CRC32C,
+ .data_csum_type = BCH_CSUM_CRC32C,
+ .meta_replicas = 1,
+ .data_replicas = 1,
+ .meta_replicas_required = 1,
+ .data_replicas_required = 1,
+ };
+}
+
+struct dev_opts {
+ int fd;
+ char *path;
+ u64 size; /* 512 byte sectors */
+ unsigned bucket_size;
+ unsigned tier;
+ bool discard;
+
+ u64 nbuckets;
+
+ u64 sb_offset;
+ u64 sb_end;
+};
+
+struct bch_sb *bcache_format(struct format_opts, struct dev_opts *, size_t);
+
+void bcache_super_write(int, struct bch_sb *);
+struct bch_sb *__bcache_super_read(int, u64);
+struct bch_sb *bcache_super_read(const char *);
+
+void bcache_super_print(struct bch_sb *, int);
+
+#endif /* _LIBBCACHE_H */