mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 08:58:07 +00:00
bcachefs: bcachefs_metadata_version_disk_accounting_v3
bcachefs_metadata_version_disk_accounting_v2 erroneously had padding bytes in disk_accounting_key, which is a problem because we have to guarantee that all unused bytes in disk_accounting_key are zeroed. Fortunately 6.11 isn't out yet, so it's cheap to fix this by spinning a new version. Reported-by: Gabriel de Perthuis <g2p.code@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
1a9e219db1
commit
8a2491db7b
3 changed files with 32 additions and 6 deletions
|
@ -675,7 +675,8 @@ struct bch_sb_field_ext {
|
|||
x(btree_subvolume_children, BCH_VERSION(1, 6)) \
|
||||
x(mi_btree_bitmap, BCH_VERSION(1, 7)) \
|
||||
x(bucket_stripe_sectors, BCH_VERSION(1, 8)) \
|
||||
x(disk_accounting_v2, BCH_VERSION(1, 9))
|
||||
x(disk_accounting_v2, BCH_VERSION(1, 9)) \
|
||||
x(disk_accounting_v3, BCH_VERSION(1, 10))
|
||||
|
||||
enum bcachefs_metadata_version {
|
||||
bcachefs_metadata_version_min = 9,
|
||||
|
|
|
@ -130,11 +130,11 @@ struct bch_acct_compression {
|
|||
|
||||
struct bch_acct_snapshot {
|
||||
__u32 id;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct bch_acct_btree {
|
||||
__u32 id;
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct bch_acct_rebalance_work {
|
||||
};
|
||||
|
@ -152,8 +152,8 @@ struct disk_accounting_pos {
|
|||
struct bch_acct_snapshot snapshot;
|
||||
struct bch_acct_btree btree;
|
||||
struct bch_acct_rebalance_work rebalance_work;
|
||||
};
|
||||
};
|
||||
} __packed;
|
||||
} __packed;
|
||||
struct bpos _pad;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -61,12 +61,37 @@
|
|||
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_fragmented_wrong, \
|
||||
BCH_FSCK_ERR_accounting_mismatch)
|
||||
BCH_FSCK_ERR_accounting_mismatch) \
|
||||
x(disk_accounting_v3, \
|
||||
BIT_ULL(BCH_RECOVERY_PASS_check_allocations), \
|
||||
BCH_FSCK_ERR_bkey_version_in_future, \
|
||||
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_fragmented_wrong, \
|
||||
BCH_FSCK_ERR_accounting_mismatch, \
|
||||
BCH_FSCK_ERR_accounting_key_replicas_nr_devs_0, \
|
||||
BCH_FSCK_ERR_accounting_key_replicas_nr_required_bad, \
|
||||
BCH_FSCK_ERR_accounting_key_replicas_devs_unsorted, \
|
||||
BCH_FSCK_ERR_accounting_key_junk_at_end)
|
||||
|
||||
#define DOWNGRADE_TABLE() \
|
||||
x(bucket_stripe_sectors, \
|
||||
0) \
|
||||
x(disk_accounting_v2, \
|
||||
BIT_ULL(BCH_RECOVERY_PASS_check_allocations), \
|
||||
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_fragmented_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_hidden_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_btree_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_data_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_cached_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_reserved_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_nr_inodes_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_persistent_reserved_wrong, \
|
||||
BCH_FSCK_ERR_fs_usage_replicas_wrong, \
|
||||
BCH_FSCK_ERR_bkey_version_in_future) \
|
||||
x(disk_accounting_v3, \
|
||||
BIT_ULL(BCH_RECOVERY_PASS_check_allocations), \
|
||||
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
|
||||
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
|
||||
|
|
Loading…
Reference in a new issue