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; in rnbd_get_sess_dev() local
94 sess_dev = xa_load(&srv_sess->index_idr, dev_id); in rnbd_get_sess_dev()
95 if (sess_dev) in rnbd_get_sess_dev()
96 ret = kref_get_unless_zero(&sess_dev->kref); in rnbd_get_sess_dev()
102 return sess_dev; in rnbd_get_sess_dev()
108 struct rnbd_srv_sess_dev *sess_dev = rnbd_priv->sess_dev; in rnbd_dev_bi_end_io() local
110 rnbd_put_sess_dev(sess_dev); in rnbd_dev_bi_end_io()
123 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()
140 srv_sess->sessname, dev_id, sess_dev); in process_rdma()
145 priv->sess_dev = sess_dev; in process_rdma()
148 bio = bio_alloc(file_bdev(sess_dev->bdev_file), 1, in process_rdma()
152 rnbd_srv_err_rl(sess_dev, "Failed to map data to bio\n"); in process_rdma()
160 rnbd_srv_err_rl(sess_dev, "Datalen mismatch: bio bi_size (%u), bi_size (%u)\n", in process_rdma()
178 rnbd_put_sess_dev(sess_dev); in process_rdma()
211 void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev, bool keep_id) in rnbd_destroy_sess_dev() argument
219 xa_cmpxchg(&sess_dev->sess->index_idr, sess_dev->device_id, in rnbd_destroy_sess_dev()
220 sess_dev, NULL, 0); in rnbd_destroy_sess_dev()
222 xa_erase(&sess_dev->sess->index_idr, sess_dev->device_id); in rnbd_destroy_sess_dev()
225 sess_dev->destroy_comp = &dc; in rnbd_destroy_sess_dev()
226 rnbd_put_sess_dev(sess_dev); in rnbd_destroy_sess_dev()
229 fput(sess_dev->bdev_file); in rnbd_destroy_sess_dev()
230 mutex_lock(&sess_dev->dev->lock); in rnbd_destroy_sess_dev()
231 list_del(&sess_dev->dev_list); in rnbd_destroy_sess_dev()
232 if (!sess_dev->readonly) in rnbd_destroy_sess_dev()
233 sess_dev->dev->open_write_cnt--; in rnbd_destroy_sess_dev()
234 mutex_unlock(&sess_dev->dev->lock); in rnbd_destroy_sess_dev()
236 rnbd_put_srv_dev(sess_dev->dev); in rnbd_destroy_sess_dev()
238 rnbd_srv_info(sess_dev, "Device closed\n"); in rnbd_destroy_sess_dev()
239 kfree(sess_dev); in rnbd_destroy_sess_dev()
244 struct rnbd_srv_sess_dev *sess_dev; in destroy_sess() local
253 xa_for_each(&srv_sess->index_idr, index, sess_dev) in destroy_sess()
254 rnbd_srv_destroy_dev_session_sysfs(sess_dev); in destroy_sess()
326 void rnbd_srv_sess_dev_force_close(struct rnbd_srv_sess_dev *sess_dev, in rnbd_srv_sess_dev_force_close() argument
329 struct rnbd_srv_session *sess = sess_dev->sess; in rnbd_srv_sess_dev_force_close()
335 sess_dev->keep_id = true; in rnbd_srv_sess_dev_force_close()
337 sysfs_remove_file_self(&sess_dev->kobj, &attr->attr); in rnbd_srv_sess_dev_force_close()
338 rnbd_srv_destroy_dev_session_sysfs(sess_dev); in rnbd_srv_sess_dev_force_close()
347 struct rnbd_srv_sess_dev *sess_dev; in process_msg_close() local
351 sess_dev = rnbd_get_sess_dev(le32_to_cpu(close_msg->device_id), in process_msg_close()
353 if (IS_ERR(sess_dev)) in process_msg_close()
356 rnbd_put_sess_dev(sess_dev); in process_msg_close()
358 rnbd_srv_destroy_dev_session_sysfs(sess_dev); in process_msg_close()
414 struct rnbd_srv_sess_dev *sess_dev; in rnbd_sess_dev_alloc() local
417 sess_dev = kzalloc(sizeof(*sess_dev), GFP_KERNEL); in rnbd_sess_dev_alloc()
418 if (!sess_dev) in rnbd_sess_dev_alloc()
421 error = xa_alloc(&srv_sess->index_idr, &sess_dev->device_id, sess_dev, in rnbd_sess_dev_alloc()
425 kfree(sess_dev); in rnbd_sess_dev_alloc()
429 return sess_dev; in rnbd_sess_dev_alloc()
542 struct rnbd_srv_sess_dev *sess_dev) in rnbd_srv_fill_msg_open_rsp() argument
544 struct block_device *bdev = file_bdev(sess_dev->bdev_file); in rnbd_srv_fill_msg_open_rsp()
547 rsp->device_id = cpu_to_le32(sess_dev->device_id); in rnbd_srv_fill_msg_open_rsp()
667 struct rnbd_srv_sess_dev *sess_dev; in find_srv_sess_dev() local
673 xa_for_each(&srv_sess->index_idr, index, sess_dev) 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()