Lines Matching refs:sdev

55 device_handler_match_function(struct scsi_device *sdev)  in device_handler_match_function()  argument
61 if (tmp_dh->match && tmp_dh->match(sdev)) { in device_handler_match_function()
81 struct scsi_device *sdev) in device_handler_match() argument
85 found_dh = device_handler_match_function(sdev); in device_handler_match()
98 static int scsi_dh_handler_attach(struct scsi_device *sdev, in scsi_dh_handler_attach() argument
103 if (sdev->scsi_dh_data) { in scsi_dh_handler_attach()
104 if (sdev->scsi_dh_data->scsi_dh != scsi_dh) in scsi_dh_handler_attach()
107 kref_get(&sdev->scsi_dh_data->kref); in scsi_dh_handler_attach()
114 d = scsi_dh->attach(sdev); in scsi_dh_handler_attach()
116 sdev_printk(KERN_ERR, sdev, "%s: Attach failed (%ld)\n", in scsi_dh_handler_attach()
124 d->sdev = sdev; in scsi_dh_handler_attach()
126 spin_lock_irq(sdev->request_queue->queue_lock); in scsi_dh_handler_attach()
127 sdev->scsi_dh_data = d; in scsi_dh_handler_attach()
128 spin_unlock_irq(sdev->request_queue->queue_lock); in scsi_dh_handler_attach()
137 struct scsi_device *sdev = scsi_dh_data->sdev; in __detach_handler() local
139 scsi_dh->detach(sdev); in __detach_handler()
141 spin_lock_irq(sdev->request_queue->queue_lock); in __detach_handler()
142 sdev->scsi_dh_data = NULL; in __detach_handler()
143 spin_unlock_irq(sdev->request_queue->queue_lock); in __detach_handler()
145 sdev_printk(KERN_NOTICE, sdev, "%s: Detached\n", scsi_dh->name); in __detach_handler()
157 static void scsi_dh_handler_detach(struct scsi_device *sdev, in scsi_dh_handler_detach() argument
160 if (!sdev->scsi_dh_data) in scsi_dh_handler_detach()
163 if (scsi_dh && scsi_dh != sdev->scsi_dh_data->scsi_dh) in scsi_dh_handler_detach()
167 scsi_dh = sdev->scsi_dh_data->scsi_dh; in scsi_dh_handler_detach()
170 kref_put(&sdev->scsi_dh_data->kref, __detach_handler); in scsi_dh_handler_detach()
180 struct scsi_device *sdev = to_scsi_device(dev); in store_dh_state() local
184 if (sdev->sdev_state == SDEV_CANCEL || in store_dh_state()
185 sdev->sdev_state == SDEV_DEL) in store_dh_state()
188 if (!sdev->scsi_dh_data) { in store_dh_state()
194 err = scsi_dh_handler_attach(sdev, scsi_dh); in store_dh_state()
196 scsi_dh = sdev->scsi_dh_data->scsi_dh; in store_dh_state()
201 scsi_dh_handler_detach(sdev, scsi_dh); in store_dh_state()
208 err = scsi_dh->activate(sdev, NULL, NULL); in store_dh_state()
220 struct scsi_device *sdev = to_scsi_device(dev); in show_dh_state() local
222 if (!sdev->scsi_dh_data) in show_dh_state()
225 return snprintf(buf, 20, "%s\n", sdev->scsi_dh_data->scsi_dh->name); in show_dh_state()
237 struct scsi_device *sdev; in scsi_dh_sysfs_attr_add() local
243 sdev = to_scsi_device(dev); in scsi_dh_sysfs_attr_add()
245 err = device_create_file(&sdev->sdev_gendev, in scsi_dh_sysfs_attr_add()
256 struct scsi_device *sdev; in scsi_dh_sysfs_attr_remove() local
261 sdev = to_scsi_device(dev); in scsi_dh_sysfs_attr_remove()
263 device_remove_file(&sdev->sdev_gendev, in scsi_dh_sysfs_attr_remove()
276 struct scsi_device *sdev; in scsi_dh_notifier() local
283 sdev = to_scsi_device(dev); in scsi_dh_notifier()
288 devinfo = device_handler_match(NULL, sdev); in scsi_dh_notifier()
290 err = scsi_dh_handler_attach(sdev, devinfo); in scsi_dh_notifier()
293 scsi_dh_handler_detach(sdev, NULL); in scsi_dh_notifier()
304 struct scsi_device *sdev; in scsi_dh_notifier_add() local
312 sdev = to_scsi_device(dev); in scsi_dh_notifier_add()
314 if (device_handler_match(scsi_dh, sdev)) in scsi_dh_notifier_add()
315 scsi_dh_handler_attach(sdev, scsi_dh); in scsi_dh_notifier_add()
328 struct scsi_device *sdev; in scsi_dh_notifier_remove() local
336 sdev = to_scsi_device(dev); in scsi_dh_notifier_remove()
338 scsi_dh_handler_detach(sdev, scsi_dh); in scsi_dh_notifier_remove()
414 struct scsi_device *sdev; in scsi_dh_activate() local
419 sdev = q->queuedata; in scsi_dh_activate()
420 if (!sdev) { in scsi_dh_activate()
428 if (sdev->scsi_dh_data) in scsi_dh_activate()
429 scsi_dh = sdev->scsi_dh_data->scsi_dh; in scsi_dh_activate()
430 dev = get_device(&sdev->sdev_gendev); in scsi_dh_activate()
432 sdev->sdev_state == SDEV_CANCEL || in scsi_dh_activate()
433 sdev->sdev_state == SDEV_DEL) in scsi_dh_activate()
435 if (sdev->sdev_state == SDEV_OFFLINE) in scsi_dh_activate()
446 err = scsi_dh->activate(sdev, fn, data); in scsi_dh_activate()
467 struct scsi_device *sdev; in scsi_dh_set_params() local
471 sdev = q->queuedata; in scsi_dh_set_params()
472 if (sdev && sdev->scsi_dh_data) in scsi_dh_set_params()
473 scsi_dh = sdev->scsi_dh_data->scsi_dh; in scsi_dh_set_params()
474 if (scsi_dh && scsi_dh->set_params && get_device(&sdev->sdev_gendev)) in scsi_dh_set_params()
480 err = scsi_dh->set_params(sdev, params); in scsi_dh_set_params()
481 put_device(&sdev->sdev_gendev); in scsi_dh_set_params()
506 struct scsi_device *sdev; in scsi_dh_attach() local
515 sdev = q->queuedata; in scsi_dh_attach()
516 if (!sdev || !get_device(&sdev->sdev_gendev)) in scsi_dh_attach()
521 err = scsi_dh_handler_attach(sdev, scsi_dh); in scsi_dh_attach()
522 put_device(&sdev->sdev_gendev); in scsi_dh_attach()
540 struct scsi_device *sdev; in scsi_dh_detach() local
544 sdev = q->queuedata; in scsi_dh_detach()
545 if (!sdev || !get_device(&sdev->sdev_gendev)) in scsi_dh_detach()
546 sdev = NULL; in scsi_dh_detach()
549 if (!sdev) in scsi_dh_detach()
552 if (sdev->scsi_dh_data) { in scsi_dh_detach()
553 scsi_dh = sdev->scsi_dh_data->scsi_dh; in scsi_dh_detach()
554 scsi_dh_handler_detach(sdev, scsi_dh); in scsi_dh_detach()
556 put_device(&sdev->sdev_gendev); in scsi_dh_detach()
572 struct scsi_device *sdev; in scsi_dh_attached_handler_name() local
576 sdev = q->queuedata; in scsi_dh_attached_handler_name()
577 if (!sdev || !get_device(&sdev->sdev_gendev)) in scsi_dh_attached_handler_name()
578 sdev = NULL; in scsi_dh_attached_handler_name()
581 if (!sdev) in scsi_dh_attached_handler_name()
584 if (sdev->scsi_dh_data) in scsi_dh_attached_handler_name()
585 handler_name = kstrdup(sdev->scsi_dh_data->scsi_dh->name, gfp); in scsi_dh_attached_handler_name()
587 put_device(&sdev->sdev_gendev); in scsi_dh_attached_handler_name()