Commit 6dfa10ab authored by Kent Overstreet's avatar Kent Overstreet
Browse files

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: default avatarJohn Stoffel <john@stoffel.org>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 4db8ac86
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -1617,9 +1617,7 @@ struct journal_seq_blacklist_entry {

struct bch_sb_field_journal_seq_blacklist {
	struct bch_sb_field	field;

	struct journal_seq_blacklist_entry start[0];
	__u64			_data[];
	struct journal_seq_blacklist_entry start[];
};

struct bch_sb_field_errors {
+3 −3
Original line number Diff line number Diff line
@@ -681,7 +681,7 @@ bch2_trans_commit_write_locked(struct btree_trans *trans, unsigned flags,
						       BCH_JSET_ENTRY_overwrite,
						       i->btree_id, i->level,
						       i->old_k.u64s);
				bkey_reassemble(&entry->start[0],
				bkey_reassemble((struct bkey_i *) entry->start,
						(struct bkey_s_c) { &i->old_k, i->old_v });
			}

@@ -689,7 +689,7 @@ bch2_trans_commit_write_locked(struct btree_trans *trans, unsigned flags,
					       BCH_JSET_ENTRY_btree_keys,
					       i->btree_id, i->level,
					       i->k->k.u64s);
			bkey_copy(&entry->start[0], i->k);
			bkey_copy((struct bkey_i *) entry->start, i->k);
		}

		trans_for_each_wb_update(trans, wb) {
@@ -697,7 +697,7 @@ bch2_trans_commit_write_locked(struct btree_trans *trans, unsigned flags,
					       BCH_JSET_ENTRY_btree_keys,
					       wb->btree, 0,
					       wb->k.k.u64s);
			bkey_copy(&entry->start[0], &wb->k);
			bkey_copy((struct bkey_i *) entry->start, &wb->k);
		}

		if (trans->journal_seq)
+1 −1
Original line number Diff line number Diff line
@@ -2411,7 +2411,7 @@ void bch2_journal_entry_to_btree_root(struct bch_fs *c, struct jset_entry *entry

	r->level = entry->level;
	r->alive = true;
	bkey_copy(&r->key, &entry->start[0]);
	bkey_copy(&r->key, (struct bkey_i *) entry->start);

	mutex_unlock(&c->btree_root_lock);
}
+1 −1
Original line number Diff line number Diff line
@@ -271,7 +271,7 @@ static inline struct btree_node_entry *want_new_bset(struct bch_fs *c,
	struct btree_node_entry *bne = max(write_block(b),
			(void *) btree_bkey_last(b, bset_tree_last(b)));
	ssize_t remaining_space =
		__bch_btree_u64s_remaining(c, b, &bne->keys.start[0]);
		__bch_btree_u64s_remaining(c, b, bne->keys.start);

	if (unlikely(bset_written(b, bset(b, t)))) {
		if (remaining_space > (ssize_t) (block_bytes(c) >> 3))
+1 −1
Original line number Diff line number Diff line
@@ -226,7 +226,7 @@ static int journal_replay_entry_early(struct bch_fs *c,

		if (entry->u64s) {
			r->level = entry->level;
			bkey_copy(&r->key, &entry->start[0]);
			bkey_copy(&r->key, (struct bkey_i *) entry->start);
			r->error = 0;
		} else {
			r->error = -EIO;