Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc
- index af12e38..aa99c09 100644
- --- a/src/osdc/Journaler.cc
- +++ b/src/osdc/Journaler.cc
- @@ -740,17 +740,26 @@ bool Journaler::try_read_entry(bufferlist& bl)
- dout(10) << "try_read_entry at " << read_pos << " reading "
- << read_pos << "~" << (sizeof(s)+s) << " (have " << read_buf.length() << ")" << dendl;
- + uint32_t read_offset = 0;
- if (s == 0) {
- derr(0) << "try_read_entry got 0 len entry at offset " << read_pos << dendl;
- - error = -EINVAL;
- - return false;
- + derr(0) << "ADVANCING to next non-zero point" << dendl;
- + bufferlist::iterator i = read_buf.begin();
- + char byte;
- + ::decode(byte, i);
- + while (byte == 0) {
- + ::decode(byte, i);
- + }
- + i.seek(i.get_off() - 1);
- + read_offset = i.get_off();
- + ::decode(s, i);
- }
- // do it
- assert(bl.length() == 0);
- - read_buf.splice(0, sizeof(s));
- + read_buf.splice(0, read_offset + sizeof(s));
- read_buf.splice(0, s, &bl);
- - read_pos += sizeof(s) + s;
- + read_pos += sizeof(s) + s + read_offset;
- // prefetch?
- _prefetch();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement