Loading drivers/s390/block/dasd.c +23 −0 Original line number Diff line number Diff line Loading @@ -1186,6 +1186,29 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm, dasd_schedule_device_bh(device); } enum uc_todo dasd_generic_uc_handler(struct ccw_device *cdev, struct irb *irb) { struct dasd_device *device; device = dasd_device_from_cdev_locked(cdev); if (IS_ERR(device)) goto out; if (test_bit(DASD_FLAG_OFFLINE, &device->flags) || device->state != device->target || !device->discipline->handle_unsolicited_interrupt){ dasd_put_device(device); goto out; } dasd_device_clear_timer(device); device->discipline->handle_unsolicited_interrupt(device, irb); dasd_put_device(device); out: return UC_TODO_RETRY; } EXPORT_SYMBOL_GPL(dasd_generic_uc_handler); /* * If we have an error on a dasd_block layer request then we cancel * and return all further requests from the same dasd_block as well. Loading drivers/s390/block/dasd_eckd.c +1 −0 Original line number Diff line number Diff line Loading @@ -3436,6 +3436,7 @@ static struct ccw_driver dasd_eckd_driver = { .freeze = dasd_generic_pm_freeze, .thaw = dasd_generic_restore_device, .restore = dasd_generic_restore_device, .uc_handler = dasd_generic_uc_handler, }; /* Loading drivers/s390/block/dasd_int.h +1 −0 Original line number Diff line number Diff line Loading @@ -617,6 +617,7 @@ int dasd_generic_notify(struct ccw_device *, int); void dasd_generic_handle_state_change(struct dasd_device *); int dasd_generic_pm_freeze(struct ccw_device *); int dasd_generic_restore_device(struct ccw_device *); enum uc_todo dasd_generic_uc_handler(struct ccw_device *, struct irb *); int dasd_generic_read_dev_chars(struct dasd_device *, int, void *, int); char *dasd_get_sense(struct irb *); Loading Loading
drivers/s390/block/dasd.c +23 −0 Original line number Diff line number Diff line Loading @@ -1186,6 +1186,29 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm, dasd_schedule_device_bh(device); } enum uc_todo dasd_generic_uc_handler(struct ccw_device *cdev, struct irb *irb) { struct dasd_device *device; device = dasd_device_from_cdev_locked(cdev); if (IS_ERR(device)) goto out; if (test_bit(DASD_FLAG_OFFLINE, &device->flags) || device->state != device->target || !device->discipline->handle_unsolicited_interrupt){ dasd_put_device(device); goto out; } dasd_device_clear_timer(device); device->discipline->handle_unsolicited_interrupt(device, irb); dasd_put_device(device); out: return UC_TODO_RETRY; } EXPORT_SYMBOL_GPL(dasd_generic_uc_handler); /* * If we have an error on a dasd_block layer request then we cancel * and return all further requests from the same dasd_block as well. Loading
drivers/s390/block/dasd_eckd.c +1 −0 Original line number Diff line number Diff line Loading @@ -3436,6 +3436,7 @@ static struct ccw_driver dasd_eckd_driver = { .freeze = dasd_generic_pm_freeze, .thaw = dasd_generic_restore_device, .restore = dasd_generic_restore_device, .uc_handler = dasd_generic_uc_handler, }; /* Loading
drivers/s390/block/dasd_int.h +1 −0 Original line number Diff line number Diff line Loading @@ -617,6 +617,7 @@ int dasd_generic_notify(struct ccw_device *, int); void dasd_generic_handle_state_change(struct dasd_device *); int dasd_generic_pm_freeze(struct ccw_device *); int dasd_generic_restore_device(struct ccw_device *); enum uc_todo dasd_generic_uc_handler(struct ccw_device *, struct irb *); int dasd_generic_read_dev_chars(struct dasd_device *, int, void *, int); char *dasd_get_sense(struct irb *); Loading