mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
bcachefs: Fix spurious alloc errors on forced shutdown
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
b206df6e15
commit
7bfbbd8802
@ -544,6 +544,17 @@ static void btree_update_nodes_written(struct btree_update *as)
|
|||||||
unsigned i;
|
unsigned i;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we're already in an error state, it might be because a btree node
|
||||||
|
* was never written, and we might be trying to free that same btree
|
||||||
|
* node here, but it won't have been marked as allocated and we'll see
|
||||||
|
* spurious disk usage inconsistencies in the transactional part below
|
||||||
|
* if we don't skip it:
|
||||||
|
*/
|
||||||
|
ret = bch2_journal_error(&c->journal);
|
||||||
|
if (ret)
|
||||||
|
goto err;
|
||||||
|
|
||||||
BUG_ON(!journal_pin_active(&as->journal));
|
BUG_ON(!journal_pin_active(&as->journal));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -569,8 +580,10 @@ static void btree_update_nodes_written(struct btree_update *as)
|
|||||||
BTREE_INSERT_JOURNAL_RESERVED,
|
BTREE_INSERT_JOURNAL_RESERVED,
|
||||||
btree_update_nodes_written_trans(&trans, as));
|
btree_update_nodes_written_trans(&trans, as));
|
||||||
bch2_trans_exit(&trans);
|
bch2_trans_exit(&trans);
|
||||||
BUG_ON(ret && !bch2_journal_error(&c->journal));
|
|
||||||
|
|
||||||
|
bch2_fs_fatal_err_on(ret && !bch2_journal_error(&c->journal), c,
|
||||||
|
"error %i in btree_update_nodes_written()", ret);
|
||||||
|
err:
|
||||||
if (b) {
|
if (b) {
|
||||||
/*
|
/*
|
||||||
* @b is the node we did the final insert into:
|
* @b is the node we did the final insert into:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user