From: Ma Jianpeng Date: Thu, 21 Aug 2014 07:49:44 +0000 (+0800) Subject: os/FileJournal: Tune the judge logic for read_header. X-Git-Tag: v0.80.8~34^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3312c6eeca21dcd566df9bdd8de7b3fe33356b57;p=ceph.git os/FileJournal: Tune the judge logic for read_header. When reading journal-header, it should firstly check the result of pread and then do decoce operation. Signed-off-by: Ma Jianpeng (cherry picked from commit c8e2b89cf6bc36a0ff29887b9e76cbbeceef9f8f) --- diff --git a/src/os/FileJournal.cc b/src/os/FileJournal.cc index e3bd8e90f0b..387f38787ee 100644 --- a/src/os/FileJournal.cc +++ b/src/os/FileJournal.cc @@ -650,6 +650,13 @@ int FileJournal::read_header() buffer::ptr bp = buffer::create_page_aligned(block_size); bp.zero(); int r = ::pread(fd, bp.c_str(), bp.length(), 0); + + if (r < 0) { + int err = errno; + dout(0) << "read_header got " << cpp_strerror(err) << dendl; + return -err; + } + bl.push_back(bp); try { @@ -661,11 +668,6 @@ int FileJournal::read_header() return -EINVAL; } - if (r < 0) { - int err = errno; - dout(0) << "read_header got " << cpp_strerror(err) << dendl; - return -err; - } /* * Unfortunately we weren't initializing the flags field for new