diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-12-06 12:01:29 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-12-27 11:38:36 -0500 |
commit | 9e47f3804c0e844b81d151efb3aad10d5930824d (patch) | |
tree | 2cc4bb7d39819aafd179ed2a455f3caf6ab71a7a | |
parent | 66fcc6fa6980273985bc0efe9cd48b03f0cd9f4e (diff) |
bcachefs: fix an incorrect bkey_debugcheck() call
-rw-r--r-- | fs/bcachefs/btree_iter.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index f4922bce27bb..73e2c5ef2eab 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -530,8 +530,24 @@ found: btree_iter_set_dirty(iter, BTREE_ITER_NEED_PEEK); bch2_btree_node_iter_sort(node_iter, b); - if (!b->level && node_iter == &iter->l[0].iter) + if (!b->level && node_iter == &iter->l[0].iter) { + /* + * not legal to call bkey_debugcheck() here, because we're + * called midway through the update path after update has been + * marked but before deletes have actually happened: + */ +#if 0 __btree_iter_peek_all(iter, &iter->l[0], &iter->k); +#endif + struct btree_iter_level *l = &iter->l[0]; + struct bkey_packed *k = + bch2_btree_node_iter_peek_all(&l->iter, l->b); + + if (unlikely(!k)) + iter->k.type = KEY_TYPE_deleted; + else + bkey_disassemble(l->b, k, &iter->k); + } iter_current_key_not_modified: /* |