]> git.sesse.net Git - bcachefs-tools-debian/blob - libbcachefs.h
More cmd_migrate improvements
[bcachefs-tools-debian] / libbcachefs.h
1 #ifndef _LIBBCACHE_H
2 #define _LIBBCACHE_H
3
4 #include <linux/uuid.h>
5 #include <stdbool.h>
6
7 #include "bcachefs_format.h"
8 #include "tools-util.h"
9 #include "vstructs.h"
10
11 struct format_opts {
12         char            *label;
13         uuid_le         uuid;
14
15         unsigned        on_error_action;
16         unsigned        max_journal_entry_size; /* will be removed */
17
18         unsigned        block_size;
19         unsigned        btree_node_size;
20
21         unsigned        meta_replicas;
22         unsigned        data_replicas;
23
24         unsigned        meta_replicas_required;
25         unsigned        data_replicas_required;
26
27         unsigned        meta_csum_type;
28         unsigned        data_csum_type;
29         unsigned        compression_type;
30
31         bool            encrypted;
32         char            *passphrase;
33 };
34
35 static inline struct format_opts format_opts_default()
36 {
37         return (struct format_opts) {
38                 .on_error_action        = BCH_ON_ERROR_RO,
39                 .meta_csum_type         = BCH_CSUM_CRC32C,
40                 .data_csum_type         = BCH_CSUM_CRC32C,
41                 .meta_replicas          = 1,
42                 .data_replicas          = 1,
43                 .meta_replicas_required = 1,
44                 .data_replicas_required = 1,
45         };
46 }
47
48 struct dev_opts {
49         int             fd;
50         char            *path;
51         u64             size; /* 512 byte sectors */
52         unsigned        bucket_size;
53         unsigned        tier;
54         bool            discard;
55
56         u64             nbuckets;
57
58         u64             sb_offset;
59         u64             sb_end;
60 };
61
62 void bch2_pick_bucket_size(struct format_opts, struct dev_opts *);
63 struct bch_sb *bch2_format(struct format_opts, struct dev_opts *, size_t);
64
65 void bch2_super_write(int, struct bch_sb *);
66 struct bch_sb *__bch2_super_read(int, u64);
67 struct bch_sb *bch2_super_read(const char *);
68
69 void bch2_super_print(struct bch_sb *, int);
70
71 #endif /* _LIBBCACHE_H */