Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bcachefs: Fix build errors with gcc 10

gcc 10 seems to complain about array bounds in situations where gcc 11
does not - curious.

This unfortunately requires adding some casts for now; we may
investigate getting rid of our __u64 _data[] VLA in a future patch so
that our start[0] members can be VLAs.

Reported-by: John Stoffel <john@stoffel.org>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>

+7 -9
+1 -3
fs/bcachefs/bcachefs_format.h
··· 1617 1617 1618 1618 struct bch_sb_field_journal_seq_blacklist { 1619 1619 struct bch_sb_field field; 1620 - 1621 - struct journal_seq_blacklist_entry start[0]; 1622 - __u64 _data[]; 1620 + struct journal_seq_blacklist_entry start[]; 1623 1621 }; 1624 1622 1625 1623 struct bch_sb_field_errors {
+3 -3
fs/bcachefs/btree_trans_commit.c
··· 681 681 BCH_JSET_ENTRY_overwrite, 682 682 i->btree_id, i->level, 683 683 i->old_k.u64s); 684 - bkey_reassemble(&entry->start[0], 684 + bkey_reassemble((struct bkey_i *) entry->start, 685 685 (struct bkey_s_c) { &i->old_k, i->old_v }); 686 686 } 687 687 ··· 689 689 BCH_JSET_ENTRY_btree_keys, 690 690 i->btree_id, i->level, 691 691 i->k->k.u64s); 692 - bkey_copy(&entry->start[0], i->k); 692 + bkey_copy((struct bkey_i *) entry->start, i->k); 693 693 } 694 694 695 695 trans_for_each_wb_update(trans, wb) { ··· 697 697 BCH_JSET_ENTRY_btree_keys, 698 698 wb->btree, 0, 699 699 wb->k.k.u64s); 700 - bkey_copy(&entry->start[0], &wb->k); 700 + bkey_copy((struct bkey_i *) entry->start, &wb->k); 701 701 } 702 702 703 703 if (trans->journal_seq)
+1 -1
fs/bcachefs/btree_update_interior.c
··· 2411 2411 2412 2412 r->level = entry->level; 2413 2413 r->alive = true; 2414 - bkey_copy(&r->key, &entry->start[0]); 2414 + bkey_copy(&r->key, (struct bkey_i *) entry->start); 2415 2415 2416 2416 mutex_unlock(&c->btree_root_lock); 2417 2417 }
+1 -1
fs/bcachefs/btree_update_interior.h
··· 271 271 struct btree_node_entry *bne = max(write_block(b), 272 272 (void *) btree_bkey_last(b, bset_tree_last(b))); 273 273 ssize_t remaining_space = 274 - __bch_btree_u64s_remaining(c, b, &bne->keys.start[0]); 274 + __bch_btree_u64s_remaining(c, b, bne->keys.start); 275 275 276 276 if (unlikely(bset_written(b, bset(b, t)))) { 277 277 if (remaining_space > (ssize_t) (block_bytes(c) >> 3))
+1 -1
fs/bcachefs/recovery.c
··· 226 226 227 227 if (entry->u64s) { 228 228 r->level = entry->level; 229 - bkey_copy(&r->key, &entry->start[0]); 229 + bkey_copy(&r->key, (struct bkey_i *) entry->start); 230 230 r->error = 0; 231 231 } else { 232 232 r->error = -EIO;