Lines Matching refs:scsi_dh
80 device_handler_match(struct scsi_device_handler *scsi_dh, in device_handler_match() argument
87 if (scsi_dh && found_dh != scsi_dh) in device_handler_match()
99 struct scsi_device_handler *scsi_dh) in scsi_dh_handler_attach() argument
104 if (sdev->scsi_dh_data->scsi_dh != scsi_dh) in scsi_dh_handler_attach()
111 if (!try_module_get(scsi_dh->module)) in scsi_dh_handler_attach()
114 d = scsi_dh->attach(sdev); in scsi_dh_handler_attach()
117 scsi_dh->name, PTR_ERR(d)); in scsi_dh_handler_attach()
118 module_put(scsi_dh->module); in scsi_dh_handler_attach()
122 d->scsi_dh = scsi_dh; in scsi_dh_handler_attach()
136 struct scsi_device_handler *scsi_dh = scsi_dh_data->scsi_dh; in __detach_handler() local
139 scsi_dh->detach(sdev); in __detach_handler()
145 sdev_printk(KERN_NOTICE, sdev, "%s: Detached\n", scsi_dh->name); in __detach_handler()
146 module_put(scsi_dh->module); in __detach_handler()
158 struct scsi_device_handler *scsi_dh) in scsi_dh_handler_detach() argument
163 if (scsi_dh && scsi_dh != sdev->scsi_dh_data->scsi_dh) in scsi_dh_handler_detach()
166 if (!scsi_dh) in scsi_dh_handler_detach()
167 scsi_dh = sdev->scsi_dh_data->scsi_dh; in scsi_dh_handler_detach()
169 if (scsi_dh) in scsi_dh_handler_detach()
181 struct scsi_device_handler *scsi_dh; in store_dh_state() local
192 if (!(scsi_dh = get_device_handler(buf))) 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()
207 if (scsi_dh->activate) in store_dh_state()
208 err = scsi_dh->activate(sdev, NULL, NULL); in store_dh_state()
225 return snprintf(buf, 20, "%s\n", sdev->scsi_dh_data->scsi_dh->name); in show_dh_state()
303 struct scsi_device_handler *scsi_dh = data; in scsi_dh_notifier_add() local
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()
327 struct scsi_device_handler *scsi_dh = data; in scsi_dh_notifier_remove() local
338 scsi_dh_handler_detach(sdev, scsi_dh); in scsi_dh_notifier_remove()
352 int scsi_register_device_handler(struct scsi_device_handler *scsi_dh) in scsi_register_device_handler() argument
355 if (get_device_handler(scsi_dh->name)) in scsi_register_device_handler()
358 if (!scsi_dh->attach || !scsi_dh->detach) in scsi_register_device_handler()
362 list_add(&scsi_dh->list, &scsi_dh_list); in scsi_register_device_handler()
365 bus_for_each_dev(&scsi_bus_type, NULL, scsi_dh, scsi_dh_notifier_add); in scsi_register_device_handler()
366 printk(KERN_INFO "%s: device handler registered\n", scsi_dh->name); in scsi_register_device_handler()
379 int scsi_unregister_device_handler(struct scsi_device_handler *scsi_dh) in scsi_unregister_device_handler() argument
382 if (!get_device_handler(scsi_dh->name)) in scsi_unregister_device_handler()
385 bus_for_each_dev(&scsi_bus_type, NULL, scsi_dh, in scsi_unregister_device_handler()
389 list_del(&scsi_dh->list); in scsi_unregister_device_handler()
391 printk(KERN_INFO "%s: device handler unregistered\n", scsi_dh->name); in scsi_unregister_device_handler()
415 struct scsi_device_handler *scsi_dh = NULL; in scsi_dh_activate() local
429 scsi_dh = sdev->scsi_dh_data->scsi_dh; in scsi_dh_activate()
431 if (!scsi_dh || !dev || in scsi_dh_activate()
445 if (scsi_dh->activate) in scsi_dh_activate()
446 err = scsi_dh->activate(sdev, fn, data); in scsi_dh_activate()
468 struct scsi_device_handler *scsi_dh = NULL; in scsi_dh_set_params() local
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()
507 struct scsi_device_handler *scsi_dh; in scsi_dh_attach() local
510 scsi_dh = get_device_handler(name); in scsi_dh_attach()
511 if (!scsi_dh) in scsi_dh_attach()
521 err = scsi_dh_handler_attach(sdev, scsi_dh); in scsi_dh_attach()
541 struct scsi_device_handler *scsi_dh = NULL; in scsi_dh_detach() local
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()
585 handler_name = kstrdup(sdev->scsi_dh_data->scsi_dh->name, gfp); in scsi_dh_attached_handler_name()