1556 |
1556 |
if (!request->reply) {
|
1557 |
1557 |
assert(request->aborted);
|
1558 |
1558 |
assert(!request->got_unsafe);
|
1559 |
|
request->item.remove_myself();
|
1560 |
|
unregister_request(request);
|
1561 |
1559 |
put_request(request); // ours
|
1562 |
1560 |
return -ETIMEDOUT;
|
1563 |
1561 |
}
|
... | ... | |
1908 |
1906 |
void Client::send_request(MetaRequest *request, MetaSession *session,
|
1909 |
1907 |
bool drop_cap_releases)
|
1910 |
1908 |
{
|
|
1909 |
if (request->aborted) {
|
|
1910 |
ldout(cct, 10) << "send_request aborted request " << request->get_tid() << dendl;
|
|
1911 |
request->item.remove_myself();
|
|
1912 |
unregister_request(request);
|
|
1913 |
return;
|
|
1914 |
}
|
|
1915 |
|
1911 |
1916 |
// make the request
|
1912 |
1917 |
mds_rank_t mds = session->mds_num;
|
1913 |
1918 |
ldout(cct, 10) << "send_request rebuilding request " << request->get_tid()
|
... | ... | |
2447 |
2452 |
{
|
2448 |
2453 |
ldout(cct, 10) << "kick_requests for mds." << session->mds_num << dendl;
|
2449 |
2454 |
for (map<ceph_tid_t, MetaRequest*>::iterator p = mds_requests.begin();
|
2450 |
|
p != mds_requests.end();
|
2451 |
|
++p) {
|
2452 |
|
if (p->second->got_unsafe)
|
|
2455 |
p != mds_requests.end(); ) {
|
|
2456 |
MetaRequest* req = p->second;
|
|
2457 |
++p;
|
|
2458 |
if (req->got_unsafe)
|
2453 |
2459 |
continue;
|
2454 |
|
if (p->second->retry_attempt > 0)
|
|
2460 |
if (req->retry_attempt > 0)
|
2455 |
2461 |
continue; // new requests only
|
2456 |
|
if (p->second->mds == session->mds_num) {
|
2457 |
|
send_request(p->second, session);
|
2458 |
|
}
|
|
2462 |
if (req->mds == session->mds_num)
|
|
2463 |
send_request(req, session);
|
2459 |
2464 |
}
|
2460 |
2465 |
}
|
2461 |
2466 |
|
2462 |
2467 |
void Client::resend_unsafe_requests(MetaSession *session)
|
2463 |
2468 |
{
|
2464 |
2469 |
for (xlist<MetaRequest*>::iterator iter = session->unsafe_requests.begin();
|
2465 |
|
!iter.end();
|
2466 |
|
++iter)
|
2467 |
|
send_request(*iter, session);
|
|
2470 |
!iter.end(); ) {
|
|
2471 |
MetaRequest *req = *iter;
|
|
2472 |
++iter;
|
|
2473 |
send_request(req, session);
|
|
2474 |
}
|
2468 |
2475 |
|
2469 |
2476 |
// also re-send old requests when MDS enters reconnect stage. So that MDS can
|
2470 |
2477 |
// process completed requests in clientreplay stage.
|
2471 |
2478 |
for (map<ceph_tid_t, MetaRequest*>::iterator p = mds_requests.begin();
|
2472 |
|
p != mds_requests.end();
|
2473 |
|
++p) {
|
|
2479 |
p != mds_requests.end(); ) {
|
2474 |
2480 |
MetaRequest *req = p->second;
|
|
2481 |
++p;
|
2475 |
2482 |
if (req->got_unsafe)
|
2476 |
2483 |
continue;
|
2477 |
2484 |
if (req->retry_attempt == 0)
|
2478 |
|
-
|