Skip to content

Commit 8a2491d

Browse files
author
Kent Overstreet
committed
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>
1 parent 1a9e219 commit 8a2491d

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

fs/bcachefs/bcachefs_format.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -675,7 +675,8 @@ struct bch_sb_field_ext {
675675
x(btree_subvolume_children, BCH_VERSION(1, 6)) \
676676
x(mi_btree_bitmap, BCH_VERSION(1, 7)) \
677677
x(bucket_stripe_sectors, BCH_VERSION(1, 8)) \
678-
x(disk_accounting_v2, BCH_VERSION(1, 9))
678+
x(disk_accounting_v2, BCH_VERSION(1, 9)) \
679+
x(disk_accounting_v3, BCH_VERSION(1, 10))
679680

680681
enum bcachefs_metadata_version {
681682
bcachefs_metadata_version_min = 9,

fs/bcachefs/disk_accounting_format.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,11 @@ struct bch_acct_compression {
130130

131131
struct bch_acct_snapshot {
132132
__u32 id;
133-
};
133+
} __packed;
134134

135135
struct bch_acct_btree {
136136
__u32 id;
137-
};
137+
} __packed;
138138

139139
struct bch_acct_rebalance_work {
140140
};
@@ -152,8 +152,8 @@ struct disk_accounting_pos {
152152
struct bch_acct_snapshot snapshot;
153153
struct bch_acct_btree btree;
154154
struct bch_acct_rebalance_work rebalance_work;
155-
};
156-
};
155+
} __packed;
156+
} __packed;
157157
struct bpos _pad;
158158
};
159159
};

fs/bcachefs/sb-downgrade.c

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,37 @@
6161
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
6262
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
6363
BCH_FSCK_ERR_dev_usage_fragmented_wrong, \
64-
BCH_FSCK_ERR_accounting_mismatch)
64+
BCH_FSCK_ERR_accounting_mismatch) \
65+
x(disk_accounting_v3, \
66+
BIT_ULL(BCH_RECOVERY_PASS_check_allocations), \
67+
BCH_FSCK_ERR_bkey_version_in_future, \
68+
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
69+
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
70+
BCH_FSCK_ERR_dev_usage_fragmented_wrong, \
71+
BCH_FSCK_ERR_accounting_mismatch, \
72+
BCH_FSCK_ERR_accounting_key_replicas_nr_devs_0, \
73+
BCH_FSCK_ERR_accounting_key_replicas_nr_required_bad, \
74+
BCH_FSCK_ERR_accounting_key_replicas_devs_unsorted, \
75+
BCH_FSCK_ERR_accounting_key_junk_at_end)
6576

6677
#define DOWNGRADE_TABLE() \
6778
x(bucket_stripe_sectors, \
6879
0) \
6980
x(disk_accounting_v2, \
81+
BIT_ULL(BCH_RECOVERY_PASS_check_allocations), \
82+
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
83+
BCH_FSCK_ERR_dev_usage_sectors_wrong, \
84+
BCH_FSCK_ERR_dev_usage_fragmented_wrong, \
85+
BCH_FSCK_ERR_fs_usage_hidden_wrong, \
86+
BCH_FSCK_ERR_fs_usage_btree_wrong, \
87+
BCH_FSCK_ERR_fs_usage_data_wrong, \
88+
BCH_FSCK_ERR_fs_usage_cached_wrong, \
89+
BCH_FSCK_ERR_fs_usage_reserved_wrong, \
90+
BCH_FSCK_ERR_fs_usage_nr_inodes_wrong, \
91+
BCH_FSCK_ERR_fs_usage_persistent_reserved_wrong, \
92+
BCH_FSCK_ERR_fs_usage_replicas_wrong, \
93+
BCH_FSCK_ERR_bkey_version_in_future) \
94+
x(disk_accounting_v3, \
7095
BIT_ULL(BCH_RECOVERY_PASS_check_allocations), \
7196
BCH_FSCK_ERR_dev_usage_buckets_wrong, \
7297
BCH_FSCK_ERR_dev_usage_sectors_wrong, \

0 commit comments

Comments
 (0)