The client may not be able to immediately send the request after learning the
target; e.g. the target rank has no session yet or is otherwise temporarily
unavailable.
Fixes: https://tracker.ceph.com/issues/65614
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit
3a3227adb52624ae3a39e78921d3a17114e1b404)
if (req->resend_mds >= 0) {
mds = req->resend_mds;
- req->resend_mds = -1;
ldout(cct, 10) << __func__ << " resend_mds specified as mds." << mds << dendl;
goto out;
}
// wait for signal
ldout(cct, 20) << "awaiting reply|forward|kick on " << &caller_cond << dendl;
+ request->resend_mds = -1; /* reset for retries */
request->kick = false;
std::unique_lock l{client_lock, std::adopt_lock};
caller_cond.wait(l, [request] {