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