]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
FileJournal::wrap_read_bl: adjust pos before returning
authorSamuel Just <sam.just@inktank.com>
Thu, 28 Feb 2013 00:58:45 +0000 (16:58 -0800)
committerSamuel Just <sam.just@inktank.com>
Thu, 28 Feb 2013 19:10:25 +0000 (11:10 -0800)
Otherwise, we may feed an offset past the end of the journal to
check_header in read_entry and incorrectly determine that the entry is
corrupt.

Fixes: 4296
Backport: bobtail
Backport: argonaut
Reviewed-by: Sage Weil <sage@inktank.com>
Signed-off-by: Samuel Just <sam.just@inktank.com>
(cherry picked from commit 5d54ab154ca790688a6a1a2ad5f869c17a23980a)

src/os/FileJournal.cc

index 50bbb95190e3792424defa2e7c6aefa02952a183..0056f1f23b447326f46be836eb83931b5cc119dc 100644 (file)
@@ -1591,6 +1591,8 @@ void FileJournal::wrap_read_bl(off64_t& pos, int64_t olen, bufferlist& bl)
     pos += len;
     olen -= len;
   }
+  if (pos >= header.max_size)
+    pos = pos + get_top() - header.max_size;
 }
 
 bool FileJournal::read_entry(bufferlist& bl, uint64_t& seq)