diff options
-rw-r--r-- | fs/bcachefs/bcachefs_format.h | 10 | ||||
-rw-r--r-- | fs/bcachefs/move.c | 3 | ||||
-rw-r--r-- | fs/bcachefs/opts.h | 7 |
3 files changed, 16 insertions, 4 deletions
diff --git a/fs/bcachefs/bcachefs_format.h b/fs/bcachefs/bcachefs_format.h index 5e406275d5f6..f70977dbf4b9 100644 --- a/fs/bcachefs/bcachefs_format.h +++ b/fs/bcachefs/bcachefs_format.h @@ -608,12 +608,16 @@ BKEY_VAL_TYPE(inode_generation, BCH_INODE_GENERATION); BCH_INODE_FIELD(bi_dev, 32) \ BCH_INODE_FIELD(bi_data_checksum, 8) \ BCH_INODE_FIELD(bi_compression, 8) \ - BCH_INODE_FIELD(bi_project, 32) + BCH_INODE_FIELD(bi_project, 32) \ + BCH_INODE_FIELD(bi_background_compression, 8) \ + BCH_INODE_FIELD(bi_data_replicas, 8) #define BCH_INODE_FIELDS_INHERIT() \ BCH_INODE_FIELD(bi_data_checksum) \ BCH_INODE_FIELD(bi_compression) \ - BCH_INODE_FIELD(bi_project) + BCH_INODE_FIELD(bi_project) \ + BCH_INODE_FIELD(bi_background_compression) \ + BCH_INODE_FIELD(bi_data_replicas) enum { /* @@ -1077,6 +1081,8 @@ LE64_BITMASK(BCH_SB_ENCODED_EXTENT_MAX_BITS, LE64_BITMASK(BCH_SB_META_REPLICAS_REQ, struct bch_sb, flags[1], 20, 24); LE64_BITMASK(BCH_SB_DATA_REPLICAS_REQ, struct bch_sb, flags[1], 24, 28); +LE64_BITMASK(BCH_SB_BACKGROUND_COMPRESSION_TYPE, + struct bch_sb, flags[1], 28, 32); /* Features: */ enum bch_sb_features { diff --git a/fs/bcachefs/move.c b/fs/bcachefs/move.c index a176484ae91d..99a6635ecf4c 100644 --- a/fs/bcachefs/move.c +++ b/fs/bcachefs/move.c @@ -222,7 +222,8 @@ int bch2_migrate_write_init(struct bch_fs *c, struct migrate_write *m, bch2_write_op_init(&m->op, c); m->op.csum_type = bch2_data_checksum_type(c, io_opts.data_checksum); m->op.compression_type = - bch2_compression_opt_to_type[io_opts.compression]; + bch2_compression_opt_to_type[io_opts.background_compression ?: + io_opts.compression]; m->op.devs = devs; m->op.write_point = wp; diff --git a/fs/bcachefs/opts.h b/fs/bcachefs/opts.h index 8a3ac66b948c..a0bc2ca6dba0 100644 --- a/fs/bcachefs/opts.h +++ b/fs/bcachefs/opts.h @@ -94,6 +94,9 @@ 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) \ @@ -238,7 +241,9 @@ int bch2_parse_mount_opts(struct bch_opts *, char *); #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) struct bch_io_opts { #define BCH_INODE_OPT(_name, _bits) unsigned _name##_defined:1; |