]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
enforce rados put aligment
authorLluis Pamies-Juarez <lluis@pamies.cat>
Wed, 18 Jun 2014 17:00:09 +0000 (10:00 -0700)
committerSage Weil <sage@inktank.com>
Mon, 23 Jun 2014 20:26:45 +0000 (13:26 -0700)
Signed-off-by: Lluis Pamies-Juarez <lluis.pamies-juarez@hgst.com>
(cherry picked from commit 304b08a23a3db57010078046955a786fe3589ef8)

src/tools/rados/rados.cc

index 5b9297addf2b6ddce79beb3a9089b72e61eec55b..5743ca0c1497840478c998179205269ef97e210d 100644 (file)
@@ -1361,6 +1361,15 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts,
     }
   }
 
+  // align op_size
+  if (io_ctx.pool_requires_alignment()) {
+    const uint64_t align = io_ctx.pool_required_alignment();
+    const bool wrn = (op_size != (1<<22));
+    op_size = uint64_t((op_size + align - 1) / align) * align;
+    if (wrn)
+      cerr << "WARNING: op_size has been rounded to " << op_size << std::endl;
+  }
+
   // snapname?
   if (snapname) {
     ret = io_ctx.snap_lookup(snapname, &snapid);