From: Josh Durgin Date: Sat, 7 Dec 2013 00:03:20 +0000 (-0800) Subject: objecter: don't take extra throttle budget for resent ops X-Git-Tag: v0.75~112^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F914%2Fhead;p=ceph.git objecter: don't take extra throttle budget for resent ops These ops have already taken their budget in the original op_submit(). It will be returned via put_op_budget() when they complete. If there were many localized reads of missing objects from replicas, or cache pool redirects, this would cause the objecter to use up all of its op throttle budget and hang. Signed-off-by: Josh Durgin --- diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 4083e93fe346..d2aa34897f99 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1617,7 +1617,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) ldout(cct, 5) << " got redirect reply; redirecting" << dendl; unregister_op(op); m->get_redirect().combine_with_locator(op->target_oloc, op->target_oid.name); - op_submit(op); + _op_submit(op); m->put(); return; } @@ -1625,7 +1625,7 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) if (rc == -EAGAIN) { ldout(cct, 7) << " got -EAGAIN, resubmitting" << dendl; unregister_op(op); - op_submit(op); + _op_submit(op); m->put(); return; }