Lines Matching defs:srv_sess
100 rnbd_get_sess_dev(int dev_id, struct rnbd_srv_session *srv_sess)
106 sess_dev = xa_load(&srv_sess->index_idr, dev_id);
118 struct rnbd_srv_session *srv_sess,
137 sess_dev = rnbd_get_sess_dev(dev_id, srv_sess);
140 srv_sess->sessname, dev_id);
165 prio = srv_sess->ver < RNBD_PROTO_VER_MAJOR ||
239 static void destroy_sess(struct rnbd_srv_session *srv_sess)
243 if (list_empty(&srv_sess->sess_dev_list))
246 mutex_lock(&srv_sess->lock);
247 list_for_each_entry_safe(sess_dev, tmp, &srv_sess->sess_dev_list,
250 mutex_unlock(&srv_sess->lock);
253 xa_destroy(&srv_sess->index_idr);
254 bioset_exit(&srv_sess->sess_bio_set);
256 pr_info("RTRS Session %s disconnected\n", srv_sess->sessname);
259 list_del(&srv_sess->list);
262 mutex_destroy(&srv_sess->lock);
263 kfree(srv_sess);
268 struct rnbd_srv_session *srv_sess;
278 srv_sess = kzalloc(sizeof(*srv_sess), GFP_KERNEL);
279 if (!srv_sess)
282 srv_sess->queue_depth = rtrs_srv_get_queue_depth(rtrs);
283 err = bioset_init(&srv_sess->sess_bio_set, srv_sess->queue_depth,
289 kfree(srv_sess);
293 xa_init_flags(&srv_sess->index_idr, XA_FLAGS_ALLOC);
294 INIT_LIST_HEAD(&srv_sess->sess_dev_list);
295 mutex_init(&srv_sess->lock);
297 list_add(&srv_sess->list, &sess_list);
300 srv_sess->rtrs = rtrs;
301 strlcpy(srv_sess->sessname, sessname, sizeof(srv_sess->sessname));
303 rtrs_srv_set_sess_priv(rtrs, srv_sess);
311 struct rnbd_srv_session *srv_sess = priv;
318 if (WARN_ON_ONCE(!srv_sess))
321 destroy_sess(srv_sess);
326 ev, srv_sess->sessname);
332 struct rnbd_srv_session *srv_sess,
340 srv_sess);
345 mutex_lock(&srv_sess->lock);
347 mutex_unlock(&srv_sess->lock);
352 struct rnbd_srv_session *srv_sess,
357 struct rnbd_srv_session *srv_sess,
366 struct rnbd_srv_session *srv_sess = priv;
371 if (WARN_ON_ONCE(!srv_sess))
378 return process_rdma(rtrs, srv_sess, id, data, datalen, usr,
381 ret = process_msg_close(rtrs, srv_sess, data, datalen,
385 ret = process_msg_open(rtrs, srv_sess, usr, usrlen,
389 ret = process_msg_sess_info(rtrs, srv_sess, usr, usrlen,
394 type, dir, srv_sess->sessname);
403 *rnbd_sess_dev_alloc(struct rnbd_srv_session *srv_sess)
412 error = xa_alloc(&srv_sess->index_idr, &sess_dev->device_id, sess_dev,
464 struct rnbd_srv_session *srv_sess,
481 srv_dev->id, srv_sess->sessname,
492 srv_dev->id, srv_sess->sessname,
499 srv_dev->id, srv_sess->sessname, access_mode);
510 struct rnbd_srv_session *srv_sess,
524 ret = rnbd_srv_check_update_open_perm(dev, srv_sess, access_mode);
566 rnbd_srv_create_set_sess_dev(struct rnbd_srv_session *srv_sess,
571 struct rnbd_srv_sess_dev *sdev = rnbd_sess_dev_alloc(srv_sess);
581 sdev->sess = srv_sess;
589 static char *rnbd_srv_get_full_path(struct rnbd_srv_session *srv_sess,
609 dev_search_path, srv_sess->sessname, dev_name);
616 dev_search_path, srv_sess->sessname, dev_name);
640 struct rnbd_srv_session *srv_sess,
647 srv_sess->ver = min_t(u8, sess_info_msg->ver, RNBD_PROTO_VER_MAJOR);
649 srv_sess->sessname, srv_sess->ver,
653 rsp->ver = srv_sess->ver;
660 * @srv_sess: the session to search.
663 * Return struct rnbd_srv_sess_dev if srv_sess already opened the dev_name
667 find_srv_sess_dev(struct rnbd_srv_session *srv_sess, const char *dev_name)
671 if (list_empty(&srv_sess->sess_dev_list))
674 list_for_each_entry(sess_dev, &srv_sess->sess_dev_list, sess_list)
682 struct rnbd_srv_session *srv_sess,
696 srv_sess->sessname, open_msg->dev_name,
702 mutex_lock(&srv_sess->lock);
704 srv_sess_dev = find_srv_sess_dev(srv_sess, open_msg->dev_name);
711 srv_sess->sessname, dev_search_path, open_msg->dev_name,
718 srv_sess->sessname, open_msg->dev_name);
722 full_path = rnbd_srv_get_full_path(srv_sess, open_msg->dev_name);
726 open_msg->dev_name, srv_sess->sessname, ret);
731 &srv_sess->sess_bio_set);
734 full_path, srv_sess->sessname, PTR_ERR(rnbd_dev));
739 srv_dev = rnbd_srv_get_or_create_srv_dev(rnbd_dev, srv_sess,
743 full_path, srv_sess->sessname, PTR_ERR(srv_dev));
748 srv_sess_dev = rnbd_srv_create_set_sess_dev(srv_sess, open_msg,
753 full_path, srv_sess->sessname, PTR_ERR(srv_sess_dev));
787 list_add(&srv_sess_dev->sess_list, &srv_sess->sess_dev_list);
795 mutex_unlock(&srv_sess->lock);
799 xa_erase(&srv_sess->index_idr, srv_sess_dev->device_id);
814 mutex_unlock(&srv_sess->lock);