From: xie xingguo Date: Tue, 19 Apr 2016 06:20:56 +0000 (+0800) Subject: osd/ReplicatedPG: don't get 'result' passed in overwritten X-Git-Tag: v11.0.0~840^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b312ea0c69ea08d39873898de4e1d18adc4c64fa;p=ceph.git osd/ReplicatedPG: don't get 'result' passed in overwritten The passed in result parameter already indicates the final result of an asynchronous read. Signed-off-by: xie xingguo --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index be65e6ed7146..c66780915718 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6844,7 +6844,8 @@ void ReplicatedPG::complete_read_ctx(int result, OpContext *ctx) MOSDOp *m = static_cast(ctx->op->get_req()); assert(ctx->async_reads_complete()); - for (vector::iterator p = ctx->ops.begin(); p != ctx->ops.end(); ++p) { + for (vector::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;