Lines Matching refs:sess_dev
71 struct rnbd_srv_sess_dev *sess_dev; member
76 struct rnbd_srv_sess_dev *sess_dev; in rnbd_sess_dev_release() local
78 sess_dev = container_of(kref, struct rnbd_srv_sess_dev, kref); in rnbd_sess_dev_release()
79 complete(sess_dev->destroy_comp); in rnbd_sess_dev_release()
82 static inline void rnbd_put_sess_dev(struct rnbd_srv_sess_dev *sess_dev) in rnbd_put_sess_dev() argument
84 kref_put(&sess_dev->kref, rnbd_sess_dev_release); in rnbd_put_sess_dev()
90 struct rnbd_srv_sess_dev *sess_dev = rnbd_priv->sess_dev; in rnbd_endio() local
92 rnbd_put_sess_dev(sess_dev); in rnbd_endio()
102 struct rnbd_srv_sess_dev *sess_dev; in rnbd_get_sess_dev() local
106 sess_dev = xa_load(&srv_sess->index_idr, dev_id); in rnbd_get_sess_dev()
107 if (likely(sess_dev)) in rnbd_get_sess_dev()
108 ret = kref_get_unless_zero(&sess_dev->kref); in rnbd_get_sess_dev()
111 if (!sess_dev || !ret) in rnbd_get_sess_dev()
114 return sess_dev; in rnbd_get_sess_dev()
124 struct rnbd_srv_sess_dev *sess_dev; in process_rdma() local
137 sess_dev = rnbd_get_sess_dev(dev_id, srv_sess); in process_rdma()
138 if (IS_ERR(sess_dev)) { in process_rdma()
145 priv->sess_dev = sess_dev; in process_rdma()
149 bio = rnbd_bio_map_kern(data, sess_dev->rnbd_dev->ibd_bio_set, datalen, GFP_KERNEL); in process_rdma()
152 rnbd_srv_err(sess_dev, "Failed to generate bio, err: %d\n", err); in process_rdma()
157 io->dev = sess_dev->rnbd_dev; in process_rdma()
168 bio_set_dev(bio, sess_dev->rnbd_dev->bdev); in process_rdma()
175 rnbd_put_sess_dev(sess_dev); in process_rdma()
215 void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev) in rnbd_destroy_sess_dev() argument
219 xa_erase(&sess_dev->sess->index_idr, sess_dev->device_id); in rnbd_destroy_sess_dev()
221 sess_dev->destroy_comp = &dc; in rnbd_destroy_sess_dev()
222 rnbd_put_sess_dev(sess_dev); in rnbd_destroy_sess_dev()
225 rnbd_dev_close(sess_dev->rnbd_dev); in rnbd_destroy_sess_dev()
226 list_del(&sess_dev->sess_list); in rnbd_destroy_sess_dev()
227 mutex_lock(&sess_dev->dev->lock); in rnbd_destroy_sess_dev()
228 list_del(&sess_dev->dev_list); in rnbd_destroy_sess_dev()
229 if (sess_dev->open_flags & FMODE_WRITE) in rnbd_destroy_sess_dev()
230 sess_dev->dev->open_write_cnt--; in rnbd_destroy_sess_dev()
231 mutex_unlock(&sess_dev->dev->lock); in rnbd_destroy_sess_dev()
233 rnbd_put_srv_dev(sess_dev->dev); in rnbd_destroy_sess_dev()
235 rnbd_srv_info(sess_dev, "Device closed\n"); in rnbd_destroy_sess_dev()
236 kfree(sess_dev); in rnbd_destroy_sess_dev()
241 struct rnbd_srv_sess_dev *sess_dev, *tmp; in destroy_sess() local
247 list_for_each_entry_safe(sess_dev, tmp, &srv_sess->sess_dev_list, in destroy_sess()
249 rnbd_srv_destroy_dev_session_sysfs(sess_dev); in destroy_sess()
337 struct rnbd_srv_sess_dev *sess_dev; in process_msg_close() local
339 sess_dev = rnbd_get_sess_dev(le32_to_cpu(close_msg->device_id), in process_msg_close()
341 if (IS_ERR(sess_dev)) in process_msg_close()
344 rnbd_put_sess_dev(sess_dev); in process_msg_close()
346 rnbd_srv_destroy_dev_session_sysfs(sess_dev); in process_msg_close()
405 struct rnbd_srv_sess_dev *sess_dev; in rnbd_sess_dev_alloc() local
408 sess_dev = kzalloc(sizeof(*sess_dev), GFP_KERNEL); in rnbd_sess_dev_alloc()
409 if (!sess_dev) in rnbd_sess_dev_alloc()
412 error = xa_alloc(&srv_sess->index_idr, &sess_dev->device_id, sess_dev, in rnbd_sess_dev_alloc()
416 kfree(sess_dev); in rnbd_sess_dev_alloc()
420 return sess_dev; in rnbd_sess_dev_alloc()
534 struct rnbd_srv_sess_dev *sess_dev) in rnbd_srv_fill_msg_open_rsp() argument
536 struct rnbd_dev *rnbd_dev = sess_dev->rnbd_dev; in rnbd_srv_fill_msg_open_rsp()
540 cpu_to_le32(sess_dev->device_id); in rnbd_srv_fill_msg_open_rsp()
668 struct rnbd_srv_sess_dev *sess_dev; in find_srv_sess_dev() local
673 list_for_each_entry(sess_dev, &srv_sess->sess_dev_list, sess_list) in find_srv_sess_dev()
674 if (!strcmp(sess_dev->pathname, dev_name)) in find_srv_sess_dev()
675 return sess_dev; in find_srv_sess_dev()