Lines Matching refs:dev

20 	struct spdk_scsi_dev *dev;  in allocate_dev()  local
24 dev = &g_devs[i]; in allocate_dev()
25 if (!dev->is_allocated) { in allocate_dev()
26 memset(dev, 0, sizeof(*dev)); in allocate_dev()
27 dev->id = i; in allocate_dev()
28 dev->is_allocated = 1; in allocate_dev()
29 TAILQ_INIT(&dev->luns); in allocate_dev()
30 return dev; in allocate_dev()
38 free_dev(struct spdk_scsi_dev *dev) in free_dev() argument
40 assert(dev->is_allocated == 1); in free_dev()
41 assert(dev->removed == true); in free_dev()
43 dev->is_allocated = 0; in free_dev()
45 if (dev->remove_cb) { in free_dev()
46 dev->remove_cb(dev->remove_ctx, 0); in free_dev()
47 dev->remove_cb = NULL; in free_dev()
52 spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev, in spdk_scsi_dev_destruct() argument
57 if (dev == NULL) { in spdk_scsi_dev_destruct()
64 if (dev->removed) { in spdk_scsi_dev_destruct()
71 dev->removed = true; in spdk_scsi_dev_destruct()
72 dev->remove_cb = cb_fn; in spdk_scsi_dev_destruct()
73 dev->remove_ctx = cb_arg; in spdk_scsi_dev_destruct()
75 if (TAILQ_EMPTY(&dev->luns)) { in spdk_scsi_dev_destruct()
76 free_dev(dev); in spdk_scsi_dev_destruct()
80 TAILQ_FOREACH_SAFE(lun, &dev->luns, tailq, tmp_lun) { in spdk_scsi_dev_destruct()
94 scsi_dev_find_free_lun(struct spdk_scsi_dev *dev, int lun_id, in scsi_dev_find_free_lun() argument
106 TAILQ_FOREACH(lun, &dev->luns, tailq) { in scsi_dev_find_free_lun()
118 TAILQ_FOREACH(lun, &dev->luns, tailq) { in scsi_dev_find_free_lun()
133 spdk_scsi_dev_add_lun(struct spdk_scsi_dev *dev, const char *bdev_name, int lun_id, in spdk_scsi_dev_add_lun() argument
137 return spdk_scsi_dev_add_lun_ext(dev, bdev_name, lun_id, in spdk_scsi_dev_add_lun()
143 spdk_scsi_dev_add_lun_ext(struct spdk_scsi_dev *dev, const char *bdev_name, int lun_id, in spdk_scsi_dev_add_lun_ext() argument
157 rc = scsi_dev_find_free_lun(dev, lun_id, &prev_lun); in spdk_scsi_dev_add_lun_ext()
168 lun->dev = dev; in spdk_scsi_dev_add_lun_ext()
179 TAILQ_INSERT_HEAD(&dev->luns, lun, tailq); in spdk_scsi_dev_add_lun_ext()
181 TAILQ_INSERT_AFTER(&dev->luns, prev_lun, lun, tailq); in spdk_scsi_dev_add_lun_ext()
187 spdk_scsi_dev_delete_lun(struct spdk_scsi_dev *dev, in spdk_scsi_dev_delete_lun() argument
190 TAILQ_REMOVE(&dev->luns, lun, tailq); in spdk_scsi_dev_delete_lun()
192 if (dev->removed && TAILQ_EMPTY(&dev->luns)) { in spdk_scsi_dev_delete_lun()
193 free_dev(dev); in spdk_scsi_dev_delete_lun()
215 struct spdk_scsi_dev *dev; in spdk_scsi_dev_construct_ext() local
221 if (name_len > sizeof(dev->name) - 1) { in spdk_scsi_dev_construct_ext()
223 name, sizeof(dev->name) - 1); in spdk_scsi_dev_construct_ext()
253 dev = allocate_dev(); in spdk_scsi_dev_construct_ext()
254 if (dev == NULL) { in spdk_scsi_dev_construct_ext()
258 memcpy(dev->name, name, name_len + 1); in spdk_scsi_dev_construct_ext()
260 dev->num_ports = 0; in spdk_scsi_dev_construct_ext()
261 dev->protocol_id = protocol_id; in spdk_scsi_dev_construct_ext()
264 rc = spdk_scsi_dev_add_lun_ext(dev, bdev_name_list[i], lun_id_list[i], in spdk_scsi_dev_construct_ext()
268 spdk_scsi_dev_destruct(dev, NULL, NULL); in spdk_scsi_dev_construct_ext()
273 return dev; in spdk_scsi_dev_construct_ext()
277 spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev, in spdk_scsi_dev_queue_mgmt_task() argument
286 spdk_scsi_dev_queue_task(struct spdk_scsi_dev *dev, in spdk_scsi_dev_queue_task() argument
295 scsi_dev_find_free_port(struct spdk_scsi_dev *dev) in scsi_dev_find_free_port() argument
300 if (!dev->port[i].is_used) { in scsi_dev_find_free_port()
301 return &dev->port[i]; in scsi_dev_find_free_port()
309 spdk_scsi_dev_add_port(struct spdk_scsi_dev *dev, uint64_t id, const char *name) in spdk_scsi_dev_add_port() argument
314 if (dev->num_ports == SPDK_SCSI_DEV_MAX_PORTS) { in spdk_scsi_dev_add_port()
319 port = spdk_scsi_dev_find_port_by_id(dev, id); in spdk_scsi_dev_add_port()
325 port = scsi_dev_find_free_port(dev); in spdk_scsi_dev_add_port()
331 rc = scsi_port_construct(port, id, dev->num_ports, name); in spdk_scsi_dev_add_port()
336 dev->num_ports++; in spdk_scsi_dev_add_port()
341 spdk_scsi_dev_delete_port(struct spdk_scsi_dev *dev, uint64_t id) in spdk_scsi_dev_delete_port() argument
345 port = spdk_scsi_dev_find_port_by_id(dev, id); in spdk_scsi_dev_delete_port()
353 dev->num_ports--; in spdk_scsi_dev_delete_port()
359 spdk_scsi_dev_find_port_by_id(struct spdk_scsi_dev *dev, uint64_t id) in spdk_scsi_dev_find_port_by_id() argument
364 if (!dev->port[i].is_used) { in spdk_scsi_dev_find_port_by_id()
367 if (dev->port[i].id == id) { in spdk_scsi_dev_find_port_by_id()
368 return &dev->port[i]; in spdk_scsi_dev_find_port_by_id()
377 spdk_scsi_dev_free_io_channels(struct spdk_scsi_dev *dev) in spdk_scsi_dev_free_io_channels() argument
381 TAILQ_FOREACH_SAFE(lun, &dev->luns, tailq, tmp_lun) { in spdk_scsi_dev_free_io_channels()
387 spdk_scsi_dev_allocate_io_channels(struct spdk_scsi_dev *dev) in spdk_scsi_dev_allocate_io_channels() argument
392 TAILQ_FOREACH_SAFE(lun, &dev->luns, tailq, tmp_lun) { in spdk_scsi_dev_allocate_io_channels()
395 spdk_scsi_dev_free_io_channels(dev); in spdk_scsi_dev_allocate_io_channels()
404 spdk_scsi_dev_get_name(const struct spdk_scsi_dev *dev) in spdk_scsi_dev_get_name() argument
406 return dev->name; in spdk_scsi_dev_get_name()
410 spdk_scsi_dev_get_id(const struct spdk_scsi_dev *dev) in spdk_scsi_dev_get_id() argument
412 return dev->id; in spdk_scsi_dev_get_id()
416 spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id) in spdk_scsi_dev_get_lun() argument
420 TAILQ_FOREACH(lun, &dev->luns, tailq) { in spdk_scsi_dev_get_lun()
434 spdk_scsi_dev_get_first_lun(struct spdk_scsi_dev *dev) in spdk_scsi_dev_get_first_lun() argument
438 TAILQ_FOREACH(lun, &dev->luns, tailq) { in spdk_scsi_dev_get_first_lun()
450 struct spdk_scsi_dev *dev; in spdk_scsi_dev_get_next_lun() local
457 dev = prev_lun->dev; in spdk_scsi_dev_get_next_lun()
464 TAILQ_FOREACH_FROM(lun, &dev->luns, tailq) { in spdk_scsi_dev_get_next_lun()
474 spdk_scsi_dev_has_pending_tasks(const struct spdk_scsi_dev *dev, in spdk_scsi_dev_has_pending_tasks() argument
479 TAILQ_FOREACH(lun, &dev->luns, tailq) { in spdk_scsi_dev_has_pending_tasks()