Searched refs:osdc (Results 1 - 12 of 12) sorted by relevance

/linux-4.4.14/net/ceph/
H A Dosd_client.c29 static void __send_queued(struct ceph_osd_client *osdc);
30 static int __reset_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd);
31 static void __register_request(struct ceph_osd_client *osdc,
33 static void __unregister_request(struct ceph_osd_client *osdc,
35 static void __unregister_linger_request(struct ceph_osd_client *osdc,
38 static void __send_request(struct ceph_osd_client *osdc,
362 struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc, ceph_osdc_alloc_request() argument
386 req = mempool_alloc(osdc->req_mempool, gfp_flags); ceph_osdc_alloc_request()
394 req->r_osdc = osdc; ceph_osdc_alloc_request()
413 msg = ceph_msgpool_get(&osdc->msgpool_op_reply, 0); ceph_osdc_alloc_request()
425 msg = ceph_msgpool_get(&osdc->msgpool_op, 0); ceph_osdc_alloc_request()
769 struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc, ceph_osdc_new_request() argument
790 req = ceph_osdc_alloc_request(osdc, snapc, num_ops, use_mempool, ceph_osdc_new_request()
835 static void __insert_request(struct ceph_osd_client *osdc, __insert_request() argument
838 struct rb_node **p = &osdc->requests.rb_node; __insert_request()
854 rb_insert_color(&new->r_node, &osdc->requests); __insert_request()
857 static struct ceph_osd_request *__lookup_request(struct ceph_osd_client *osdc, __lookup_request() argument
861 struct rb_node *n = osdc->requests.rb_node; __lookup_request()
876 __lookup_request_ge(struct ceph_osd_client *osdc, __lookup_request_ge() argument
880 struct rb_node *n = osdc->requests.rb_node; __lookup_request_ge()
899 struct ceph_osd_client *osdc = req->r_osdc; __kick_linger_request() local
909 __unregister_linger_request(osdc, req); __kick_linger_request()
911 __unregister_request(osdc, req); __kick_linger_request()
912 __register_request(osdc, req); __kick_linger_request()
931 static void __kick_osd_requests(struct ceph_osd_client *osdc, __kick_osd_requests() argument
940 err = __reset_osd(osdc, osd); __kick_osd_requests()
974 list_splice(&resend, &osdc->req_unsent); __kick_osd_requests()
998 struct ceph_osd_client *osdc; osd_reset() local
1003 osdc = osd->o_osdc; osd_reset()
1004 down_read(&osdc->map_sem); osd_reset()
1005 mutex_lock(&osdc->request_mutex); osd_reset()
1006 __kick_osd_requests(osdc, osd); osd_reset()
1007 __send_queued(osdc); osd_reset()
1008 mutex_unlock(&osdc->request_mutex); osd_reset()
1009 up_read(&osdc->map_sem); osd_reset()
1015 static struct ceph_osd *create_osd(struct ceph_osd_client *osdc, int onum) create_osd() argument
1024 osd->o_osdc = osdc; create_osd()
1032 ceph_con_init(&osd->o_con, osd, &osd_con_ops, &osdc->client->msgr); create_osd()
1066 static void __remove_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd) __remove_osd() argument
1073 rb_erase(&osd->o_node, &osdc->osds); __remove_osd()
1077 static void remove_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd) remove_osd() argument
1083 __remove_osd(osdc, osd); remove_osd()
1088 static void remove_all_osds(struct ceph_osd_client *osdc) remove_all_osds() argument
1090 dout("%s %p\n", __func__, osdc); remove_all_osds()
1091 mutex_lock(&osdc->request_mutex); remove_all_osds()
1092 while (!RB_EMPTY_ROOT(&osdc->osds)) { remove_all_osds()
1093 struct ceph_osd *osd = rb_entry(rb_first(&osdc->osds), remove_all_osds()
1095 remove_osd(osdc, osd); remove_all_osds()
1097 mutex_unlock(&osdc->request_mutex); remove_all_osds()
1100 static void __move_osd_to_lru(struct ceph_osd_client *osdc, __move_osd_to_lru() argument
1106 list_add_tail(&osd->o_osd_lru, &osdc->osd_lru); __move_osd_to_lru()
1107 osd->lru_ttl = jiffies + osdc->client->options->osd_idle_ttl; __move_osd_to_lru()
1110 static void maybe_move_osd_to_lru(struct ceph_osd_client *osdc, maybe_move_osd_to_lru() argument
1117 __move_osd_to_lru(osdc, osd); maybe_move_osd_to_lru()
1127 static void remove_old_osds(struct ceph_osd_client *osdc) remove_old_osds() argument
1131 dout("__remove_old_osds %p\n", osdc); remove_old_osds()
1132 mutex_lock(&osdc->request_mutex); remove_old_osds()
1133 list_for_each_entry_safe(osd, nosd, &osdc->osd_lru, o_osd_lru) { remove_old_osds()
1136 remove_osd(osdc, osd); remove_old_osds()
1138 mutex_unlock(&osdc->request_mutex); remove_old_osds()
1144 static int __reset_osd(struct ceph_osd_client *osdc, struct ceph_osd *osd) __reset_osd() argument
1151 remove_osd(osdc, osd); __reset_osd()
1155 peer_addr = &osdc->osdmap->osd_addr[osd->o_osd]; __reset_osd()
1176 static void __insert_osd(struct ceph_osd_client *osdc, struct ceph_osd *new) __insert_osd() argument
1178 struct rb_node **p = &osdc->osds.rb_node; __insert_osd()
1195 rb_insert_color(&new->o_node, &osdc->osds); __insert_osd()
1198 static struct ceph_osd *__lookup_osd(struct ceph_osd_client *osdc, int o) __lookup_osd() argument
1201 struct rb_node *n = osdc->osds.rb_node; __lookup_osd()
1215 static void __schedule_osd_timeout(struct ceph_osd_client *osdc) __schedule_osd_timeout() argument
1217 schedule_delayed_work(&osdc->timeout_work, __schedule_osd_timeout()
1218 osdc->client->options->osd_keepalive_timeout); __schedule_osd_timeout()
1221 static void __cancel_osd_timeout(struct ceph_osd_client *osdc) __cancel_osd_timeout() argument
1223 cancel_delayed_work(&osdc->timeout_work); __cancel_osd_timeout()
1230 static void __register_request(struct ceph_osd_client *osdc, __register_request() argument
1233 req->r_tid = ++osdc->last_tid; __register_request()
1236 __insert_request(osdc, req); __register_request()
1238 osdc->num_requests++; __register_request()
1239 if (osdc->num_requests == 1) { __register_request()
1241 __schedule_osd_timeout(osdc); __register_request()
1246 * called under osdc->request_mutex
1248 static void __unregister_request(struct ceph_osd_client *osdc, __unregister_request() argument
1258 rb_erase(&req->r_node, &osdc->requests); __unregister_request()
1260 osdc->num_requests--; __unregister_request()
1267 maybe_move_osd_to_lru(osdc, req->r_osd); __unregister_request()
1275 if (osdc->num_requests == 0) { __unregister_request()
1277 __cancel_osd_timeout(osdc); __unregister_request()
1292 static void __register_linger_request(struct ceph_osd_client *osdc, __register_linger_request() argument
1299 list_add_tail(&req->r_linger_item, &osdc->req_linger); __register_linger_request()
1305 static void __unregister_linger_request(struct ceph_osd_client *osdc, __unregister_linger_request() argument
1321 maybe_move_osd_to_lru(osdc, req->r_osd); __unregister_linger_request()
1328 void ceph_osdc_set_request_linger(struct ceph_osd_client *osdc, ceph_osdc_set_request_linger() argument
1344 static bool __req_should_be_paused(struct ceph_osd_client *osdc, __req_should_be_paused() argument
1347 bool pauserd = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD); __req_should_be_paused()
1348 bool pausewr = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR) || __req_should_be_paused()
1349 ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL); __req_should_be_paused()
1395 struct ceph_osd_client *osdc = req->r_osdc; __enqueue_request() local
1403 list_move_tail(&req->r_req_lru_item, &osdc->req_unsent); __enqueue_request()
1405 list_move_tail(&req->r_req_lru_item, &osdc->req_notarget); __enqueue_request()
1419 static int __map_request(struct ceph_osd_client *osdc, __map_request() argument
1430 err = __calc_request_pg(osdc->osdmap, req, &pgid); __map_request()
1432 list_move(&req->r_req_lru_item, &osdc->req_notarget); __map_request()
1437 num = ceph_calc_pg_acting(osdc->osdmap, pgid, acting, &o); __map_request()
1442 req->r_paused = __req_should_be_paused(osdc, req); __map_request()
1470 req->r_osd = __lookup_osd(osdc, o); __map_request()
1473 req->r_osd = create_osd(osdc, o); __map_request()
1475 list_move(&req->r_req_lru_item, &osdc->req_notarget); __map_request()
1480 __insert_osd(osdc, req->r_osd); __map_request()
1484 &osdc->osdmap->osd_addr[o]); __map_request()
1497 static void __send_request(struct ceph_osd_client *osdc, __send_request() argument
1507 put_unaligned_le32(osdc->osdmap->epoch, req->r_request_osdmap_epoch); __send_request()
1518 list_move_tail(&req->r_req_lru_item, &osdc->req_lru); __send_request()
1530 static void __send_queued(struct ceph_osd_client *osdc) __send_queued() argument
1535 list_for_each_entry_safe(req, tmp, &osdc->req_unsent, r_req_lru_item) __send_queued()
1536 __send_request(osdc, req); __send_queued()
1542 static int __ceph_osdc_start_request(struct ceph_osd_client *osdc, __ceph_osdc_start_request() argument
1548 __register_request(osdc, req); __ceph_osdc_start_request()
1551 rc = __map_request(osdc, req, 0); __ceph_osdc_start_request()
1558 __unregister_request(osdc, req); __ceph_osdc_start_request()
1565 ceph_monc_request_next_osdmap(&osdc->client->monc); __ceph_osdc_start_request()
1567 __send_queued(osdc); __ceph_osdc_start_request()
1584 struct ceph_osd_client *osdc = handle_timeout() local
1586 struct ceph_options *opts = osdc->client->options; handle_timeout()
1591 down_read(&osdc->map_sem); handle_timeout()
1593 ceph_monc_request_next_osdmap(&osdc->client->monc); handle_timeout()
1595 mutex_lock(&osdc->request_mutex); handle_timeout()
1603 list_for_each_entry(req, &osdc->req_lru, r_req_lru_item) { handle_timeout()
1621 __schedule_osd_timeout(osdc); handle_timeout()
1622 __send_queued(osdc); handle_timeout()
1623 mutex_unlock(&osdc->request_mutex); handle_timeout()
1624 up_read(&osdc->map_sem); handle_timeout()
1629 struct ceph_osd_client *osdc = handle_osds_timeout() local
1632 unsigned long delay = osdc->client->options->osd_idle_ttl / 4; handle_osds_timeout()
1635 down_read(&osdc->map_sem); handle_osds_timeout()
1636 remove_old_osds(osdc); handle_osds_timeout()
1637 up_read(&osdc->map_sem); handle_osds_timeout()
1639 schedule_delayed_work(&osdc->osds_timeout_work, handle_osds_timeout()
1755 static void handle_reply(struct ceph_osd_client *osdc, struct ceph_msg *msg) handle_reply() argument
1798 down_read(&osdc->map_sem); handle_reply()
1799 mutex_lock(&osdc->request_mutex); handle_reply()
1800 req = __lookup_request(osdc, tid); handle_reply()
1854 __unregister_request(osdc, req); handle_reply()
1866 err = __ceph_osdc_start_request(osdc, req, true); handle_reply()
1893 __register_linger_request(osdc, req); handle_reply()
1899 __unregister_request(osdc, req); handle_reply()
1901 mutex_unlock(&osdc->request_mutex); handle_reply()
1902 up_read(&osdc->map_sem); handle_reply()
1925 mutex_unlock(&osdc->request_mutex); handle_reply()
1926 up_read(&osdc->map_sem); handle_reply()
1931 __unregister_request(osdc, req); handle_reply()
1939 mutex_unlock(&osdc->request_mutex); handle_reply()
1940 up_read(&osdc->map_sem); handle_reply()
1947 static void reset_changed_osds(struct ceph_osd_client *osdc) reset_changed_osds() argument
1951 dout("%s %p\n", __func__, osdc); reset_changed_osds()
1952 for (p = rb_first(&osdc->osds); p; p = n) { reset_changed_osds()
1956 if (!ceph_osd_is_up(osdc->osdmap, osd->o_osd) || reset_changed_osds()
1958 ceph_osd_addr(osdc->osdmap, reset_changed_osds()
1961 __reset_osd(osdc, osd); reset_changed_osds()
1971 static void kick_requests(struct ceph_osd_client *osdc, bool force_resend, kick_requests() argument
1982 mutex_lock(&osdc->request_mutex); kick_requests()
1983 for (p = rb_first(&osdc->requests); p; ) { kick_requests()
2000 __unregister_request(osdc, req); kick_requests()
2001 __register_linger_request(osdc, req); kick_requests()
2009 err = __map_request(osdc, req, force_resend_req); kick_requests()
2025 list_for_each_entry_safe(req, nreq, &osdc->req_linger, kick_requests()
2029 err = __map_request(osdc, req, kick_requests()
2052 __register_request(osdc, req); kick_requests()
2053 __unregister_linger_request(osdc, req); kick_requests()
2056 reset_changed_osds(osdc); kick_requests()
2057 mutex_unlock(&osdc->request_mutex); kick_requests()
2061 ceph_monc_request_next_osdmap(&osdc->client->monc); kick_requests()
2073 void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg *msg) ceph_osdc_handle_map() argument
2083 dout("handle_map have %u\n", osdc->osdmap ? osdc->osdmap->epoch : 0); ceph_osdc_handle_map()
2090 if (ceph_check_fsid(osdc->client, &fsid) < 0) ceph_osdc_handle_map()
2093 down_write(&osdc->map_sem); ceph_osdc_handle_map()
2095 was_full = ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL); ceph_osdc_handle_map()
2106 if (osdc->osdmap && osdc->osdmap->epoch+1 == epoch) { ceph_osdc_handle_map()
2110 osdc->osdmap, ceph_osdc_handle_map()
2111 &osdc->client->msgr); ceph_osdc_handle_map()
2117 if (newmap != osdc->osdmap) { ceph_osdc_handle_map()
2118 ceph_osdmap_destroy(osdc->osdmap); ceph_osdc_handle_map()
2119 osdc->osdmap = newmap; ceph_osdc_handle_map()
2122 ceph_osdmap_flag(osdc->osdmap, ceph_osdc_handle_map()
2124 kick_requests(osdc, 0, was_full); ceph_osdc_handle_map()
2146 } else if (osdc->osdmap && osdc->osdmap->epoch >= epoch) { ceph_osdc_handle_map()
2149 osdc->osdmap->epoch); ceph_osdc_handle_map()
2160 oldmap = osdc->osdmap; ceph_osdc_handle_map()
2161 osdc->osdmap = newmap; ceph_osdc_handle_map()
2168 ceph_osdmap_flag(osdc->osdmap, ceph_osdc_handle_map()
2170 kick_requests(osdc, skipped_map, was_full); ceph_osdc_handle_map()
2176 if (!osdc->osdmap) ceph_osdc_handle_map()
2179 downgrade_write(&osdc->map_sem); ceph_osdc_handle_map()
2180 ceph_monc_got_osdmap(&osdc->client->monc, osdc->osdmap->epoch); ceph_osdc_handle_map()
2187 if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) || ceph_osdc_handle_map()
2188 ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSERD) || ceph_osdc_handle_map()
2189 ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_PAUSEWR)) ceph_osdc_handle_map()
2190 ceph_monc_request_next_osdmap(&osdc->client->monc); ceph_osdc_handle_map()
2192 mutex_lock(&osdc->request_mutex); ceph_osdc_handle_map()
2193 __send_queued(osdc); ceph_osdc_handle_map()
2194 mutex_unlock(&osdc->request_mutex); ceph_osdc_handle_map()
2195 up_read(&osdc->map_sem); ceph_osdc_handle_map()
2196 wake_up_all(&osdc->client->auth_wq); ceph_osdc_handle_map()
2200 pr_err("osdc handle_map corrupt msg\n"); ceph_osdc_handle_map()
2202 up_write(&osdc->map_sem); ceph_osdc_handle_map()
2230 static void __insert_event(struct ceph_osd_client *osdc, __insert_event() argument
2233 struct rb_node **p = &osdc->event_tree.rb_node; __insert_event()
2249 rb_insert_color(&new->node, &osdc->event_tree); __insert_event()
2252 static struct ceph_osd_event *__find_event(struct ceph_osd_client *osdc, __find_event() argument
2255 struct rb_node **p = &osdc->event_tree.rb_node; __find_event()
2274 struct ceph_osd_client *osdc = event->osdc; __remove_event() local
2278 rb_erase(&event->node, &osdc->event_tree); __remove_event()
2285 int ceph_osdc_create_event(struct ceph_osd_client *osdc, ceph_osdc_create_event() argument
2299 event->osdc = osdc; ceph_osdc_create_event()
2305 spin_lock(&osdc->event_lock); ceph_osdc_create_event()
2306 event->cookie = ++osdc->event_count; ceph_osdc_create_event()
2307 __insert_event(osdc, event); ceph_osdc_create_event()
2308 spin_unlock(&osdc->event_lock); ceph_osdc_create_event()
2317 struct ceph_osd_client *osdc = event->osdc; ceph_osdc_cancel_event() local
2320 spin_lock(&osdc->event_lock); ceph_osdc_cancel_event()
2322 spin_unlock(&osdc->event_lock); ceph_osdc_cancel_event()
2348 static void handle_watch_notify(struct ceph_osd_client *osdc, handle_watch_notify() argument
2367 spin_lock(&osdc->event_lock); handle_watch_notify()
2368 event = __find_event(osdc, cookie); handle_watch_notify()
2373 spin_unlock(&osdc->event_lock); handle_watch_notify()
2389 queue_work(osdc->notify_wq, &event_work->work); handle_watch_notify()
2395 pr_err("osdc handle_watch_notify corrupt msg\n"); handle_watch_notify()
2500 int ceph_osdc_start_request(struct ceph_osd_client *osdc, ceph_osdc_start_request() argument
2506 down_read(&osdc->map_sem); ceph_osdc_start_request()
2507 mutex_lock(&osdc->request_mutex); ceph_osdc_start_request()
2509 rc = __ceph_osdc_start_request(osdc, req, nofail); ceph_osdc_start_request()
2511 mutex_unlock(&osdc->request_mutex); ceph_osdc_start_request()
2512 up_read(&osdc->map_sem); ceph_osdc_start_request()
2525 struct ceph_osd_client *osdc = req->r_osdc; ceph_osdc_cancel_request() local
2527 mutex_lock(&osdc->request_mutex); ceph_osdc_cancel_request()
2529 __unregister_linger_request(osdc, req); ceph_osdc_cancel_request()
2530 __unregister_request(osdc, req); ceph_osdc_cancel_request()
2531 mutex_unlock(&osdc->request_mutex); ceph_osdc_cancel_request()
2540 int ceph_osdc_wait_request(struct ceph_osd_client *osdc, ceph_osdc_wait_request() argument
2564 void ceph_osdc_sync(struct ceph_osd_client *osdc) ceph_osdc_sync() argument
2569 mutex_lock(&osdc->request_mutex); ceph_osdc_sync()
2570 last_tid = osdc->last_tid; ceph_osdc_sync()
2572 req = __lookup_request_ge(osdc, next_tid); ceph_osdc_sync()
2583 mutex_unlock(&osdc->request_mutex); ceph_osdc_sync()
2587 mutex_lock(&osdc->request_mutex); ceph_osdc_sync()
2590 mutex_unlock(&osdc->request_mutex); ceph_osdc_sync()
2599 void ceph_osdc_flush_notifies(struct ceph_osd_client *osdc) ceph_osdc_flush_notifies() argument
2601 flush_workqueue(osdc->notify_wq); ceph_osdc_flush_notifies()
2609 int ceph_osdc_init(struct ceph_osd_client *osdc, struct ceph_client *client) ceph_osdc_init() argument
2614 osdc->client = client; ceph_osdc_init()
2615 osdc->osdmap = NULL; ceph_osdc_init()
2616 init_rwsem(&osdc->map_sem); ceph_osdc_init()
2617 init_completion(&osdc->map_waiters); ceph_osdc_init()
2618 osdc->last_requested_map = 0; ceph_osdc_init()
2619 mutex_init(&osdc->request_mutex); ceph_osdc_init()
2620 osdc->last_tid = 0; ceph_osdc_init()
2621 osdc->osds = RB_ROOT; ceph_osdc_init()
2622 INIT_LIST_HEAD(&osdc->osd_lru); ceph_osdc_init()
2623 osdc->requests = RB_ROOT; ceph_osdc_init()
2624 INIT_LIST_HEAD(&osdc->req_lru); ceph_osdc_init()
2625 INIT_LIST_HEAD(&osdc->req_unsent); ceph_osdc_init()
2626 INIT_LIST_HEAD(&osdc->req_notarget); ceph_osdc_init()
2627 INIT_LIST_HEAD(&osdc->req_linger); ceph_osdc_init()
2628 osdc->num_requests = 0; ceph_osdc_init()
2629 INIT_DELAYED_WORK(&osdc->timeout_work, handle_timeout); ceph_osdc_init()
2630 INIT_DELAYED_WORK(&osdc->osds_timeout_work, handle_osds_timeout); ceph_osdc_init()
2631 spin_lock_init(&osdc->event_lock); ceph_osdc_init()
2632 osdc->event_tree = RB_ROOT; ceph_osdc_init()
2633 osdc->event_count = 0; ceph_osdc_init()
2635 schedule_delayed_work(&osdc->osds_timeout_work, ceph_osdc_init()
2636 round_jiffies_relative(osdc->client->options->osd_idle_ttl)); ceph_osdc_init()
2639 osdc->req_mempool = mempool_create_kmalloc_pool(10, ceph_osdc_init()
2641 if (!osdc->req_mempool) ceph_osdc_init()
2644 err = ceph_msgpool_init(&osdc->msgpool_op, CEPH_MSG_OSD_OP, ceph_osdc_init()
2649 err = ceph_msgpool_init(&osdc->msgpool_op_reply, CEPH_MSG_OSD_OPREPLY, ceph_osdc_init()
2656 osdc->notify_wq = create_singlethread_workqueue("ceph-watch-notify"); ceph_osdc_init()
2657 if (!osdc->notify_wq) ceph_osdc_init()
2663 ceph_msgpool_destroy(&osdc->msgpool_op_reply); ceph_osdc_init()
2665 ceph_msgpool_destroy(&osdc->msgpool_op); ceph_osdc_init()
2667 mempool_destroy(osdc->req_mempool); ceph_osdc_init()
2672 void ceph_osdc_stop(struct ceph_osd_client *osdc) ceph_osdc_stop() argument
2674 flush_workqueue(osdc->notify_wq); ceph_osdc_stop()
2675 destroy_workqueue(osdc->notify_wq); ceph_osdc_stop()
2676 cancel_delayed_work_sync(&osdc->timeout_work); ceph_osdc_stop()
2677 cancel_delayed_work_sync(&osdc->osds_timeout_work); ceph_osdc_stop()
2678 if (osdc->osdmap) { ceph_osdc_stop()
2679 ceph_osdmap_destroy(osdc->osdmap); ceph_osdc_stop()
2680 osdc->osdmap = NULL; ceph_osdc_stop()
2682 remove_all_osds(osdc); ceph_osdc_stop()
2683 mempool_destroy(osdc->req_mempool); ceph_osdc_stop()
2684 ceph_msgpool_destroy(&osdc->msgpool_op); ceph_osdc_stop()
2685 ceph_msgpool_destroy(&osdc->msgpool_op_reply); ceph_osdc_stop()
2692 int ceph_osdc_readpages(struct ceph_osd_client *osdc, ceph_osdc_readpages() argument
2703 req = ceph_osdc_new_request(osdc, layout, vino, off, plen, 0, 1, ceph_osdc_readpages()
2720 rc = ceph_osdc_start_request(osdc, req, false); ceph_osdc_readpages()
2722 rc = ceph_osdc_wait_request(osdc, req); ceph_osdc_readpages()
2733 int ceph_osdc_writepages(struct ceph_osd_client *osdc, struct ceph_vino vino, ceph_osdc_writepages() argument
2746 req = ceph_osdc_new_request(osdc, layout, vino, off, &len, 0, 1, ceph_osdc_writepages()
2761 rc = ceph_osdc_start_request(osdc, req, true); ceph_osdc_writepages()
2763 rc = ceph_osdc_wait_request(osdc, req); ceph_osdc_writepages()
2799 struct ceph_osd_client *osdc; dispatch() local
2804 osdc = osd->o_osdc; dispatch()
2808 ceph_osdc_handle_map(osdc, msg); dispatch()
2811 handle_reply(osdc, msg); dispatch()
2814 handle_watch_notify(osdc, msg); dispatch()
2835 struct ceph_osd_client *osdc = osd->o_osdc; get_reply() local
2843 mutex_lock(&osdc->request_mutex); get_reply()
2844 req = __lookup_request(osdc, tid); get_reply()
2880 mutex_unlock(&osdc->request_mutex); get_reply()
2935 struct ceph_osd_client *osdc = o->o_osdc; get_authorizer() local
2936 struct ceph_auth_client *ac = osdc->client->monc.auth; get_authorizer()
2963 struct ceph_osd_client *osdc = o->o_osdc; verify_authorizer_reply() local
2964 struct ceph_auth_client *ac = osdc->client->monc.auth; verify_authorizer_reply()
2972 struct ceph_osd_client *osdc = o->o_osdc; invalidate_authorizer() local
2973 struct ceph_auth_client *ac = osdc->client->monc.auth; invalidate_authorizer()
2976 return ceph_monc_validate_auth(&osdc->client->monc); invalidate_authorizer()
H A Ddebugfs.c23 * .../osdc - active osd requests
57 struct ceph_osdmap *map = client->osdc.osdmap; osdmap_show()
144 struct ceph_osd_client *osdc = &client->osdc; osdc_show() local
147 mutex_lock(&osdc->request_mutex); osdc_show()
148 for (p = rb_first(&osdc->requests); p; p = rb_next(p)) { osdc_show()
177 mutex_unlock(&osdc->request_mutex); osdc_show()
236 client->osdc.debugfs_file = debugfs_create_file("osdc", ceph_debugfs_client_init()
241 if (!client->osdc.debugfs_file) ceph_debugfs_client_init()
281 debugfs_remove(client->osdc.debugfs_file); ceph_debugfs_client_cleanup()
H A Dceph_common.c617 err = ceph_osdc_init(&client->osdc, client); ceph_create_client()
639 ceph_osdc_stop(&client->osdc); ceph_destroy_client()
658 client->osdc.osdmap && client->osdc.osdmap->epoch; have_mon_and_osd_map()
H A Dmon_client.c1024 ceph_osdc_handle_map(&monc->client->osdc, msg); dispatch()
/linux-4.4.14/include/linux/ceph/
H A Dosd_client.h186 struct ceph_osd_client *osdc; member in struct:ceph_osd_event
242 extern int ceph_osdc_init(struct ceph_osd_client *osdc,
244 extern void ceph_osdc_stop(struct ceph_osd_client *osdc);
246 extern void ceph_osdc_handle_reply(struct ceph_osd_client *osdc,
248 extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc,
316 extern struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc,
337 extern void ceph_osdc_set_request_linger(struct ceph_osd_client *osdc,
343 extern int ceph_osdc_start_request(struct ceph_osd_client *osdc,
347 extern int ceph_osdc_wait_request(struct ceph_osd_client *osdc,
349 extern void ceph_osdc_sync(struct ceph_osd_client *osdc);
351 extern void ceph_osdc_flush_notifies(struct ceph_osd_client *osdc);
353 extern int ceph_osdc_readpages(struct ceph_osd_client *osdc,
361 extern int ceph_osdc_writepages(struct ceph_osd_client *osdc,
371 extern int ceph_osdc_create_event(struct ceph_osd_client *osdc,
H A Dlibceph.h131 struct ceph_osd_client osdc; member in struct:ceph_client
/linux-4.4.14/fs/ceph/
H A Dioctl.c183 struct ceph_osd_client *osdc = ceph_ioctl_get_dataloc() local
184 &ceph_sb_to_client(inode->i_sb)->client->osdc; ceph_ioctl_get_dataloc()
196 down_read(&osdc->map_sem); ceph_ioctl_get_dataloc()
201 up_read(&osdc->map_sem); ceph_ioctl_get_dataloc()
218 r = ceph_oloc_oid_to_pg(osdc->osdmap, &oloc, &oid, &pgid); ceph_ioctl_get_dataloc()
220 up_read(&osdc->map_sem); ceph_ioctl_get_dataloc()
224 dl.osd = ceph_calc_pg_primary(osdc->osdmap, pgid); ceph_ioctl_get_dataloc()
227 ceph_osd_addr(osdc->osdmap, dl.osd); ceph_ioctl_get_dataloc()
233 up_read(&osdc->map_sem); ceph_ioctl_get_dataloc()
H A Daddr.c196 struct ceph_osd_client *osdc = readpage_nounlock() local
197 &ceph_inode_to_client(inode)->client->osdc; readpage_nounlock()
226 err = ceph_osdc_readpages(osdc, ceph_vino(inode), &ci->i_layout, readpage_nounlock()
313 struct ceph_osd_client *osdc = start_read() local
314 &ceph_inode_to_client(inode)->client->osdc; start_read()
343 req = ceph_osdc_new_request(osdc, &ci->i_layout, vino, off, &len,
382 ret = ceph_osdc_start_request(osdc, req, false);
480 struct ceph_osd_client *osdc; writepage_nounlock() local
498 osdc = &fsc->client->osdc; writepage_nounlock()
543 err = ceph_osdc_writepages(osdc, ceph_vino(inode), writepage_nounlock()
878 req = ceph_osdc_new_request(&fsc->client->osdc, ceph_writepages_start()
984 rc = ceph_osdc_start_request(&fsc->client->osdc, req, true); ceph_writepages_start()
1523 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, ceph_uninline_data()
1534 err = ceph_osdc_start_request(&fsc->client->osdc, req, false); ceph_uninline_data()
1536 err = ceph_osdc_wait_request(&fsc->client->osdc, req); ceph_uninline_data()
1541 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, ceph_uninline_data()
1578 err = ceph_osdc_start_request(&fsc->client->osdc, req, false); ceph_uninline_data()
1580 err = ceph_osdc_wait_request(&fsc->client->osdc, req); ceph_uninline_data()
1668 rd_req = ceph_osdc_alloc_request(&fsc->client->osdc, __ceph_pool_perm_get()
1683 wr_req = ceph_osdc_alloc_request(&fsc->client->osdc, __ceph_pool_perm_get()
1708 err = ceph_osdc_start_request(&fsc->client->osdc, rd_req, false); __ceph_pool_perm_get()
1712 err2 = ceph_osdc_start_request(&fsc->client->osdc, wr_req, false); __ceph_pool_perm_get()
1715 err = ceph_osdc_wait_request(&fsc->client->osdc, rd_req); __ceph_pool_perm_get()
1717 err2 = ceph_osdc_wait_request(&fsc->client->osdc, wr_req); __ceph_pool_perm_get()
H A Dfile.c443 ret = ceph_osdc_readpages(&fsc->client->osdc, ceph_vino(inode), striped_read()
667 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, ceph_sync_direct_write()
701 ret = ceph_osdc_start_request(&fsc->client->osdc, req, false); ceph_sync_direct_write()
703 ret = ceph_osdc_wait_request(&fsc->client->osdc, req); ceph_sync_direct_write()
783 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, ceph_sync_write()
832 ret = ceph_osdc_start_request(&fsc->client->osdc, req, false); ceph_sync_write()
834 ret = ceph_osdc_wait_request(&fsc->client->osdc, req); ceph_sync_write()
1003 struct ceph_osd_client *osdc = ceph_write_iter() local
1004 &ceph_sb_to_client(inode->i_sb)->client->osdc; ceph_write_iter()
1049 if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL)) { ceph_write_iter()
1141 ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_NEARFULL))) { ceph_write_iter()
1268 req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, ceph_zero_partial_object()
1283 ret = ceph_osdc_start_request(&fsc->client->osdc, req, false); ceph_zero_partial_object()
1285 ret = ceph_osdc_wait_request(&fsc->client->osdc, req); ceph_zero_partial_object()
1347 struct ceph_osd_client *osdc = ceph_fallocate() local
1348 &ceph_inode_to_client(inode)->client->osdc; ceph_fallocate()
1373 if (ceph_osdmap_flag(osdc->osdmap, CEPH_OSDMAP_FULL) && ceph_fallocate()
H A Dxattr.c72 struct ceph_osd_client *osdc = &fsc->client->osdc; ceph_vxattrcb_layout() local
78 down_read(&osdc->map_sem); ceph_vxattrcb_layout()
79 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, pool); ceph_vxattrcb_layout()
110 up_read(&osdc->map_sem); ceph_vxattrcb_layout()
140 struct ceph_osd_client *osdc = &fsc->client->osdc; ceph_vxattrcb_layout_pool() local
144 down_read(&osdc->map_sem); ceph_vxattrcb_layout_pool()
145 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, pool); ceph_vxattrcb_layout_pool()
150 up_read(&osdc->map_sem); ceph_vxattrcb_layout_pool()
H A Dsuper.c101 ceph_osdc_sync(&fsc->client->osdc); ceph_sync_fs()
/linux-4.4.14/drivers/block/
H A Drbd.c1555 static int rbd_obj_request_submit(struct ceph_osd_client *osdc, rbd_obj_request_submit() argument
1559 return ceph_osdc_start_request(osdc, obj_request->osd_req, false); rbd_obj_request_submit()
1938 struct ceph_osd_client *osdc; rbd_osd_req_create() local
1956 osdc = &rbd_dev->rbd_client->client->osdc; rbd_osd_req_create()
1957 osd_req = ceph_osdc_alloc_request(osdc, snapc, num_ops, false, rbd_osd_req_create()
1988 struct ceph_osd_client *osdc; rbd_osd_req_create_copyup() local
2005 osdc = &rbd_dev->rbd_client->client->osdc; rbd_osd_req_create_copyup()
2006 osd_req = ceph_osdc_alloc_request(osdc, snapc, num_osd_ops, rbd_osd_req_create_copyup()
2594 struct ceph_osd_client *osdc; rbd_img_obj_parent_read_full_callback() local
2631 struct ceph_osd_client *osdc; rbd_img_obj_parent_read_full_callback() local
2634 osdc = &rbd_dev->rbd_client->client->osdc; rbd_img_obj_parent_read_full_callback()
2635 img_result = rbd_obj_request_submit(osdc, orig_request); rbd_img_obj_parent_read_full_callback()
2671 osdc = &rbd_dev->rbd_client->client->osdc; rbd_img_obj_parent_read_full_callback()
2672 img_result = rbd_obj_request_submit(osdc, orig_request); rbd_img_obj_parent_read_full_callback()
2813 struct ceph_osd_client *osdc; rbd_img_obj_exists_callback() local
2815 osdc = &rbd_dev->rbd_client->client->osdc; rbd_img_obj_exists_callback()
2816 result = rbd_obj_request_submit(osdc, orig_request); rbd_img_obj_exists_callback()
2850 struct ceph_osd_client *osdc; rbd_img_obj_exists_submit() local
2894 osdc = &rbd_dev->rbd_client->client->osdc; rbd_img_obj_exists_submit()
2895 ret = rbd_obj_request_submit(osdc, stat_request); rbd_img_obj_exists_submit()
2953 struct ceph_osd_client *osdc; rbd_img_obj_request_submit() local
2956 osdc = &rbd_dev->rbd_client->client->osdc; rbd_img_obj_request_submit()
2958 return rbd_obj_request_submit(osdc, obj_request); rbd_img_obj_request_submit()
3018 struct ceph_osd_client *osdc; rbd_img_parent_read_callback() local
3020 osdc = &rbd_dev->rbd_client->client->osdc; rbd_img_parent_read_callback()
3021 img_result = rbd_obj_request_submit(osdc, obj_request); rbd_img_parent_read_callback()
3099 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; rbd_obj_notify_ack_sync() local
3117 ret = rbd_obj_request_submit(osdc, obj_request); rbd_obj_notify_ack_sync()
3162 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; rbd_obj_watch_request_helper() local
3163 struct ceph_options *opts = osdc->client->options; rbd_obj_watch_request_helper()
3184 ceph_osdc_set_request_linger(osdc, obj_request->osd_req); rbd_obj_watch_request_helper()
3186 ret = rbd_obj_request_submit(osdc, obj_request); rbd_obj_watch_request_helper()
3213 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; rbd_dev_header_watch_sync() local
3220 ret = ceph_osdc_create_event(osdc, rbd_watch_cb, rbd_dev, rbd_dev_header_watch_sync()
3283 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; rbd_obj_method_sync() local
3334 ret = rbd_obj_request_submit(osdc, obj_request); rbd_obj_method_sync()
3505 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; rbd_obj_read_sync() local
3540 ret = rbd_obj_request_submit(osdc, obj_request); rbd_obj_read_sync()
4537 struct ceph_osd_client *osdc = &rbd_dev->rbd_client->client->osdc; rbd_spec_fill_names() local
4550 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, spec->pool_id); rbd_spec_fill_names()
4983 ret = ceph_pg_poolid_by_name(rbdc->client->osdc.osdmap, pool_name); rbd_add_get_pool_id()
4990 if (rbdc->client->osdc.osdmap->epoch < newest_epoch) { rbd_add_get_pool_id()
5588 ceph_osdc_flush_notifies(&rbd_dev->rbd_client->client->osdc); do_rbd_remove()

Completed in 330 milliseconds