Lines Matching refs:req

515 static void put_request_session(struct ceph_mds_request *req)  in put_request_session()  argument
517 if (req->r_session) { in put_request_session()
518 ceph_put_mds_session(req->r_session); in put_request_session()
519 req->r_session = NULL; in put_request_session()
525 struct ceph_mds_request *req = container_of(kref, in ceph_mdsc_release_request() local
528 destroy_reply_info(&req->r_reply_info); in ceph_mdsc_release_request()
529 if (req->r_request) in ceph_mdsc_release_request()
530 ceph_msg_put(req->r_request); in ceph_mdsc_release_request()
531 if (req->r_reply) in ceph_mdsc_release_request()
532 ceph_msg_put(req->r_reply); in ceph_mdsc_release_request()
533 if (req->r_inode) { in ceph_mdsc_release_request()
534 ceph_put_cap_refs(ceph_inode(req->r_inode), CEPH_CAP_PIN); in ceph_mdsc_release_request()
535 iput(req->r_inode); in ceph_mdsc_release_request()
537 if (req->r_locked_dir) in ceph_mdsc_release_request()
538 ceph_put_cap_refs(ceph_inode(req->r_locked_dir), CEPH_CAP_PIN); in ceph_mdsc_release_request()
539 iput(req->r_target_inode); in ceph_mdsc_release_request()
540 if (req->r_dentry) in ceph_mdsc_release_request()
541 dput(req->r_dentry); in ceph_mdsc_release_request()
542 if (req->r_old_dentry) in ceph_mdsc_release_request()
543 dput(req->r_old_dentry); in ceph_mdsc_release_request()
544 if (req->r_old_dentry_dir) { in ceph_mdsc_release_request()
551 ceph_put_cap_refs(ceph_inode(req->r_old_dentry_dir), in ceph_mdsc_release_request()
553 iput(req->r_old_dentry_dir); in ceph_mdsc_release_request()
555 kfree(req->r_path1); in ceph_mdsc_release_request()
556 kfree(req->r_path2); in ceph_mdsc_release_request()
557 if (req->r_pagelist) in ceph_mdsc_release_request()
558 ceph_pagelist_release(req->r_pagelist); in ceph_mdsc_release_request()
559 put_request_session(req); in ceph_mdsc_release_request()
560 ceph_unreserve_caps(req->r_mdsc, &req->r_caps_reservation); in ceph_mdsc_release_request()
561 kfree(req); in ceph_mdsc_release_request()
572 struct ceph_mds_request *req; in __lookup_request() local
576 req = rb_entry(n, struct ceph_mds_request, r_node); in __lookup_request()
577 if (tid < req->r_tid) in __lookup_request()
579 else if (tid > req->r_tid) in __lookup_request()
582 ceph_mdsc_get_request(req); in __lookup_request()
583 return req; in __lookup_request()
594 struct ceph_mds_request *req = NULL; in __insert_request() local
598 req = rb_entry(parent, struct ceph_mds_request, r_node); in __insert_request()
599 if (new->r_tid < req->r_tid) in __insert_request()
601 else if (new->r_tid > req->r_tid) in __insert_request()
618 struct ceph_mds_request *req, in __register_request() argument
621 req->r_tid = ++mdsc->last_tid; in __register_request()
622 if (req->r_num_caps) in __register_request()
623 ceph_reserve_caps(mdsc, &req->r_caps_reservation, in __register_request()
624 req->r_num_caps); in __register_request()
625 dout("__register_request %p tid %lld\n", req, req->r_tid); in __register_request()
626 ceph_mdsc_get_request(req); in __register_request()
627 __insert_request(mdsc, req); in __register_request()
629 req->r_uid = current_fsuid(); in __register_request()
630 req->r_gid = current_fsgid(); in __register_request()
632 if (mdsc->oldest_tid == 0 && req->r_op != CEPH_MDS_OP_SETFILELOCK) in __register_request()
633 mdsc->oldest_tid = req->r_tid; in __register_request()
637 req->r_unsafe_dir = dir; in __register_request()
642 struct ceph_mds_request *req) in __unregister_request() argument
644 dout("__unregister_request %p tid %lld\n", req, req->r_tid); in __unregister_request()
646 if (req->r_tid == mdsc->oldest_tid) { in __unregister_request()
647 struct rb_node *p = rb_next(&req->r_node); in __unregister_request()
660 rb_erase(&req->r_node, &mdsc->request_tree); in __unregister_request()
661 RB_CLEAR_NODE(&req->r_node); in __unregister_request()
663 if (req->r_unsafe_dir && req->r_got_unsafe) { in __unregister_request()
664 struct ceph_inode_info *ci = ceph_inode(req->r_unsafe_dir); in __unregister_request()
666 list_del_init(&req->r_unsafe_dir_item); in __unregister_request()
669 if (req->r_target_inode && req->r_got_unsafe) { in __unregister_request()
670 struct ceph_inode_info *ci = ceph_inode(req->r_target_inode); in __unregister_request()
672 list_del_init(&req->r_unsafe_target_item); in __unregister_request()
676 if (req->r_unsafe_dir) { in __unregister_request()
677 iput(req->r_unsafe_dir); in __unregister_request()
678 req->r_unsafe_dir = NULL; in __unregister_request()
681 complete_all(&req->r_safe_completion); in __unregister_request()
683 ceph_mdsc_put_request(req); in __unregister_request()
708 struct ceph_mds_request *req) in __choose_mds() argument
713 int mode = req->r_direct_mode; in __choose_mds()
715 u32 hash = req->r_direct_hash; in __choose_mds()
716 bool is_hash = req->r_direct_is_hash; in __choose_mds()
722 if (req->r_resend_mds >= 0 && in __choose_mds()
723 (__have_session(mdsc, req->r_resend_mds) || in __choose_mds()
724 ceph_mdsmap_get_state(mdsc->mdsmap, req->r_resend_mds) > 0)) { in __choose_mds()
726 req->r_resend_mds); in __choose_mds()
727 return req->r_resend_mds; in __choose_mds()
734 if (req->r_inode) { in __choose_mds()
735 inode = req->r_inode; in __choose_mds()
736 } else if (req->r_dentry) { in __choose_mds()
738 struct dentry *parent = req->r_dentry->d_parent; in __choose_mds()
743 inode = d_inode(req->r_dentry); in __choose_mds()
752 inode = d_inode(req->r_dentry); in __choose_mds()
756 hash = ceph_dentry_hash(dir, req->r_dentry); in __choose_mds()
1045 struct ceph_mds_request *req; in cleanup_session_requests() local
1051 req = list_first_entry(&session->s_unsafe, in cleanup_session_requests()
1053 list_del_init(&req->r_unsafe_item); in cleanup_session_requests()
1055 req->r_tid); in cleanup_session_requests()
1056 __unregister_request(mdsc, req); in cleanup_session_requests()
1061 req = rb_entry(p, struct ceph_mds_request, r_node); in cleanup_session_requests()
1063 if (req->r_session && in cleanup_session_requests()
1064 req->r_session->s_mds == session->s_mds) in cleanup_session_requests()
1065 req->r_attempts = 0; in cleanup_session_requests()
1662 int ceph_alloc_readdir_reply_buffer(struct ceph_mds_request *req, in ceph_alloc_readdir_reply_buffer() argument
1666 struct ceph_mds_reply_info_parsed *rinfo = &req->r_reply_info; in ceph_alloc_readdir_reply_buffer()
1667 struct ceph_mount_options *opt = req->r_mdsc->fsc->mount_options; in ceph_alloc_readdir_reply_buffer()
1694 req->r_num_caps = num_entries + 1; in ceph_alloc_readdir_reply_buffer()
1695 req->r_args.readdir.max_entries = cpu_to_le32(num_entries); in ceph_alloc_readdir_reply_buffer()
1696 req->r_args.readdir.max_bytes = cpu_to_le32(opt->max_readdir_bytes); in ceph_alloc_readdir_reply_buffer()
1706 struct ceph_mds_request *req = kzalloc(sizeof(*req), GFP_NOFS); in ceph_mdsc_create_request() local
1708 if (!req) in ceph_mdsc_create_request()
1711 mutex_init(&req->r_fill_mutex); in ceph_mdsc_create_request()
1712 req->r_mdsc = mdsc; in ceph_mdsc_create_request()
1713 req->r_started = jiffies; in ceph_mdsc_create_request()
1714 req->r_resend_mds = -1; in ceph_mdsc_create_request()
1715 INIT_LIST_HEAD(&req->r_unsafe_dir_item); in ceph_mdsc_create_request()
1716 INIT_LIST_HEAD(&req->r_unsafe_target_item); in ceph_mdsc_create_request()
1717 req->r_fmode = -1; in ceph_mdsc_create_request()
1718 kref_init(&req->r_kref); in ceph_mdsc_create_request()
1719 INIT_LIST_HEAD(&req->r_wait); in ceph_mdsc_create_request()
1720 init_completion(&req->r_completion); in ceph_mdsc_create_request()
1721 init_completion(&req->r_safe_completion); in ceph_mdsc_create_request()
1722 INIT_LIST_HEAD(&req->r_unsafe_item); in ceph_mdsc_create_request()
1724 req->r_stamp = CURRENT_TIME; in ceph_mdsc_create_request()
1726 req->r_op = op; in ceph_mdsc_create_request()
1727 req->r_direct_mode = mode; in ceph_mdsc_create_request()
1728 return req; in ceph_mdsc_create_request()
1915 struct ceph_mds_request *req, in create_request_message() argument
1930 ret = set_request_path_attr(req->r_inode, req->r_dentry, in create_request_message()
1931 req->r_path1, req->r_ino1.ino, in create_request_message()
1938 ret = set_request_path_attr(NULL, req->r_old_dentry, in create_request_message()
1939 req->r_path2, req->r_ino2.ino, in create_request_message()
1952 (!!req->r_inode_drop + !!req->r_dentry_drop + in create_request_message()
1953 !!req->r_old_inode_drop + !!req->r_old_dentry_drop); in create_request_message()
1954 if (req->r_dentry_drop) in create_request_message()
1955 len += req->r_dentry->d_name.len; in create_request_message()
1956 if (req->r_old_dentry_drop) in create_request_message()
1957 len += req->r_old_dentry->d_name.len; in create_request_message()
1966 msg->hdr.tid = cpu_to_le64(req->r_tid); in create_request_message()
1973 head->op = cpu_to_le32(req->r_op); in create_request_message()
1974 head->caller_uid = cpu_to_le32(from_kuid(&init_user_ns, req->r_uid)); in create_request_message()
1975 head->caller_gid = cpu_to_le32(from_kgid(&init_user_ns, req->r_gid)); in create_request_message()
1976 head->args = req->r_args; in create_request_message()
1982 req->r_request_release_offset = p - msg->front.iov_base; in create_request_message()
1986 if (req->r_inode_drop) in create_request_message()
1988 req->r_inode ? req->r_inode : d_inode(req->r_dentry), in create_request_message()
1989 mds, req->r_inode_drop, req->r_inode_unless, 0); in create_request_message()
1990 if (req->r_dentry_drop) in create_request_message()
1991 releases += ceph_encode_dentry_release(&p, req->r_dentry, in create_request_message()
1992 mds, req->r_dentry_drop, req->r_dentry_unless); in create_request_message()
1993 if (req->r_old_dentry_drop) in create_request_message()
1994 releases += ceph_encode_dentry_release(&p, req->r_old_dentry, in create_request_message()
1995 mds, req->r_old_dentry_drop, req->r_old_dentry_unless); in create_request_message()
1996 if (req->r_old_inode_drop) in create_request_message()
1998 d_inode(req->r_old_dentry), in create_request_message()
1999 mds, req->r_old_inode_drop, req->r_old_inode_unless, 0); in create_request_message()
2003 p = msg->front.iov_base + req->r_request_release_offset; in create_request_message()
2011 ceph_encode_timespec(&ts, &req->r_stamp); in create_request_message()
2019 if (req->r_pagelist) { in create_request_message()
2020 struct ceph_pagelist *pagelist = req->r_pagelist; in create_request_message()
2045 struct ceph_mds_request *req) in complete_request() argument
2047 if (req->r_callback) in complete_request()
2048 req->r_callback(mdsc, req); in complete_request()
2050 complete_all(&req->r_completion); in complete_request()
2057 struct ceph_mds_request *req, in __prepare_send_request() argument
2064 req->r_attempts++; in __prepare_send_request()
2065 if (req->r_inode) { in __prepare_send_request()
2067 ceph_get_cap_for_mds(ceph_inode(req->r_inode), mds); in __prepare_send_request()
2070 req->r_sent_on_mseq = cap->mseq; in __prepare_send_request()
2072 req->r_sent_on_mseq = -1; in __prepare_send_request()
2074 dout("prepare_send_request %p tid %lld %s (attempt %d)\n", req, in __prepare_send_request()
2075 req->r_tid, ceph_mds_op_name(req->r_op), req->r_attempts); in __prepare_send_request()
2077 if (req->r_got_unsafe) { in __prepare_send_request()
2085 msg = req->r_request; in __prepare_send_request()
2092 if (req->r_target_inode) in __prepare_send_request()
2093 rhead->ino = cpu_to_le64(ceph_ino(req->r_target_inode)); in __prepare_send_request()
2095 rhead->num_retry = req->r_attempts - 1; in __prepare_send_request()
2101 p = msg->front.iov_base + req->r_request_release_offset; in __prepare_send_request()
2104 ceph_encode_timespec(&ts, &req->r_stamp); in __prepare_send_request()
2113 if (req->r_request) { in __prepare_send_request()
2114 ceph_msg_put(req->r_request); in __prepare_send_request()
2115 req->r_request = NULL; in __prepare_send_request()
2117 msg = create_request_message(mdsc, req, mds, drop_cap_releases); in __prepare_send_request()
2119 req->r_err = PTR_ERR(msg); in __prepare_send_request()
2122 req->r_request = msg; in __prepare_send_request()
2126 if (req->r_got_unsafe) in __prepare_send_request()
2128 if (req->r_locked_dir) in __prepare_send_request()
2131 rhead->num_fwd = req->r_num_fwd; in __prepare_send_request()
2132 rhead->num_retry = req->r_attempts - 1; in __prepare_send_request()
2135 dout(" r_locked_dir = %p\n", req->r_locked_dir); in __prepare_send_request()
2143 struct ceph_mds_request *req) in __do_request() argument
2149 if (req->r_err || req->r_got_result) { in __do_request()
2150 if (req->r_aborted) in __do_request()
2151 __unregister_request(mdsc, req); in __do_request()
2155 if (req->r_timeout && in __do_request()
2156 time_after_eq(jiffies, req->r_started + req->r_timeout)) { in __do_request()
2167 put_request_session(req); in __do_request()
2169 mds = __choose_mds(mdsc, req); in __do_request()
2173 list_add(&req->r_wait, &mdsc->waiting_for_map); in __do_request()
2186 req->r_session = get_session(session); in __do_request()
2195 list_add(&req->r_wait, &session->s_waiting); in __do_request()
2200 req->r_resend_mds = -1; /* forget any previous mds hint */ in __do_request()
2202 if (req->r_request_started == 0) /* note request start time */ in __do_request()
2203 req->r_request_started = jiffies; in __do_request()
2205 err = __prepare_send_request(mdsc, req, mds, false); in __do_request()
2207 ceph_msg_get(req->r_request); in __do_request()
2208 ceph_con_send(&session->s_con, req->r_request); in __do_request()
2216 req->r_err = err; in __do_request()
2217 complete_request(mdsc, req); in __do_request()
2218 __unregister_request(mdsc, req); in __do_request()
2230 struct ceph_mds_request *req; in __wake_requests() local
2236 req = list_entry(tmp_list.next, in __wake_requests()
2238 list_del_init(&req->r_wait); in __wake_requests()
2239 dout(" wake request %p tid %llu\n", req, req->r_tid); in __wake_requests()
2240 __do_request(mdsc, req); in __wake_requests()
2250 struct ceph_mds_request *req; in kick_requests() local
2255 req = rb_entry(p, struct ceph_mds_request, r_node); in kick_requests()
2257 if (req->r_got_unsafe) in kick_requests()
2259 if (req->r_attempts > 0) in kick_requests()
2261 if (req->r_session && in kick_requests()
2262 req->r_session->s_mds == mds) { in kick_requests()
2263 dout(" kicking tid %llu\n", req->r_tid); in kick_requests()
2264 list_del_init(&req->r_wait); in kick_requests()
2265 __do_request(mdsc, req); in kick_requests()
2271 struct ceph_mds_request *req) in ceph_mdsc_submit_request() argument
2273 dout("submit_request on %p\n", req); in ceph_mdsc_submit_request()
2275 __register_request(mdsc, req, NULL); in ceph_mdsc_submit_request()
2276 __do_request(mdsc, req); in ceph_mdsc_submit_request()
2286 struct ceph_mds_request *req) in ceph_mdsc_do_request() argument
2290 dout("do_request on %p\n", req); in ceph_mdsc_do_request()
2293 if (req->r_inode) in ceph_mdsc_do_request()
2294 ceph_get_cap_refs(ceph_inode(req->r_inode), CEPH_CAP_PIN); in ceph_mdsc_do_request()
2295 if (req->r_locked_dir) in ceph_mdsc_do_request()
2296 ceph_get_cap_refs(ceph_inode(req->r_locked_dir), CEPH_CAP_PIN); in ceph_mdsc_do_request()
2297 if (req->r_old_dentry_dir) in ceph_mdsc_do_request()
2298 ceph_get_cap_refs(ceph_inode(req->r_old_dentry_dir), in ceph_mdsc_do_request()
2303 __register_request(mdsc, req, dir); in ceph_mdsc_do_request()
2304 __do_request(mdsc, req); in ceph_mdsc_do_request()
2306 if (req->r_err) { in ceph_mdsc_do_request()
2307 err = req->r_err; in ceph_mdsc_do_request()
2314 if (!req->r_timeout && req->r_wait_for_completion) { in ceph_mdsc_do_request()
2315 err = req->r_wait_for_completion(mdsc, req); in ceph_mdsc_do_request()
2318 &req->r_completion, in ceph_mdsc_do_request()
2319 ceph_timeout_jiffies(req->r_timeout)); in ceph_mdsc_do_request()
2331 if (req->r_got_result) { in ceph_mdsc_do_request()
2332 err = le32_to_cpu(req->r_reply_info.head->result); in ceph_mdsc_do_request()
2334 dout("aborted request %lld with %d\n", req->r_tid, err); in ceph_mdsc_do_request()
2341 mutex_lock(&req->r_fill_mutex); in ceph_mdsc_do_request()
2342 req->r_err = err; in ceph_mdsc_do_request()
2343 req->r_aborted = true; in ceph_mdsc_do_request()
2344 mutex_unlock(&req->r_fill_mutex); in ceph_mdsc_do_request()
2346 if (req->r_locked_dir && in ceph_mdsc_do_request()
2347 (req->r_op & CEPH_MDS_OP_WRITE)) in ceph_mdsc_do_request()
2348 ceph_invalidate_dir_request(req); in ceph_mdsc_do_request()
2350 err = req->r_err; in ceph_mdsc_do_request()
2355 dout("do_request %p done, result %d\n", req, err); in ceph_mdsc_do_request()
2363 void ceph_invalidate_dir_request(struct ceph_mds_request *req) in ceph_invalidate_dir_request() argument
2365 struct inode *inode = req->r_locked_dir; in ceph_invalidate_dir_request()
2370 if (req->r_dentry) in ceph_invalidate_dir_request()
2371 ceph_invalidate_dentry_lease(req->r_dentry); in ceph_invalidate_dir_request()
2372 if (req->r_old_dentry) in ceph_invalidate_dir_request()
2373 ceph_invalidate_dentry_lease(req->r_old_dentry); in ceph_invalidate_dir_request()
2386 struct ceph_mds_request *req; in handle_reply() local
2403 req = __lookup_request(mdsc, tid); in handle_reply()
2404 if (!req) { in handle_reply()
2409 dout("handle_reply %p\n", req); in handle_reply()
2412 if (req->r_session != session) { in handle_reply()
2415 req->r_session ? req->r_session->s_mds : -1); in handle_reply()
2421 if ((req->r_got_unsafe && !head->safe) || in handle_reply()
2422 (req->r_got_safe && head->safe)) { in handle_reply()
2428 if (req->r_got_safe) { in handle_reply()
2445 dout("got ESTALE on request %llu", req->r_tid); in handle_reply()
2446 req->r_resend_mds = -1; in handle_reply()
2447 if (req->r_direct_mode != USE_AUTH_MDS) { in handle_reply()
2449 req->r_direct_mode = USE_AUTH_MDS; in handle_reply()
2450 __do_request(mdsc, req); in handle_reply()
2454 int mds = __choose_mds(mdsc, req); in handle_reply()
2455 if (mds >= 0 && mds != req->r_session->s_mds) { in handle_reply()
2457 __do_request(mdsc, req); in handle_reply()
2462 dout("have to return ESTALE on request %llu", req->r_tid); in handle_reply()
2467 req->r_got_safe = true; in handle_reply()
2468 __unregister_request(mdsc, req); in handle_reply()
2470 if (req->r_got_unsafe) { in handle_reply()
2479 list_del_init(&req->r_unsafe_item); in handle_reply()
2488 req->r_got_unsafe = true; in handle_reply()
2489 list_add_tail(&req->r_unsafe_item, &req->r_session->s_unsafe); in handle_reply()
2490 if (req->r_unsafe_dir) { in handle_reply()
2492 ceph_inode(req->r_unsafe_dir); in handle_reply()
2494 list_add_tail(&req->r_unsafe_dir_item, in handle_reply()
2501 rinfo = &req->r_reply_info; in handle_reply()
2526 mutex_lock(&req->r_fill_mutex); in handle_reply()
2527 err = ceph_fill_trace(mdsc->fsc->sb, req, req->r_session); in handle_reply()
2529 if (result == 0 && (req->r_op == CEPH_MDS_OP_READDIR || in handle_reply()
2530 req->r_op == CEPH_MDS_OP_LSSNAP)) in handle_reply()
2531 ceph_readdir_prepopulate(req, req->r_session); in handle_reply()
2532 ceph_unreserve_caps(mdsc, &req->r_caps_reservation); in handle_reply()
2534 mutex_unlock(&req->r_fill_mutex); in handle_reply()
2540 if (err == 0 && req->r_got_unsafe && req->r_target_inode) { in handle_reply()
2541 struct ceph_inode_info *ci = ceph_inode(req->r_target_inode); in handle_reply()
2543 list_add_tail(&req->r_unsafe_target_item, &ci->i_unsafe_iops); in handle_reply()
2548 if (!req->r_aborted) { in handle_reply()
2550 req->r_err = err; in handle_reply()
2552 req->r_reply = ceph_msg_get(msg); in handle_reply()
2553 req->r_got_result = true; in handle_reply()
2563 complete_request(mdsc, req); in handle_reply()
2565 ceph_mdsc_put_request(req); in handle_reply()
2578 struct ceph_mds_request *req; in handle_forward() local
2591 req = __lookup_request(mdsc, tid); in handle_forward()
2592 if (!req) { in handle_forward()
2597 if (req->r_aborted) { in handle_forward()
2599 __unregister_request(mdsc, req); in handle_forward()
2600 } else if (fwd_seq <= req->r_num_fwd) { in handle_forward()
2602 tid, next_mds, req->r_num_fwd, fwd_seq); in handle_forward()
2606 BUG_ON(req->r_err); in handle_forward()
2607 BUG_ON(req->r_got_result); in handle_forward()
2608 req->r_attempts = 0; in handle_forward()
2609 req->r_num_fwd = fwd_seq; in handle_forward()
2610 req->r_resend_mds = next_mds; in handle_forward()
2611 put_request_session(req); in handle_forward()
2612 __do_request(mdsc, req); in handle_forward()
2614 ceph_mdsc_put_request(req); in handle_forward()
2740 struct ceph_mds_request *req, *nreq; in replay_unsafe_requests() local
2747 list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) { in replay_unsafe_requests()
2748 err = __prepare_send_request(mdsc, req, session->s_mds, true); in replay_unsafe_requests()
2750 ceph_msg_get(req->r_request); in replay_unsafe_requests()
2751 ceph_con_send(&session->s_con, req->r_request); in replay_unsafe_requests()
2761 req = rb_entry(p, struct ceph_mds_request, r_node); in replay_unsafe_requests()
2763 if (req->r_got_unsafe) in replay_unsafe_requests()
2765 if (req->r_attempts == 0) in replay_unsafe_requests()
2767 if (req->r_session && in replay_unsafe_requests()
2768 req->r_session->s_mds == session->s_mds) { in replay_unsafe_requests()
2769 err = __prepare_send_request(mdsc, req, in replay_unsafe_requests()
2772 ceph_msg_get(req->r_request); in replay_unsafe_requests()
2773 ceph_con_send(&session->s_con, req->r_request); in replay_unsafe_requests()
3494 struct ceph_mds_request *req; in wait_requests() local
3506 while ((req = __get_oldest_req(mdsc))) { in wait_requests()
3508 req->r_tid); in wait_requests()
3509 __unregister_request(mdsc, req); in wait_requests()
3541 struct ceph_mds_request *req = NULL, *nextreq; in wait_unsafe_requests() local
3547 req = __get_oldest_req(mdsc); in wait_unsafe_requests()
3548 while (req && req->r_tid <= want_tid) { in wait_unsafe_requests()
3550 n = rb_next(&req->r_node); in wait_unsafe_requests()
3555 if (req->r_op != CEPH_MDS_OP_SETFILELOCK && in wait_unsafe_requests()
3556 (req->r_op & CEPH_MDS_OP_WRITE)) { in wait_unsafe_requests()
3558 ceph_mdsc_get_request(req); in wait_unsafe_requests()
3563 req->r_tid, want_tid); in wait_unsafe_requests()
3564 wait_for_completion(&req->r_safe_completion); in wait_unsafe_requests()
3566 ceph_mdsc_put_request(req); in wait_unsafe_requests()
3576 req = nextreq; in wait_unsafe_requests()