diff options
Diffstat (limited to 'libbcache/opts.h')
-rw-r--r-- | libbcache/opts.h | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/libbcache/opts.h b/libbcache/opts.h deleted file mode 100644 index 253b7399..00000000 --- a/libbcache/opts.h +++ /dev/null @@ -1,168 +0,0 @@ -#ifndef _BCACHE_OPTS_H -#define _BCACHE_OPTS_H - -#include <linux/bcache.h> -#include <linux/bug.h> -#include <linux/log2.h> -#include <linux/string.h> - -extern const char * const bch_error_actions[]; -extern const char * const bch_csum_types[]; -extern const char * const bch_compression_types[]; -extern const char * const bch_str_hash_types[]; -extern const char * const bch_cache_replacement_policies[]; -extern const char * const bch_cache_modes[]; -extern const char * const bch_dev_state[]; - -/* - * Mount options; we also store defaults in the superblock. - * - * Also exposed via sysfs: if an option is writeable, and it's also stored in - * the superblock, changing it via sysfs (currently? might change this) also - * updates the superblock. - * - * We store options as signed integers, where -1 means undefined. This means we - * can pass the mount options to bch_fs_alloc() as a whole struct, and then only - * apply the options from that struct that are defined. - */ - -/* dummy option, for options that aren't stored in the superblock */ -LE64_BITMASK(NO_SB_OPT, struct bch_sb, flags[0], 0, 0); - -/** - * BCH_OPT(name, mode, sb_opt, type, ...) - * - * @name - name of mount option, sysfs attribute, and struct bch_opts - * member - * - * @mode - sysfs attr permissions - * - * @sb_option - name of corresponding superblock option - * - * @type - one of OPT_BOOL, OPT_UINT, OPT_STR - */ - -enum opt_type { - BCH_OPT_BOOL, - BCH_OPT_UINT, - BCH_OPT_STR, -}; - -#define BCH_VISIBLE_OPTS() \ - BCH_OPT(errors, 0644, BCH_SB_ERROR_ACTION, \ - s8, OPT_STR(bch_error_actions)) \ - BCH_OPT(metadata_replicas, 0444, BCH_SB_META_REPLICAS_WANT,\ - s8, OPT_UINT(1, BCH_REPLICAS_MAX)) \ - BCH_OPT(data_replicas, 0444, BCH_SB_DATA_REPLICAS_WANT,\ - s8, OPT_UINT(1, BCH_REPLICAS_MAX)) \ - BCH_OPT(metadata_replicas_required, 0444, BCH_SB_META_REPLICAS_REQ,\ - s8, OPT_UINT(1, BCH_REPLICAS_MAX)) \ - BCH_OPT(data_replicas_required, 0444, BCH_SB_DATA_REPLICAS_REQ,\ - s8, OPT_UINT(1, BCH_REPLICAS_MAX)) \ - BCH_OPT(metadata_checksum, 0644, BCH_SB_META_CSUM_TYPE, \ - s8, OPT_STR(bch_csum_types)) \ - BCH_OPT(data_checksum, 0644, BCH_SB_DATA_CSUM_TYPE, \ - s8, OPT_STR(bch_csum_types)) \ - BCH_OPT(compression, 0644, BCH_SB_COMPRESSION_TYPE,\ - s8, OPT_STR(bch_compression_types)) \ - BCH_OPT(str_hash, 0644, BCH_SB_STR_HASH_TYPE, \ - s8, OPT_STR(bch_str_hash_types)) \ - BCH_OPT(inodes_32bit, 0644, BCH_SB_INODE_32BIT, \ - s8, OPT_BOOL()) \ - BCH_OPT(gc_reserve_percent, 0444, BCH_SB_GC_RESERVE, \ - s8, OPT_UINT(5, 21)) \ - BCH_OPT(root_reserve_percent, 0444, BCH_SB_ROOT_RESERVE, \ - s8, OPT_UINT(0, 100)) \ - BCH_OPT(wide_macs, 0644, BCH_SB_128_BIT_MACS, \ - s8, OPT_BOOL()) \ - BCH_OPT(verbose_recovery, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(posix_acl, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(journal_flush_disabled, 0644, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(nofsck, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(fix_errors, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(nochanges, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(noreplay, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(norecovery, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(noexcl, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(sb, 0444, NO_SB_OPT, \ - s64, OPT_UINT(0, S64_MAX)) \ - -#define BCH_OPTS() \ - BCH_OPT(read_only, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_OPT(nostart, 0444, NO_SB_OPT, \ - s8, OPT_BOOL()) \ - BCH_VISIBLE_OPTS() - -struct bch_opts { -#define BCH_OPT(_name, _mode, _sb_opt, _bits, ...) \ - _bits _name; - - BCH_OPTS() -#undef BCH_OPT -}; - -enum bch_opt_id { -#define BCH_OPT(_name, ...) \ - Opt_##_name, - - BCH_VISIBLE_OPTS() -#undef BCH_OPT -}; - -struct bch_option { - const char *name; - void (*set_sb)(struct bch_sb *, u64); - enum opt_type type; - - union { - struct { - u64 min, max; - }; - struct { - const char * const *choices; - }; - }; - -}; - -extern const struct bch_option bch_opt_table[]; - -static inline struct bch_opts bch_opts_empty(void) -{ - struct bch_opts ret; - - memset(&ret, 255, sizeof(ret)); - return ret; -} - -static inline void bch_opts_apply(struct bch_opts *dst, struct bch_opts src) -{ -#define BCH_OPT(_name, ...) \ - if (src._name >= 0) \ - dst->_name = src._name; - - BCH_OPTS() -#undef BCH_OPT -} - -#define opt_defined(_opt) ((_opt) >= 0) - -void bch_opt_set(struct bch_opts *, enum bch_opt_id, u64); -struct bch_opts bch_sb_opts(struct bch_sb *); - -int bch_parse_mount_opts(struct bch_opts *, char *); -enum bch_opt_id bch_parse_sysfs_opt(const char *, const char *, u64 *); - -ssize_t bch_opt_show(struct bch_opts *, const char *, char *, size_t); - -#endif /* _BCACHE_OPTS_H */ |