]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/FileJournal: Tune the judge logic for read_header.
authorMa Jianpeng <jianpeng.ma@intel.com>
Thu, 21 Aug 2014 07:49:44 +0000 (15:49 +0800)
committerSage Weil <sage@redhat.com>
Tue, 21 Oct 2014 13:55:12 +0000 (06:55 -0700)
When reading journal-header, it should firstly check the result of
pread and then do decoce operation.

Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
(cherry picked from commit c8e2b89cf6bc36a0ff29887b9e76cbbeceef9f8f)

src/os/FileJournal.cc

index e3bd8e90f0b0b6c231609124ead0402708d44ae7..387f38787ee83a59ce566dbaaf01a83baeb766ae 100644 (file)
@@ -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