]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: don't get 'result' passed in overwritten
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 19 Apr 2016 06:20:56 +0000 (14:20 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Tue, 19 Apr 2016 06:20:56 +0000 (14:20 +0800)
The passed in result parameter already indicates the final result
of an asynchronous read.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/osd/ReplicatedPG.cc

index be65e6ed7146c4531327368e7daf24911eeacc94..c6678091571808394ce05a9277ba36f6a2286b3c 100644 (file)
@@ -6844,7 +6844,8 @@ void ReplicatedPG::complete_read_ctx(int result, OpContext *ctx)
   MOSDOp *m = static_cast<MOSDOp*>(ctx->op->get_req());
   assert(ctx->async_reads_complete());
 
-  for (vector<OSDOp>::iterator p = ctx->ops.begin(); p != ctx->ops.end(); ++p) {
+  for (vector<OSDOp>::iterator p = ctx->ops.begin();
+    p != ctx->ops.end() && result >= 0; ++p) {
     if (p->rval < 0 && !(p->op.flags & CEPH_OSD_OP_FLAG_FAILOK)) {
       result = p->rval;
       break;