diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2017-12-03 20:29:09 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-02-18 21:14:59 -0500 |
commit | b28b848e8b8041908525b1ff837f0fc274633cb1 (patch) | |
tree | 207f118ef1a5974c15b3af02477fde5ffb16c89b /fs/bcachefs/btree_update_leaf.c | |
parent | 640c2782d855d237bfe3df5443f0e611d4ae1fee (diff) |
error handlingbcachefs_disk_groups
Diffstat (limited to 'fs/bcachefs/btree_update_leaf.c')
-rw-r--r-- | fs/bcachefs/btree_update_leaf.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/bcachefs/btree_update_leaf.c b/fs/bcachefs/btree_update_leaf.c index 007aa5ef4091..208d023e44a4 100644 --- a/fs/bcachefs/btree_update_leaf.c +++ b/fs/bcachefs/btree_update_leaf.c @@ -6,6 +6,7 @@ #include "btree_iter.h" #include "btree_locking.h" #include "debug.h" +#include "error.h" #include "extents.h" #include "journal.h" #include "keylist.h" @@ -301,11 +302,16 @@ int __bch2_btree_insert_at(struct btree_insert *trans) int ret; trans_for_each_entry(trans, i) { + const char *invalid; + BUG_ON(i->iter->level); BUG_ON(bkey_cmp(bkey_start_pos(&i->k->k), i->iter->pos)); - BUG_ON(debug_check_bkeys(c) && - bch2_bkey_invalid(c, i->iter->btree_id, - bkey_i_to_s_c(i->k))); + + invalid = bch2_bkey_invalid(c, i->iter->btree_id, + bkey_i_to_s_c(i->k)); + if (bch2_fs_bug_on(invalid, c, "updating btree with invalid key: %s", + invalid)) + return -EINVAL; } bubble_sort(trans->entries, trans->nr, btree_trans_cmp); |