diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c index f030030a8b50..090fdee58157 100644 --- a/fs/bcachefs/alloc_background.c +++ b/fs/bcachefs/alloc_background.c @@ -361,6 +361,14 @@ int bch2_alloc_v4_invalid(const struct bch_fs *c, struct bkey_s_c k, pr_buf(err, "cached bucket with read_time == 0"); return -EINVAL; } + + if (!a.v->dirty_sectors && + !a.v->cached_sectors && + !a.v->stripe && + a.v->data_type) { + pr_buf(err, "empty, but data_type nonzero"); + return -EINVAL; + } } return 0; diff --git a/fs/bcachefs/alloc_background.h b/fs/bcachefs/alloc_background.h index 9c6a590fa073..11e0bca3e7f2 100644 --- a/fs/bcachefs/alloc_background.h +++ b/fs/bcachefs/alloc_background.h @@ -44,7 +44,6 @@ static inline enum bucket_state bucket_state(struct bch_alloc_v4 a) return BUCKET_dirty; if (a.cached_sectors) return BUCKET_cached; - BUG_ON(a.data_type); if (BCH_ALLOC_V4_NEED_DISCARD(&a)) return BUCKET_need_discard; if (alloc_gc_gen(a) >= BUCKET_GC_GEN_MAX)