]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/opts.h
Update bcachefs sources to 7227ff07f14b Merge pull request #10 from modelrockettier...
[bcachefs-tools-debian] / libbcachefs / opts.h
index 126056e605435e65c1d5ad29528a76eae5cca6f2..81c660838f57ec87cc2a1298717d98ae33ed1274 100644 (file)
@@ -42,6 +42,7 @@ enum opt_type {
        BCH_OPT_BOOL,
        BCH_OPT_UINT,
        BCH_OPT_STR,
+       BCH_OPT_FN,
 };
 
 /**
@@ -73,10 +74,10 @@ enum opt_type {
        BCH_OPT(errors,                 u8,     OPT_RUNTIME,            \
                OPT_STR(bch2_error_actions),                            \
                BCH_SB_ERROR_ACTION,            BCH_ON_ERROR_RO)        \
-       BCH_OPT(metadata_replicas,      u8,     OPT_MOUNT,              \
+       BCH_OPT(metadata_replicas,      u8,     OPT_RUNTIME,            \
                OPT_UINT(1, BCH_REPLICAS_MAX),                          \
                BCH_SB_META_REPLICAS_WANT,      1)                      \
-       BCH_OPT(data_replicas,          u8,     OPT_MOUNT,              \
+       BCH_OPT(data_replicas,          u8,     OPT_RUNTIME,            \
                OPT_UINT(1, BCH_REPLICAS_MAX),                          \
                BCH_SB_DATA_REPLICAS_WANT,      1)                      \
        BCH_OPT(metadata_replicas_required, u8, OPT_MOUNT,              \
@@ -94,15 +95,30 @@ enum opt_type {
        BCH_OPT(compression,            u8,     OPT_RUNTIME,            \
                OPT_STR(bch2_compression_types),                        \
                BCH_SB_COMPRESSION_TYPE,        BCH_COMPRESSION_OPT_NONE)\
+       BCH_OPT(background_compression, u8,     OPT_RUNTIME,            \
+               OPT_STR(bch2_compression_types),                        \
+               BCH_SB_BACKGROUND_COMPRESSION_TYPE,BCH_COMPRESSION_OPT_NONE)\
        BCH_OPT(str_hash,               u8,     OPT_RUNTIME,            \
                OPT_STR(bch2_str_hash_types),                           \
                BCH_SB_STR_HASH_TYPE,           BCH_STR_HASH_SIPHASH)   \
+       BCH_OPT(foreground_target,      u16,    OPT_RUNTIME,            \
+               OPT_FN(bch2_opt_target),                                \
+               BCH_SB_FOREGROUND_TARGET,       0)                      \
+       BCH_OPT(background_target,      u16,    OPT_RUNTIME,            \
+               OPT_FN(bch2_opt_target),                                \
+               BCH_SB_BACKGROUND_TARGET,       0)                      \
+       BCH_OPT(promote_target,         u16,    OPT_RUNTIME,            \
+               OPT_FN(bch2_opt_target),                                \
+               BCH_SB_PROMOTE_TARGET,  0)                              \
        BCH_OPT(inodes_32bit,           u8,     OPT_RUNTIME,            \
                OPT_BOOL(),                                             \
                BCH_SB_INODE_32BIT,             false)                  \
-       BCH_OPT(gc_reserve_percent,     u8,     OPT_MOUNT,              \
+       BCH_OPT(gc_reserve_percent,     u8,     OPT_RUNTIME,            \
                OPT_UINT(5, 21),                                        \
                BCH_SB_GC_RESERVE,              8)                      \
+       BCH_OPT(gc_reserve_bytes,       u64,    OPT_RUNTIME,            \
+               OPT_UINT(0, U64_MAX),                                   \
+               BCH_SB_GC_RESERVE_BYTES,        0)                      \
        BCH_OPT(root_reserve_percent,   u8,     OPT_MOUNT,              \
                OPT_UINT(0, 100),                                       \
                BCH_SB_ROOT_RESERVE,            0)                      \
@@ -112,18 +128,33 @@ enum opt_type {
        BCH_OPT(acl,                    u8,     OPT_MOUNT,              \
                OPT_BOOL(),                                             \
                BCH_SB_POSIX_ACL,               true)                   \
+       BCH_OPT(usrquota,               u8,     OPT_MOUNT,              \
+               OPT_BOOL(),                                             \
+               BCH_SB_USRQUOTA,                false)                  \
+       BCH_OPT(grpquota,               u8,     OPT_MOUNT,              \
+               OPT_BOOL(),                                             \
+               BCH_SB_GRPQUOTA,                false)                  \
+       BCH_OPT(prjquota,               u8,     OPT_MOUNT,              \
+               OPT_BOOL(),                                             \
+               BCH_SB_PRJQUOTA,                false)                  \
        BCH_OPT(degraded,               u8,     OPT_MOUNT,              \
                OPT_BOOL(),                                             \
                NO_SB_OPT,                      false)                  \
+       BCH_OPT(discard,                u8,     OPT_MOUNT,              \
+               OPT_BOOL(),                                             \
+               NO_SB_OPT,                      false)                  \
        BCH_OPT(verbose_recovery,       u8,     OPT_MOUNT,              \
                OPT_BOOL(),                                             \
                NO_SB_OPT,                      false)                  \
-       BCH_OPT(journal_flush_disabled, u8,     OPT_RUNTIME,            \
+       BCH_OPT(verbose_init,           u8,     OPT_MOUNT,              \
                OPT_BOOL(),                                             \
                NO_SB_OPT,                      false)                  \
-       BCH_OPT(nofsck,                 u8,     OPT_MOUNT,              \
+       BCH_OPT(journal_flush_disabled, u8,     OPT_RUNTIME,            \
                OPT_BOOL(),                                             \
                NO_SB_OPT,                      false)                  \
+       BCH_OPT(fsck,                   u8,     OPT_MOUNT,              \
+               OPT_BOOL(),                                             \
+               NO_SB_OPT,                      true)                   \
        BCH_OPT(fix_errors,             u8,     OPT_MOUNT,              \
                OPT_BOOL(),                                             \
                NO_SB_OPT,                      false)                  \
@@ -171,7 +202,7 @@ static const struct bch_opts bch2_opts_default = {
 #define opt_defined(_opts, _name)      ((_opts)._name##_defined)
 
 #define opt_get(_opts, _name)                                          \
-       (opt_defined(_opts, _name) ? _opts._name : bch2_opts_default._name)
+       (opt_defined(_opts, _name) ? (_opts)._name : bch2_opts_default._name)
 
 #define opt_set(_opts, _name, _v)                                      \
 do {                                                                   \
@@ -193,6 +224,8 @@ enum bch_opt_id {
        bch2_opts_nr
 };
 
+struct bch_fs;
+
 struct bch_option {
        struct attribute        attr;
        void                    (*set_sb)(struct bch_sb *, u64);
@@ -206,6 +239,10 @@ struct bch_option {
        struct {
                const char * const *choices;
        };
+       struct {
+               int (*parse)(struct bch_fs *, const char *, u64 *);
+               int (*print)(struct bch_fs *, char *, size_t, u64);
+       };
        };
 
 };
@@ -219,14 +256,26 @@ void bch2_opt_set_by_id(struct bch_opts *, enum bch_opt_id, u64);
 struct bch_opts bch2_opts_from_sb(struct bch_sb *);
 
 int bch2_opt_lookup(const char *);
-int bch2_opt_parse(const struct bch_option *, const char *, u64 *);
+int bch2_opt_parse(struct bch_fs *, const struct bch_option *, const char *, u64 *);
+
+#define OPT_SHOW_FULL_LIST     (1 << 0)
+#define OPT_SHOW_MOUNT_STYLE   (1 << 1)
+
+int bch2_opt_to_text(struct bch_fs *, char *, size_t,
+                    const struct bch_option *, u64, unsigned);
+
 int bch2_parse_mount_opts(struct bch_opts *, char *);
 
 /* inode opts: */
 
 #define BCH_INODE_OPTS()                                       \
        BCH_INODE_OPT(data_checksum,                    8)      \
-       BCH_INODE_OPT(compression,                      8)
+       BCH_INODE_OPT(compression,                      8)      \
+       BCH_INODE_OPT(background_compression,           8)      \
+       BCH_INODE_OPT(data_replicas,                    8)      \
+       BCH_INODE_OPT(promote_target,                   16)     \
+       BCH_INODE_OPT(foreground_target,                16)     \
+       BCH_INODE_OPT(background_target,                16)
 
 struct bch_io_opts {
 #define BCH_INODE_OPT(_name, _bits)    unsigned _name##_defined:1;