diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2023-06-27 22:09:35 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2023-06-28 02:38:47 -0400 |
commit | 51c4540ad42380cd4f76f260bf4f9ce752e9ffa6 (patch) | |
tree | 631a1aaca1a098c01e6c6ef1a9e00331148114a9 /fs/bcachefs/btree_io.c | |
parent | c362d6993fe0f3e60e556f1b2d7eec97a3b9809f (diff) |
bcachefs: bcachefs_metadata_version_major_minorbcachefs_major_minor
XXX: verify that we ignore/do not fail if unknown
- superblock sections
- journal entry types
- btree ids
- key types
are present
also verify keys can be extended
also, change how "allowed keys for this btree" works - we _filter_ out
non-allowed keys when reading, only assert that keys we're writing match
filter
also: verion upgrade becomes an enum, not a bool
- none
- compatible
- incompatible
- change tools to use modparamater and scream loudly about doing a
major version upgrade when not supported
- version table needs "version upgrade requires fsck" field
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_io.c')
-rw-r--r-- | fs/bcachefs/btree_io.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/bcachefs/btree_io.c b/fs/bcachefs/btree_io.c index 990c2fa28114..54f8c8c76fbb 100644 --- a/fs/bcachefs/btree_io.c +++ b/fs/bcachefs/btree_io.c @@ -699,11 +699,11 @@ static int validate_bset(struct bch_fs *c, struct bch_dev *ca, struct printbuf buf2 = PRINTBUF; int ret = 0; - btree_err_on((version != BCH_BSET_VERSION_OLD && - version < bcachefs_metadata_version_min) || - version >= bcachefs_metadata_version_max, + btree_err_on(!bch2_version_compatible(version), BTREE_ERR_INCOMPATIBLE, c, ca, b, i, - "unsupported bset version"); + "unsupported bset version %u.%u", + BCH_VERSION_MAJOR(version), + BCH_VERSION_MINOR(version)); if (btree_err_on(version < c->sb.version_min, BTREE_ERR_FIXABLE, c, NULL, b, i, @@ -2019,9 +2019,7 @@ do_write: BUG_ON(BSET_BIG_ENDIAN(i) != CPU_BIG_ENDIAN); BUG_ON(i->seq != b->data->keys.seq); - i->version = c->sb.version < bcachefs_metadata_version_bkey_renumber - ? cpu_to_le16(BCH_BSET_VERSION_OLD) - : cpu_to_le16(c->sb.version); + i->version = cpu_to_le16(c->sb.version); SET_BSET_OFFSET(i, b->written); SET_BSET_CSUM_TYPE(i, bch2_meta_checksum_type(c)); |