/* * Close monitor session, if any. */ static void __close_session(struct ceph_mon_client *monc) { dout("__close_session closing mon%d\n", monc->cur_mon); ceph_msg_revoke(monc->m_auth); ceph_msg_revoke_incoming(monc->m_auth_reply); ceph_msg_revoke(monc->m_subscribe); ceph_msg_revoke_incoming(monc->m_subscribe_ack); ceph_con_close(&monc->con); monc->pending_auth = 0; ceph_auth_reset(monc->auth); }
/* * requests */ void ceph_osdc_release_request(struct kref *kref) { struct ceph_osd_request *req = container_of(kref, struct ceph_osd_request, r_kref); if (req->r_request) ceph_msg_put(req->r_request); if (req->r_con_filling_msg) { dout("%s revoking pages %p from con %p\n", __func__, req->r_pages, req->r_con_filling_msg); ceph_msg_revoke_incoming(req->r_reply); req->r_con_filling_msg->ops->put(req->r_con_filling_msg); } if (req->r_reply) ceph_msg_put(req->r_reply); if (req->r_own_pages) ceph_release_page_vector(req->r_pages, req->r_num_pages); #ifdef CONFIG_BLOCK if (req->r_bio) bio_put(req->r_bio); #endif ceph_put_snap_context(req->r_snapc); if (req->r_trail) { ceph_pagelist_release(req->r_trail); kfree(req->r_trail); } if (req->r_mempool) mempool_free(req, req->r_osdc->req_mempool); else kfree(req); }