Lines Matching refs:unit
21 void zfcp_unit_scsi_scan(struct zfcp_unit *unit) in zfcp_unit_scsi_scan() argument
23 struct fc_rport *rport = unit->port->rport; in zfcp_unit_scsi_scan()
26 lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun); in zfcp_unit_scsi_scan()
34 struct zfcp_unit *unit = container_of(work, struct zfcp_unit, in zfcp_unit_scsi_scan_work() local
37 zfcp_unit_scsi_scan(unit); in zfcp_unit_scsi_scan_work()
38 put_device(&unit->dev); in zfcp_unit_scsi_scan_work()
53 struct zfcp_unit *unit; in zfcp_unit_queue_scsi_scan() local
56 list_for_each_entry(unit, &port->unit_list, list) { in zfcp_unit_queue_scsi_scan()
57 get_device(&unit->dev); in zfcp_unit_queue_scsi_scan()
59 &unit->scsi_work) <= 0) in zfcp_unit_queue_scsi_scan()
60 put_device(&unit->dev); in zfcp_unit_queue_scsi_scan()
67 struct zfcp_unit *unit; in _zfcp_unit_find() local
69 list_for_each_entry(unit, &port->unit_list, list) in _zfcp_unit_find()
70 if (unit->fcp_lun == fcp_lun) { in _zfcp_unit_find()
71 get_device(&unit->dev); in _zfcp_unit_find()
72 return unit; in _zfcp_unit_find()
91 struct zfcp_unit *unit; in zfcp_unit_find() local
94 unit = _zfcp_unit_find(port, fcp_lun); in zfcp_unit_find()
96 return unit; in zfcp_unit_find()
105 struct zfcp_unit *unit = container_of(dev, struct zfcp_unit, dev); in zfcp_unit_release() local
107 atomic_dec(&unit->port->units); in zfcp_unit_release()
108 kfree(unit); in zfcp_unit_release()
121 struct zfcp_unit *unit; in zfcp_unit_add() local
131 unit = zfcp_unit_find(port, fcp_lun); in zfcp_unit_add()
132 if (unit) { in zfcp_unit_add()
133 put_device(&unit->dev); in zfcp_unit_add()
138 unit = kzalloc(sizeof(struct zfcp_unit), GFP_KERNEL); in zfcp_unit_add()
139 if (!unit) { in zfcp_unit_add()
144 unit->port = port; in zfcp_unit_add()
145 unit->fcp_lun = fcp_lun; in zfcp_unit_add()
146 unit->dev.parent = &port->dev; in zfcp_unit_add()
147 unit->dev.release = zfcp_unit_release; in zfcp_unit_add()
148 unit->dev.groups = zfcp_unit_attr_groups; in zfcp_unit_add()
149 INIT_WORK(&unit->scsi_work, zfcp_unit_scsi_scan_work); in zfcp_unit_add()
151 if (dev_set_name(&unit->dev, "0x%016llx", in zfcp_unit_add()
153 kfree(unit); in zfcp_unit_add()
158 if (device_register(&unit->dev)) { in zfcp_unit_add()
159 put_device(&unit->dev); in zfcp_unit_add()
167 list_add_tail(&unit->list, &port->unit_list); in zfcp_unit_add()
170 zfcp_unit_scsi_scan(unit); in zfcp_unit_add()
187 struct scsi_device *zfcp_unit_sdev(struct zfcp_unit *unit) in zfcp_unit_sdev() argument
193 lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun); in zfcp_unit_sdev()
194 port = unit->port; in zfcp_unit_sdev()
206 unsigned int zfcp_unit_sdev_status(struct zfcp_unit *unit) in zfcp_unit_sdev_status() argument
212 sdev = zfcp_unit_sdev(unit); in zfcp_unit_sdev_status()
232 struct zfcp_unit *unit; in zfcp_unit_remove() local
236 unit = _zfcp_unit_find(port, fcp_lun); in zfcp_unit_remove()
237 if (unit) in zfcp_unit_remove()
238 list_del(&unit->list); in zfcp_unit_remove()
241 if (!unit) in zfcp_unit_remove()
244 sdev = zfcp_unit_sdev(unit); in zfcp_unit_remove()
250 put_device(&unit->dev); in zfcp_unit_remove()
252 device_unregister(&unit->dev); in zfcp_unit_remove()