diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2022-12-09 16:22:36 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2022-12-09 16:23:41 -0500 |
commit | ed2a5f4260b65f3d613dcd76a97ac091bc88a126 (patch) | |
tree | b472f2c283207c0c01ab473754ec5193ceda1c76 | |
parent | 49c7ee1e826d1fba1cf189d5aaaad5d02ce85cb9 (diff) |
bcachefs: Add a missing bch2_btree_path_traverse() call
bch2_btree_iter_peek_upto() in snapshots mode may need to keep a
btree_path for the insert position, not just the position of the key
we're returning. The code was incorrectly assuming this would be in the
same btree node - we were missing a bch2_btree_path_traverse() call.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r-- | fs/bcachefs/btree_iter.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index f9ccc216216c..fd4358eb0130 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -2077,6 +2077,11 @@ struct bkey_s_c bch2_btree_iter_peek_upto(struct btree_iter *iter, struct bpos e iter->update_path, pos, iter->flags & BTREE_ITER_INTENT, _THIS_IP_); + ret = bch2_btree_path_traverse(trans, iter->update_path, iter->flags); + if (unlikely(ret)) { + k = bkey_s_c_err(ret); + goto out_no_locked; + } } /* |