]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: fix fill_in_copy_get logic 8993/head
authorXinze Chi <xinze@xsky.com>
Mon, 9 May 2016 11:22:50 +0000 (19:22 +0800)
committerXinze Chi <xinze@xsky.com>
Mon, 9 May 2016 11:26:37 +0000 (19:26 +0800)
performance degrade when promote or flush object

Signed-off-by: Xinze Chi <xinze@xsky.com>
src/osd/ReplicatedPG.cc

index be65e6ed7146c4531327368e7daf24911eeacc94..1390198168cb4fba70dd7fac14ef9f5f6dd20b51 100644 (file)
@@ -7001,14 +7001,14 @@ int ReplicatedPG::fill_in_copy_get(
   bufferlist& bl = reply_obj.data;
   if (left > 0 && !cursor.data_complete) {
     if (cursor.data_offset < oi.size) {
-      left = MIN(oi.size - cursor.data_offset, (uint64_t)left);
+      uint64_t max_read = MIN(oi.size - cursor.data_offset, (uint64_t)left);
       if (cb) {
        async_read_started = true;
        ctx->pending_async_reads.push_back(
          make_pair(
-           boost::make_tuple(cursor.data_offset, left, osd_op.op.flags),
+           boost::make_tuple(cursor.data_offset, max_read, osd_op.op.flags),
            make_pair(&bl, cb)));
-        result = left;
+        result = max_read;
        cb->len = result;
       } else {
        result = pgbackend->objects_read_sync(