mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2026-01-27 12:47:24 +01:00
bcachefs: Check for bad write buffer key when moving from journal
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
5c4acbc8ce
commit
865ad1dbf1
|
|
@ -170,8 +170,7 @@ bch2_trans_jset_entry_alloc(struct btree_trans *trans, unsigned u64s)
|
|||
|
||||
int bch2_btree_insert_clone_trans(struct btree_trans *, enum btree_id, struct bkey_i *);
|
||||
|
||||
int bch2_btree_write_buffer_insert_err(struct btree_trans *,
|
||||
enum btree_id, struct bkey_i *);
|
||||
int bch2_btree_write_buffer_insert_err(struct bch_fs *, enum btree_id, struct bkey_i *);
|
||||
|
||||
static inline int __must_check bch2_trans_update_buffered(struct btree_trans *trans,
|
||||
enum btree_id btree,
|
||||
|
|
@ -182,7 +181,7 @@ static inline int __must_check bch2_trans_update_buffered(struct btree_trans *tr
|
|||
EBUG_ON(k->k.u64s > BTREE_WRITE_BUFERED_U64s_MAX);
|
||||
|
||||
if (unlikely(!btree_type_uses_write_buffer(btree))) {
|
||||
int ret = bch2_btree_write_buffer_insert_err(trans, btree, k);
|
||||
int ret = bch2_btree_write_buffer_insert_err(trans->c, btree, k);
|
||||
dump_stack();
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -267,10 +267,9 @@ out:
|
|||
BUG_ON(wb->sorted.size < wb->flushing.keys.nr);
|
||||
}
|
||||
|
||||
int bch2_btree_write_buffer_insert_err(struct btree_trans *trans,
|
||||
int bch2_btree_write_buffer_insert_err(struct bch_fs *c,
|
||||
enum btree_id btree, struct bkey_i *k)
|
||||
{
|
||||
struct bch_fs *c = trans->c;
|
||||
struct printbuf buf = PRINTBUF;
|
||||
|
||||
prt_printf(&buf, "attempting to do write buffer update on non wb btree=");
|
||||
|
|
@ -332,7 +331,7 @@ static int bch2_btree_write_buffer_flush_locked(struct btree_trans *trans)
|
|||
struct btree_write_buffered_key *k = &wb->flushing.keys.data[i->idx];
|
||||
|
||||
if (unlikely(!btree_type_uses_write_buffer(k->btree))) {
|
||||
ret = bch2_btree_write_buffer_insert_err(trans, k->btree, &k->k);
|
||||
ret = bch2_btree_write_buffer_insert_err(trans->c, k->btree, &k->k);
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -89,6 +89,12 @@ static inline int bch2_journal_key_to_wb(struct bch_fs *c,
|
|||
struct journal_keys_to_wb *dst,
|
||||
enum btree_id btree, struct bkey_i *k)
|
||||
{
|
||||
if (unlikely(!btree_type_uses_write_buffer(btree))) {
|
||||
int ret = bch2_btree_write_buffer_insert_err(c, btree, k);
|
||||
dump_stack();
|
||||
return ret;
|
||||
}
|
||||
|
||||
EBUG_ON(!dst->seq);
|
||||
|
||||
return k->k.type == KEY_TYPE_accounting
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user