]> git-server-git.apps.pok.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)
committerMa Jianpeng <jianpeng.ma@intel.com>
Thu, 21 Aug 2014 07:49:44 +0000 (15:49 +0800)
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>
src/os/FileJournal.cc

index 330765566dc3b3f052e03f94f33754c25e811bf4..2209fa29e9f5228071eed342509a2e387a008212 100644 (file)
@@ -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