osd: trigger the cache agent after a promotion

When a proxy read happens, the object promotion is done in parallel. The
agent_choose_mode function must be called to reconsider the situation
to protect against the following scenario:

  * proxy read
  * agent_choose_mode finds no object exists and the agent
    goes idle
  * object promotion happens
  * the agent does not reconsider and eviction does not happen
    although it should

http://tracker.ceph.com/issues/12673 Fixes: #12673

Signed-off-by: Loic Dachary <ldachary@redhat.com>
This commit is contained in:
Loic Dachary 2015-08-13 13:47:24 +02:00
parent d8d6bb898d
commit e1f58feb9b

View File

@ -6775,6 +6775,10 @@ void ReplicatedPG::finish_promote(int r, CopyResults *results,
simple_repop_submit(repop);
osd->logger->inc(l_osd_tier_promote);
assert(agent_state);
if (agent_state->is_idle())
agent_choose_mode();
}
void ReplicatedPG::cancel_copy(CopyOpRef cop, bool requeue)