Lines Matching refs:srv_sess

88 rnbd_get_sess_dev(int dev_id, struct rnbd_srv_session *srv_sess)  in rnbd_get_sess_dev()  argument
94 sess_dev = xa_load(&srv_sess->index_idr, dev_id); in rnbd_get_sess_dev()
117 static int process_rdma(struct rnbd_srv_session *srv_sess, in process_rdma() argument
129 trace_process_rdma(srv_sess, msg, id, datalen, usrlen); in process_rdma()
137 sess_dev = rnbd_get_sess_dev(dev_id, srv_sess); in process_rdma()
140 srv_sess->sessname, dev_id); in process_rdma()
161 prio = srv_sess->ver < RNBD_PROTO_VER_MAJOR || in process_rdma()
235 static void destroy_sess(struct rnbd_srv_session *srv_sess) in destroy_sess() argument
240 if (xa_empty(&srv_sess->index_idr)) in destroy_sess()
243 trace_destroy_sess(srv_sess); in destroy_sess()
245 mutex_lock(&srv_sess->lock); in destroy_sess()
246 xa_for_each(&srv_sess->index_idr, index, sess_dev) in destroy_sess()
248 mutex_unlock(&srv_sess->lock); in destroy_sess()
251 xa_destroy(&srv_sess->index_idr); in destroy_sess()
253 pr_info("RTRS Session %s disconnected\n", srv_sess->sessname); in destroy_sess()
256 list_del(&srv_sess->list); in destroy_sess()
259 mutex_destroy(&srv_sess->lock); in destroy_sess()
260 kfree(srv_sess); in destroy_sess()
265 struct rnbd_srv_session *srv_sess; in create_sess() local
275 srv_sess = kzalloc(sizeof(*srv_sess), GFP_KERNEL); in create_sess()
276 if (!srv_sess) in create_sess()
279 srv_sess->queue_depth = rtrs_srv_get_queue_depth(rtrs); in create_sess()
280 xa_init_flags(&srv_sess->index_idr, XA_FLAGS_ALLOC); in create_sess()
281 mutex_init(&srv_sess->lock); in create_sess()
283 list_add(&srv_sess->list, &sess_list); in create_sess()
286 srv_sess->rtrs = rtrs; in create_sess()
287 strscpy(srv_sess->sessname, pathname, sizeof(srv_sess->sessname)); in create_sess()
289 rtrs_srv_set_sess_priv(rtrs, srv_sess); in create_sess()
291 trace_create_sess(srv_sess); in create_sess()
299 struct rnbd_srv_session *srv_sess = priv; in rnbd_srv_link_ev() local
306 if (WARN_ON_ONCE(!srv_sess)) in rnbd_srv_link_ev()
309 destroy_sess(srv_sess); in rnbd_srv_link_ev()
314 ev, srv_sess->sessname); in rnbd_srv_link_ev()
335 static void process_msg_close(struct rnbd_srv_session *srv_sess, in process_msg_close() argument
342 trace_process_msg_close(srv_sess, close_msg); in process_msg_close()
345 srv_sess); in process_msg_close()
350 mutex_lock(&srv_sess->lock); in process_msg_close()
352 mutex_unlock(&srv_sess->lock); in process_msg_close()
355 static int process_msg_open(struct rnbd_srv_session *srv_sess,
359 static void process_msg_sess_info(struct rnbd_srv_session *srv_sess,
367 struct rnbd_srv_session *srv_sess = priv; in rnbd_srv_rdma_ev() local
372 if (WARN_ON_ONCE(!srv_sess)) in rnbd_srv_rdma_ev()
379 return process_rdma(srv_sess, id, data, datalen, usr, usrlen); in rnbd_srv_rdma_ev()
381 process_msg_close(srv_sess, data, datalen, usr, usrlen); in rnbd_srv_rdma_ev()
384 ret = process_msg_open(srv_sess, usr, usrlen, data, datalen); in rnbd_srv_rdma_ev()
387 process_msg_sess_info(srv_sess, usr, usrlen, data, datalen); in rnbd_srv_rdma_ev()
391 type, srv_sess->sessname); in rnbd_srv_rdma_ev()
405 *rnbd_sess_dev_alloc(struct rnbd_srv_session *srv_sess) in rnbd_sess_dev_alloc() argument
414 error = xa_alloc(&srv_sess->index_idr, &sess_dev->device_id, sess_dev, in rnbd_sess_dev_alloc()
466 struct rnbd_srv_session *srv_sess, in rnbd_srv_check_update_open_perm() argument
481 srv_dev->name, srv_sess->sessname, in rnbd_srv_check_update_open_perm()
492 srv_dev->name, srv_sess->sessname, in rnbd_srv_check_update_open_perm()
500 srv_dev->name, srv_sess->sessname, access_mode); in rnbd_srv_check_update_open_perm()
511 struct rnbd_srv_session *srv_sess, in rnbd_srv_get_or_create_srv_dev() argument
525 ret = rnbd_srv_check_update_open_perm(dev, srv_sess, access_mode); in rnbd_srv_get_or_create_srv_dev()
560 rnbd_srv_create_set_sess_dev(struct rnbd_srv_session *srv_sess, in rnbd_srv_create_set_sess_dev() argument
565 struct rnbd_srv_sess_dev *sdev = rnbd_sess_dev_alloc(srv_sess); in rnbd_srv_create_set_sess_dev()
575 sdev->sess = srv_sess; in rnbd_srv_create_set_sess_dev()
583 static char *rnbd_srv_get_full_path(struct rnbd_srv_session *srv_sess, in rnbd_srv_get_full_path() argument
603 dev_search_path, srv_sess->sessname, dev_name); in rnbd_srv_get_full_path()
610 dev_search_path, srv_sess->sessname, dev_name); in rnbd_srv_get_full_path()
633 static void process_msg_sess_info(struct rnbd_srv_session *srv_sess, in process_msg_sess_info() argument
640 srv_sess->ver = min_t(u8, sess_info_msg->ver, RNBD_PROTO_VER_MAJOR); in process_msg_sess_info()
642 trace_process_msg_sess_info(srv_sess, sess_info_msg); in process_msg_sess_info()
645 rsp->ver = srv_sess->ver; in process_msg_sess_info()
657 find_srv_sess_dev(struct rnbd_srv_session *srv_sess, const char *dev_name) in find_srv_sess_dev() argument
662 if (xa_empty(&srv_sess->index_idr)) in find_srv_sess_dev()
665 xa_for_each(&srv_sess->index_idr, index, sess_dev) in find_srv_sess_dev()
672 static int process_msg_open(struct rnbd_srv_session *srv_sess, in process_msg_open() argument
685 trace_process_msg_open(srv_sess, open_msg); in process_msg_open()
690 mutex_lock(&srv_sess->lock); in process_msg_open()
692 srv_sess_dev = find_srv_sess_dev(srv_sess, open_msg->dev_name); in process_msg_open()
699 srv_sess->sessname, dev_search_path, open_msg->dev_name, in process_msg_open()
706 srv_sess->sessname, open_msg->dev_name); in process_msg_open()
710 full_path = rnbd_srv_get_full_path(srv_sess, open_msg->dev_name); in process_msg_open()
714 open_msg->dev_name, srv_sess->sessname, ret); in process_msg_open()
722 full_path, srv_sess->sessname, ret); in process_msg_open()
726 srv_dev = rnbd_srv_get_or_create_srv_dev(bdev, srv_sess, in process_msg_open()
730 full_path, srv_sess->sessname, PTR_ERR(srv_dev)); in process_msg_open()
735 srv_sess_dev = rnbd_srv_create_set_sess_dev(srv_sess, open_msg, bdev, in process_msg_open()
740 full_path, srv_sess->sessname, PTR_ERR(srv_sess_dev)); in process_msg_open()
779 mutex_unlock(&srv_sess->lock); in process_msg_open()
783 xa_erase(&srv_sess->index_idr, srv_sess_dev->device_id); in process_msg_open()
798 mutex_unlock(&srv_sess->lock); in process_msg_open()