Lines Matching refs:req

583 	struct ceph_mon_generic_request *req =  in DEFINE_RB_FUNCS()  local
586 dout("%s greq %p request %p reply %p\n", __func__, req, req->request, in DEFINE_RB_FUNCS()
587 req->reply); in DEFINE_RB_FUNCS()
588 WARN_ON(!RB_EMPTY_NODE(&req->node)); in DEFINE_RB_FUNCS()
590 if (req->reply) in DEFINE_RB_FUNCS()
591 ceph_msg_put(req->reply); in DEFINE_RB_FUNCS()
592 if (req->request) in DEFINE_RB_FUNCS()
593 ceph_msg_put(req->request); in DEFINE_RB_FUNCS()
595 kfree(req); in DEFINE_RB_FUNCS()
598 static void put_generic_request(struct ceph_mon_generic_request *req) in put_generic_request() argument
600 if (req) in put_generic_request()
601 kref_put(&req->kref, release_generic_request); in put_generic_request()
604 static void get_generic_request(struct ceph_mon_generic_request *req) in get_generic_request() argument
606 kref_get(&req->kref); in get_generic_request()
612 struct ceph_mon_generic_request *req; in alloc_generic_request() local
614 req = kzalloc(sizeof(*req), gfp); in alloc_generic_request()
615 if (!req) in alloc_generic_request()
618 req->monc = monc; in alloc_generic_request()
619 kref_init(&req->kref); in alloc_generic_request()
620 RB_CLEAR_NODE(&req->node); in alloc_generic_request()
621 init_completion(&req->completion); in alloc_generic_request()
623 dout("%s greq %p\n", __func__, req); in alloc_generic_request()
624 return req; in alloc_generic_request()
627 static void register_generic_request(struct ceph_mon_generic_request *req) in register_generic_request() argument
629 struct ceph_mon_client *monc = req->monc; in register_generic_request()
631 WARN_ON(req->tid); in register_generic_request()
633 get_generic_request(req); in register_generic_request()
634 req->tid = ++monc->last_tid; in register_generic_request()
635 insert_generic_request(&monc->generic_request_tree, req); in register_generic_request()
639 struct ceph_mon_generic_request *req) in send_generic_request() argument
641 WARN_ON(!req->tid); in send_generic_request()
643 dout("%s greq %p tid %llu\n", __func__, req, req->tid); in send_generic_request()
644 req->request->hdr.tid = cpu_to_le64(req->tid); in send_generic_request()
645 ceph_con_send(&monc->con, ceph_msg_get(req->request)); in send_generic_request()
648 static void __finish_generic_request(struct ceph_mon_generic_request *req) in __finish_generic_request() argument
650 struct ceph_mon_client *monc = req->monc; in __finish_generic_request()
652 dout("%s greq %p tid %llu\n", __func__, req, req->tid); in __finish_generic_request()
653 erase_generic_request(&monc->generic_request_tree, req); in __finish_generic_request()
655 ceph_msg_revoke(req->request); in __finish_generic_request()
656 ceph_msg_revoke_incoming(req->reply); in __finish_generic_request()
659 static void finish_generic_request(struct ceph_mon_generic_request *req) in finish_generic_request() argument
661 __finish_generic_request(req); in finish_generic_request()
662 put_generic_request(req); in finish_generic_request()
665 static void complete_generic_request(struct ceph_mon_generic_request *req) in complete_generic_request() argument
667 if (req->complete_cb) in complete_generic_request()
668 req->complete_cb(req); in complete_generic_request()
670 complete_all(&req->completion); in complete_generic_request()
671 put_generic_request(req); in complete_generic_request()
674 static void cancel_generic_request(struct ceph_mon_generic_request *req) in cancel_generic_request() argument
676 struct ceph_mon_client *monc = req->monc; in cancel_generic_request()
679 dout("%s greq %p tid %llu\n", __func__, req, req->tid); in cancel_generic_request()
683 req->tid); in cancel_generic_request()
685 WARN_ON(lookup_req != req); in cancel_generic_request()
686 finish_generic_request(req); in cancel_generic_request()
692 static int wait_generic_request(struct ceph_mon_generic_request *req) in wait_generic_request() argument
696 dout("%s greq %p tid %llu\n", __func__, req, req->tid); in wait_generic_request()
697 ret = wait_for_completion_interruptible(&req->completion); in wait_generic_request()
699 cancel_generic_request(req); in wait_generic_request()
701 ret = req->result; /* completed */ in wait_generic_request()
711 struct ceph_mon_generic_request *req; in get_generic_reply() local
716 req = lookup_generic_request(&monc->generic_request_tree, tid); in get_generic_reply()
717 if (!req) { in get_generic_reply()
722 dout("get_generic_reply %lld got %p\n", tid, req->reply); in get_generic_reply()
724 m = ceph_msg_get(req->reply); in get_generic_reply()
741 struct ceph_mon_generic_request *req; in handle_statfs_reply() local
751 req = lookup_generic_request(&monc->generic_request_tree, tid); in handle_statfs_reply()
752 if (!req) { in handle_statfs_reply()
757 req->result = 0; in handle_statfs_reply()
758 *req->u.st = reply->st; /* struct */ in handle_statfs_reply()
759 __finish_generic_request(req); in handle_statfs_reply()
762 complete_generic_request(req); in handle_statfs_reply()
776 struct ceph_mon_generic_request *req; in ceph_monc_do_statfs() local
780 req = alloc_generic_request(monc, GFP_NOFS); in ceph_monc_do_statfs()
781 if (!req) in ceph_monc_do_statfs()
784 req->request = ceph_msg_new(CEPH_MSG_STATFS, sizeof(*h), GFP_NOFS, in ceph_monc_do_statfs()
786 if (!req->request) in ceph_monc_do_statfs()
789 req->reply = ceph_msg_new(CEPH_MSG_STATFS_REPLY, 64, GFP_NOFS, true); in ceph_monc_do_statfs()
790 if (!req->reply) in ceph_monc_do_statfs()
793 req->u.st = buf; in ceph_monc_do_statfs()
794 req->request->hdr.version = cpu_to_le16(2); in ceph_monc_do_statfs()
797 register_generic_request(req); in ceph_monc_do_statfs()
799 h = req->request->front.iov_base; in ceph_monc_do_statfs()
806 send_generic_request(monc, req); in ceph_monc_do_statfs()
809 ret = wait_generic_request(req); in ceph_monc_do_statfs()
811 put_generic_request(req); in ceph_monc_do_statfs()
819 struct ceph_mon_generic_request *req; in handle_get_version_reply() local
833 req = lookup_generic_request(&monc->generic_request_tree, handle); in handle_get_version_reply()
834 if (!req) { in handle_get_version_reply()
839 req->result = 0; in handle_get_version_reply()
840 req->u.newest = ceph_decode_64(&p); in handle_get_version_reply()
841 __finish_generic_request(req); in handle_get_version_reply()
844 complete_generic_request(req); in handle_get_version_reply()
856 struct ceph_mon_generic_request *req; in __ceph_monc_get_version() local
858 req = alloc_generic_request(monc, GFP_NOIO); in __ceph_monc_get_version()
859 if (!req) in __ceph_monc_get_version()
862 req->request = ceph_msg_new(CEPH_MSG_MON_GET_VERSION, in __ceph_monc_get_version()
865 if (!req->request) in __ceph_monc_get_version()
868 req->reply = ceph_msg_new(CEPH_MSG_MON_GET_VERSION_REPLY, 32, GFP_NOIO, in __ceph_monc_get_version()
870 if (!req->reply) in __ceph_monc_get_version()
873 req->complete_cb = cb; in __ceph_monc_get_version()
874 req->private_data = private_data; in __ceph_monc_get_version()
877 register_generic_request(req); in __ceph_monc_get_version()
879 void *p = req->request->front.iov_base; in __ceph_monc_get_version()
880 void *const end = p + req->request->front_alloc_len; in __ceph_monc_get_version()
882 ceph_encode_64(&p, req->tid); /* handle */ in __ceph_monc_get_version()
886 send_generic_request(monc, req); in __ceph_monc_get_version()
889 return req; in __ceph_monc_get_version()
892 put_generic_request(req); in __ceph_monc_get_version()
904 struct ceph_mon_generic_request *req; in ceph_monc_get_version() local
907 req = __ceph_monc_get_version(monc, what, NULL, 0); in ceph_monc_get_version()
908 if (IS_ERR(req)) in ceph_monc_get_version()
909 return PTR_ERR(req); in ceph_monc_get_version()
911 ret = wait_generic_request(req); in ceph_monc_get_version()
913 *newest = req->u.newest; in ceph_monc_get_version()
915 put_generic_request(req); in ceph_monc_get_version()
928 struct ceph_mon_generic_request *req; in ceph_monc_get_version_async() local
930 req = __ceph_monc_get_version(monc, what, cb, private_data); in ceph_monc_get_version_async()
931 if (IS_ERR(req)) in ceph_monc_get_version_async()
932 return PTR_ERR(req); in ceph_monc_get_version_async()
934 put_generic_request(req); in ceph_monc_get_version_async()
942 struct ceph_mon_generic_request *req; in handle_command_ack() local
954 req = lookup_generic_request(&monc->generic_request_tree, tid); in handle_command_ack()
955 if (!req) { in handle_command_ack()
960 req->result = ceph_decode_32(&p); in handle_command_ack()
961 __finish_generic_request(req); in handle_command_ack()
964 complete_generic_request(req); in handle_command_ack()
976 struct ceph_mon_generic_request *req; in do_mon_command_vargs() local
981 req = alloc_generic_request(monc, GFP_NOIO); in do_mon_command_vargs()
982 if (!req) in do_mon_command_vargs()
985 req->request = ceph_msg_new(CEPH_MSG_MON_COMMAND, 256, GFP_NOIO, true); in do_mon_command_vargs()
986 if (!req->request) in do_mon_command_vargs()
989 req->reply = ceph_msg_new(CEPH_MSG_MON_COMMAND_ACK, 512, GFP_NOIO, in do_mon_command_vargs()
991 if (!req->reply) in do_mon_command_vargs()
995 register_generic_request(req); in do_mon_command_vargs()
996 h = req->request->front.iov_base; in do_mon_command_vargs()
1004 send_generic_request(monc, req); in do_mon_command_vargs()
1007 ret = wait_generic_request(req); in do_mon_command_vargs()
1009 put_generic_request(req); in do_mon_command_vargs()
1067 struct ceph_mon_generic_request *req; in __resend_generic_request() local
1071 req = rb_entry(p, struct ceph_mon_generic_request, node); in __resend_generic_request()
1072 ceph_msg_revoke(req->request); in __resend_generic_request()
1073 ceph_msg_revoke_incoming(req->reply); in __resend_generic_request()
1074 ceph_con_send(&monc->con, ceph_msg_get(req->request)); in __resend_generic_request()