mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
bcachefs: Check for accounting keys with bversion=0
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
cf49f8a8c2
commit
f8911ad88d
@ -214,9 +214,9 @@ static __always_inline int bversion_cmp(struct bversion l, struct bversion r)
|
|||||||
#define ZERO_VERSION ((struct bversion) { .hi = 0, .lo = 0 })
|
#define ZERO_VERSION ((struct bversion) { .hi = 0, .lo = 0 })
|
||||||
#define MAX_VERSION ((struct bversion) { .hi = ~0, .lo = ~0ULL })
|
#define MAX_VERSION ((struct bversion) { .hi = ~0, .lo = ~0ULL })
|
||||||
|
|
||||||
static __always_inline int bversion_zero(struct bversion v)
|
static __always_inline bool bversion_zero(struct bversion v)
|
||||||
{
|
{
|
||||||
return !bversion_cmp(v, ZERO_VERSION);
|
return bversion_cmp(v, ZERO_VERSION) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_BCACHEFS_DEBUG
|
#ifdef CONFIG_BCACHEFS_DEBUG
|
||||||
|
@ -134,6 +134,10 @@ int bch2_accounting_validate(struct bch_fs *c, struct bkey_s_c k,
|
|||||||
void *end = &acc_k + 1;
|
void *end = &acc_k + 1;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
bkey_fsck_err_on(bversion_zero(k.k->bversion),
|
||||||
|
c, accounting_key_version_0,
|
||||||
|
"accounting key with version=0");
|
||||||
|
|
||||||
switch (acc_k.type) {
|
switch (acc_k.type) {
|
||||||
case BCH_DISK_ACCOUNTING_nr_inodes:
|
case BCH_DISK_ACCOUNTING_nr_inodes:
|
||||||
end = field_end(acc_k, nr_inodes);
|
end = field_end(acc_k, nr_inodes);
|
||||||
|
@ -293,7 +293,8 @@ enum bch_fsck_flags {
|
|||||||
x(accounting_key_replicas_nr_devs_0, 278, FSCK_AUTOFIX) \
|
x(accounting_key_replicas_nr_devs_0, 278, FSCK_AUTOFIX) \
|
||||||
x(accounting_key_replicas_nr_required_bad, 279, FSCK_AUTOFIX) \
|
x(accounting_key_replicas_nr_required_bad, 279, FSCK_AUTOFIX) \
|
||||||
x(accounting_key_replicas_devs_unsorted, 280, FSCK_AUTOFIX) \
|
x(accounting_key_replicas_devs_unsorted, 280, FSCK_AUTOFIX) \
|
||||||
x(MAX, 282, 0)
|
x(accounting_key_version_0, 282, FSCK_AUTOFIX) \
|
||||||
|
x(MAX, 283, 0)
|
||||||
|
|
||||||
enum bch_sb_error_id {
|
enum bch_sb_error_id {
|
||||||
#define x(t, n, ...) BCH_FSCK_ERR_##t = n,
|
#define x(t, n, ...) BCH_FSCK_ERR_##t = n,
|
||||||
|
Loading…
Reference in New Issue
Block a user