From: Samuel Just Date: Fri, 23 Jan 2015 18:01:39 +0000 (-0800) Subject: ReplicatedPG::agent_maybe_evict: take write lock, skip on failure X-Git-Tag: v0.93~128^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0a32d3b1f0a49d599dc98dc30402d2ca62ca51b2;p=ceph.git ReplicatedPG::agent_maybe_evict: take write lock, skip on failure Signed-off-by: Samuel Just --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index f6cb41fc4e2c..3680b5f813c7 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -12367,9 +12367,15 @@ bool ReplicatedPG::agent_maybe_evict(ObjectContextRef& obc) return false; } + if (!obc->get_write(OpRequestRef())) { + dout(20) << __func__ << " skip (cannot get lock) " << obc->obs.oi << dendl; + return false; + } + dout(10) << __func__ << " evicting " << obc->obs.oi << dendl; RepGather *repop = simple_repop_create(obc); OpContext *ctx = repop->ctx; + ctx->lock_to_release = OpContext::W_LOCK; ctx->at_version = get_next_version(); assert(ctx->new_obs.exists); int r = _delete_oid(ctx, true);