Commit c21d5377 authored by Kent Overstreet's avatar Kent Overstreet Committed by Kent Overstreet

bcachefs: Fix for bch2_bkey_pack_pos() not initializing len/version fields

This bug led to push_whiteout() generating whiteouts that failed
bch2_bkey_invalid() due to nonzero length fields - oops.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
parent 82355e28
......@@ -446,8 +446,15 @@ enum bkey_pack_pos_ret bch2_bkey_pack_pos_lossy(struct bkey_packed *out,
struct bpos orig = in;
#endif
bool exact = true;
unsigned i;
*w = 0;
/*
* bch2_bkey_pack_key() will write to all of f->key_u64s, minus the 3
* byte header, but pack_pos() won't if the len/version fields are big
* enough - we need to make sure to zero them out:
*/
for (i = 0; i < f->key_u64s; i++)
w[i] = 0;
if (unlikely(in.snapshot <
le64_to_cpu(f->field_offset[BKEY_FIELD_SNAPSHOT]))) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment