| 3565 | } |
| 3566 | |
| 3567 | void 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 |
nothing calls this directly
no test coverage detected