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;
94 sess_dev = xa_load(&srv_sess->index_idr, dev_id);
95 if (sess_dev)
96 ret = kref_get_unless_zero(&sess_dev->kref);
102 return sess_dev;
108 struct rnbd_srv_sess_dev *sess_dev = rnbd_priv->sess_dev;
110 rnbd_put_sess_dev(sess_dev);
123 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;
148 bio = bio_alloc(sess_dev->bdev, 1,
152 rnbd_srv_err(sess_dev, "Failed to map data to bio\n");
171 rnbd_put_sess_dev(sess_dev);
204 void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev, bool keep_id)
212 xa_cmpxchg(&sess_dev->sess->index_idr, sess_dev->device_id,
213 sess_dev, NULL, 0);
215 xa_erase(&sess_dev->sess->index_idr, sess_dev->device_id);
218 sess_dev->destroy_comp = &dc;
219 rnbd_put_sess_dev(sess_dev);
222 blkdev_put(sess_dev->bdev, NULL);
223 mutex_lock(&sess_dev->dev->lock);
224 list_del(&sess_dev->dev_list);
225 if (!sess_dev->readonly)
226 sess_dev->dev->open_write_cnt--;
227 mutex_unlock(&sess_dev->dev->lock);
229 rnbd_put_srv_dev(sess_dev->dev);
231 rnbd_srv_info(sess_dev, "Device closed\n");
232 kfree(sess_dev);
237 struct rnbd_srv_sess_dev *sess_dev;
246 xa_for_each(&srv_sess->index_idr, index, sess_dev)
247 rnbd_srv_destroy_dev_session_sysfs(sess_dev);
319 void rnbd_srv_sess_dev_force_close(struct rnbd_srv_sess_dev *sess_dev,
322 struct rnbd_srv_session *sess = sess_dev->sess;
328 sess_dev->keep_id = true;
330 sysfs_remove_file_self(&sess_dev->kobj, &attr->attr);
331 rnbd_srv_destroy_dev_session_sysfs(sess_dev);
340 struct rnbd_srv_sess_dev *sess_dev;
344 sess_dev = rnbd_get_sess_dev(le32_to_cpu(close_msg->device_id),
346 if (IS_ERR(sess_dev))
349 rnbd_put_sess_dev(sess_dev);
351 rnbd_srv_destroy_dev_session_sysfs(sess_dev);
407 struct rnbd_srv_sess_dev *sess_dev;
410 sess_dev = kzalloc(sizeof(*sess_dev), GFP_KERNEL);
411 if (!sess_dev)
414 error = xa_alloc(&srv_sess->index_idr, &sess_dev->device_id, sess_dev,
418 kfree(sess_dev);
422 return sess_dev;
535 struct rnbd_srv_sess_dev *sess_dev)
537 struct block_device *bdev = sess_dev->bdev;
540 rsp->device_id = cpu_to_le32(sess_dev->device_id);
659 struct rnbd_srv_sess_dev *sess_dev;
665 xa_for_each(&srv_sess->index_idr, index, sess_dev)
666 if (!strcmp(sess_dev->pathname, dev_name))
667 return sess_dev;
739 pr_err("Opening device '%s' on session %s failed, creating sess_dev failed, err: %ld\n",