MCPcopy Create free account
hub / github.com/ceph/ceph / kick_requests_closed

Method kick_requests_closed

src/client/Client.cc:3567–3605  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3565}
3566
3567void Client::kick_requests_closed(MetaSession *session)
3568{
3569 ldout(cct, 10) << __func__ << " for mds." << session->mds_num << dendl;
3570 for (map<ceph_tid_t, MetaRequest*>::iterator p = mds_requests.begin();
3571 p != mds_requests.end(); ) {
3572 MetaRequest *req = p->second;
3573 ++p;
3574 if (req->mds == session->mds_num) {
3575 if (req->caller_cond) {
3576 req->kick = true;
3577 req->caller_cond->notify_all();
3578 }
3579 req->item.remove_myself();
3580 if (req->got_unsafe) {
3581 lderr(cct) << __func__ << " removing unsafe request " << req->get_tid() << dendl;
3582 req->unsafe_item.remove_myself();
3583 if (is_dir_operation(req)) {
3584 Inode *dir = req->inode();
3585 ceph_assert(dir);
3586 dir->set_async_err(-EIO);
3587 lderr(cct) << "kick_requests_closed drop req of inode(dir) : "
3588 << dir->ino << " " << req->get_tid() << dendl;
3589 req->unsafe_dir_item.remove_myself();
3590 }
3591 if (req->target) {
3592 InodeRef &in = req->target;
3593 in->set_async_err(-EIO);
3594 lderr(cct) << "kick_requests_closed drop req of inode : "
3595 << in->ino << " " << req->get_tid() << dendl;
3596 req->unsafe_target_item.remove_myself();
3597 }
3598 signal_context_list(req->waitfor_safe);
3599 unregister_request(req);
3600 }
3601 }
3602 }
3603 ceph_assert(session->requests.empty());
3604 ceph_assert(session->unsafe_requests.empty());
3605}
3606
3607
3608

Callers

nothing calls this directly

Calls 8

inodeMethod · 0.80
set_async_errMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
notify_allMethod · 0.45
remove_myselfMethod · 0.45
get_tidMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected