diff options
author | Samuel Just <sam.just@inktank.com> | 2013-02-27 16:58:45 -0800 |
---|---|---|
committer | Samuel Just <sam.just@inktank.com> | 2013-02-28 11:10:25 -0800 |
commit | ee943c8bcf36f1e2218d8e25edfa38ec5fe4bec2 (patch) | |
tree | 4c7505f5a611823deacfb070616ed9d4702164b1 | |
parent | 8c6f52215240f48b5e4d5bb99a5f2f451e7ce70a (diff) | |
download | ceph-ee943c8bcf36f1e2218d8e25edfa38ec5fe4bec2.tar.gz |
FileJournal::wrap_read_bl: adjust pos before returning
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)
-rw-r--r-- | src/os/FileJournal.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/os/FileJournal.cc b/src/os/FileJournal.cc index 50bbb95190e..0056f1f23b4 100644 --- a/src/os/FileJournal.cc +++ b/src/os/FileJournal.cc @@ -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) |