Lines Matching defs:srv_sess

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