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.86~225^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c8e2b89cf6bc36a0ff29887b9e76cbbeceef9f8f;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 --- diff --git a/src/os/FileJournal.cc b/src/os/FileJournal.cc index 330765566dc3..2209fa29e9f5 100644 --- a/src/os/FileJournal.cc +++ b/src/os/FileJournal.cc @@ -649,6 +649,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 { @@ -660,11 +667,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