Lines Matching refs:req
512 struct ceph_mon_generic_request *req =
515 dout("%s greq %p request %p reply %p\n", __func__, req, req->request,
516 req->reply);
517 WARN_ON(!RB_EMPTY_NODE(&req->node));
519 if (req->reply)
520 ceph_msg_put(req->reply);
521 if (req->request)
522 ceph_msg_put(req->request);
524 kfree(req);
527 static void put_generic_request(struct ceph_mon_generic_request *req)
529 if (req)
530 kref_put(&req->kref, release_generic_request);
533 static void get_generic_request(struct ceph_mon_generic_request *req)
535 kref_get(&req->kref);
541 struct ceph_mon_generic_request *req;
543 req = kzalloc(sizeof(*req), gfp);
544 if (!req)
547 req->monc = monc;
548 kref_init(&req->kref);
549 RB_CLEAR_NODE(&req->node);
550 init_completion(&req->completion);
552 dout("%s greq %p\n", __func__, req);
553 return req;
556 static void register_generic_request(struct ceph_mon_generic_request *req)
558 struct ceph_mon_client *monc = req->monc;
560 WARN_ON(req->tid);
562 get_generic_request(req);
563 req->tid = ++monc->last_tid;
564 insert_generic_request(&monc->generic_request_tree, req);
568 struct ceph_mon_generic_request *req)
570 WARN_ON(!req->tid);
572 dout("%s greq %p tid %llu\n", __func__, req, req->tid);
573 req->request->hdr.tid = cpu_to_le64(req->tid);
574 ceph_con_send(&monc->con, ceph_msg_get(req->request));
577 static void __finish_generic_request(struct ceph_mon_generic_request *req)
579 struct ceph_mon_client *monc = req->monc;
581 dout("%s greq %p tid %llu\n", __func__, req, req->tid);
582 erase_generic_request(&monc->generic_request_tree, req);
584 ceph_msg_revoke(req->request);
585 ceph_msg_revoke_incoming(req->reply);
588 static void finish_generic_request(struct ceph_mon_generic_request *req)
590 __finish_generic_request(req);
591 put_generic_request(req);
594 static void complete_generic_request(struct ceph_mon_generic_request *req)
596 if (req->complete_cb)
597 req->complete_cb(req);
599 complete_all(&req->completion);
600 put_generic_request(req);
603 static void cancel_generic_request(struct ceph_mon_generic_request *req)
605 struct ceph_mon_client *monc = req->monc;
608 dout("%s greq %p tid %llu\n", __func__, req, req->tid);
612 req->tid);
614 WARN_ON(lookup_req != req);
615 finish_generic_request(req);
621 static int wait_generic_request(struct ceph_mon_generic_request *req)
625 dout("%s greq %p tid %llu\n", __func__, req, req->tid);
626 ret = wait_for_completion_interruptible(&req->completion);
628 cancel_generic_request(req);
630 ret = req->result; /* completed */
640 struct ceph_mon_generic_request *req;
645 req = lookup_generic_request(&monc->generic_request_tree, tid);
646 if (!req) {
651 dout("get_generic_reply %lld got %p\n", tid, req->reply);
653 m = ceph_msg_get(req->reply);
670 struct ceph_mon_generic_request *req;
680 req = lookup_generic_request(&monc->generic_request_tree, tid);
681 if (!req) {
686 req->result = 0;
687 *req->u.st = reply->st; /* struct */
688 __finish_generic_request(req);
691 complete_generic_request(req);
705 struct ceph_mon_generic_request *req;
709 req = alloc_generic_request(monc, GFP_NOFS);
710 if (!req)
713 req->request = ceph_msg_new(CEPH_MSG_STATFS, sizeof(*h), GFP_NOFS,
715 if (!req->request)
718 req->reply = ceph_msg_new(CEPH_MSG_STATFS_REPLY, 64, GFP_NOFS, true);
719 if (!req->reply)
722 req->u.st = buf;
723 req->request->hdr.version = cpu_to_le16(2);
726 register_generic_request(req);
728 h = req->request->front.iov_base;
735 send_generic_request(monc, req);
738 ret = wait_generic_request(req);
740 put_generic_request(req);
748 struct ceph_mon_generic_request *req;
762 req = lookup_generic_request(&monc->generic_request_tree, handle);
763 if (!req) {
768 req->result = 0;
769 req->u.newest = ceph_decode_64(&p);
770 __finish_generic_request(req);
773 complete_generic_request(req);
785 struct ceph_mon_generic_request *req;
787 req = alloc_generic_request(monc, GFP_NOIO);
788 if (!req)
791 req->request = ceph_msg_new(CEPH_MSG_MON_GET_VERSION,
794 if (!req->request)
797 req->reply = ceph_msg_new(CEPH_MSG_MON_GET_VERSION_REPLY, 32, GFP_NOIO,
799 if (!req->reply)
802 req->complete_cb = cb;
803 req->private_data = private_data;
806 register_generic_request(req);
808 void *p = req->request->front.iov_base;
809 void *const end = p + req->request->front_alloc_len;
811 ceph_encode_64(&p, req->tid); /* handle */
815 send_generic_request(monc, req);
818 return req;
821 put_generic_request(req);
833 struct ceph_mon_generic_request *req;
836 req = __ceph_monc_get_version(monc, what, NULL, 0);
837 if (IS_ERR(req))
838 return PTR_ERR(req);
840 ret = wait_generic_request(req);
842 *newest = req->u.newest;
844 put_generic_request(req);
857 struct ceph_mon_generic_request *req;
859 req = __ceph_monc_get_version(monc, what, cb, private_data);
860 if (IS_ERR(req))
861 return PTR_ERR(req);
863 put_generic_request(req);
871 struct ceph_mon_generic_request *req;
883 req = lookup_generic_request(&monc->generic_request_tree, tid);
884 if (!req) {
889 req->result = ceph_decode_32(&p);
890 __finish_generic_request(req);
893 complete_generic_request(req);
905 struct ceph_mon_generic_request *req;
910 req = alloc_generic_request(monc, GFP_NOIO);
911 if (!req)
914 req->request = ceph_msg_new(CEPH_MSG_MON_COMMAND, 256, GFP_NOIO, true);
915 if (!req->request)
918 req->reply = ceph_msg_new(CEPH_MSG_MON_COMMAND_ACK, 512, GFP_NOIO,
920 if (!req->reply)
924 register_generic_request(req);
925 h = req->request->front.iov_base;
933 send_generic_request(monc, req);
936 ret = wait_generic_request(req);
938 put_generic_request(req);
996 struct ceph_mon_generic_request *req;
1000 req = rb_entry(p, struct ceph_mon_generic_request, node);
1001 ceph_msg_revoke(req->request);
1002 ceph_msg_revoke_incoming(req->reply);
1003 ceph_con_send(&monc->con, ceph_msg_get(req->request));