Advertisement
Guest User

Untitled

a guest
Jan 19th, 2011
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1.  
  2. diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc
  3. index af12e38..aa99c09 100644
  4. --- a/src/osdc/Journaler.cc
  5. +++ b/src/osdc/Journaler.cc
  6. @@ -740,17 +740,26 @@ bool Journaler::try_read_entry(bufferlist& bl)
  7. dout(10) << "try_read_entry at " << read_pos << " reading "
  8. << read_pos << "~" << (sizeof(s)+s) << " (have " << read_buf.length() << ")" << dendl;
  9.  
  10. + uint32_t read_offset = 0;
  11. if (s == 0) {
  12. derr(0) << "try_read_entry got 0 len entry at offset " << read_pos << dendl;
  13. - error = -EINVAL;
  14. - return false;
  15. + derr(0) << "ADVANCING to next non-zero point" << dendl;
  16. + bufferlist::iterator i = read_buf.begin();
  17. + char byte;
  18. + ::decode(byte, i);
  19. + while (byte == 0) {
  20. + ::decode(byte, i);
  21. + }
  22. + i.seek(i.get_off() - 1);
  23. + read_offset = i.get_off();
  24. + ::decode(s, i);
  25. }
  26.  
  27. // do it
  28. assert(bl.length() == 0);
  29. - read_buf.splice(0, sizeof(s));
  30. + read_buf.splice(0, read_offset + sizeof(s));
  31. read_buf.splice(0, s, &bl);
  32. - read_pos += sizeof(s) + s;
  33. + read_pos += sizeof(s) + s + read_offset;
  34.  
  35. // prefetch?
  36. _prefetch();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement