mds: reset heartbeat in each MDSContext complete()

Before we switching the mds_lock to a fair mutex, the Finisher could
always successfully acquire the mds_lock if there has a number of
contextes finished. So it may take a long time to finish and will
delay kicking the heartbeat.

While even we have fix the mds_lock issue, it may still will happen
in case the complete() itself will take a long time to finish or
there has a number of contextes keep comming, which could make the
Finisher thread keep running.

Signed-off-by: Xiubo Li <xiubli@redhat.com>
This commit is contained in:
Xiubo Li 2021-12-09 10:12:31 +08:00 committed by Yongseok Oh
parent 0c021eb69b
commit 9f7110501f

View File

@ -26,6 +26,7 @@ void MDSContext::complete(int r) {
ceph_assert(mds != nullptr);
ceph_assert(ceph_mutex_is_locked_by_me(mds->mds_lock));
dout(10) << "MDSContext::complete: " << typeid(*this).name() << dendl;
mds->heartbeat_reset();
return Context::complete(r);
}