mds: be fairer in enqueuing purges

Don't let purges that require fewer ops skip ahead of those
that require more ops.

Signed-off-by: John Spray <john.spray@redhat.com>
This commit is contained in:
John Spray 2015-03-20 21:09:43 +00:00
parent c087025f22
commit 0cf1c7ad8a

View File

@ -330,11 +330,16 @@ void StrayManager::enqueue(CDentry *dn, bool trunc)
}
}
// Try to purge immediately if possible, else enqueue
const uint32_t ops_required = _calculate_ops_required(in, trunc);
bool consumed = _consume(dn, trunc, ops_required);
// Try to purge immediately if there is nothing in the queue, otherwise
// we will go to the back of the queue (even if there is allowance available
// to run us immediately) in order to be fair to others.
bool consumed = false;
if (ready_for_purge.empty()) {
consumed = _consume(dn, trunc, ops_required);
}
if (consumed) {
dout(10) << __func__ << ": purging this dentry immediately: "
<< *dn << dendl;