]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tools: fix pool alignment API overflow issue
authorxiexingguo <258156334@qq.com>
Sat, 5 Dec 2015 02:11:59 +0000 (10:11 +0800)
committerKefu Chai <kchai@redhat.com>
Mon, 18 Jan 2016 07:32:35 +0000 (15:32 +0800)
The original APIs may overflow and are replaced by 1f855456cae96c91a67c169d2333e333c3b59671.
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/tools/rados/RadosImport.cc

index b4b397b1d9c405536e3a05a900a9d1c944f37697..4f72142d6576056c65800b12adc7963d958898dc 100644 (file)
@@ -243,8 +243,22 @@ int RadosImport::get_object_rados(librados::IoCtx &ioctx, bufferlist &bl, bool n
     need_align = true;
     alignment = align;
   } else {
-    if ((need_align = ioctx.pool_requires_alignment()))
-      alignment = ioctx.pool_required_alignment();
+    int ret = ioctx.pool_requires_alignment2(&need_align);
+    if (ret < 0) {
+      cerr << "pool_requires_alignment2 failed: " << cpp_strerror(ret)
+        << std::endl;
+      return ret;
+    }
+
+    if (need_align) {
+      ret = ioctx.pool_required_alignment2(&alignment);
+      if (ret < 0) {
+        cerr << "pool_required_alignment2 failed: " << cpp_strerror(ret)
+         << std::endl;
+       return ret;
+      }
+      assert(alignment != 0);
+    }
   }
 
   if (need_align) {