/* Timeout function for dasd devices. This is used for different purposes 1) missing interrupt handler for normal operation 2) delayed start of request where start_IO failed with -EBUSY 3) timeout for missing state change interrupts The head of the ccw queue will have status DASD_CQR_IN_IO for 1), DASD_CQR_QUEUED for 2) and 3).  */
static void dasd_device_timeout(unsigned long)
/* Timeout function for dasd devices. This is used for different purposes 1) missing interrupt handler for normal operation 2) delayed start of request where start_IO failed with -EBUSY 3) timeout for missing state change interrupts The head of the ccw queue will have status DASD_CQR_IN_IO for 1), DASD_CQR_QUEUED for 2) and 3).  */
static void dasd_device_timeout(unsigned long)
{
	unsigned long flags;
	struct dasd_device *device;
	device = (struct dasd_device *) ptr;
	spin_lock_irqsave(get_ccwdev_lock(device->cdev), flags);
	dasd_device_remove_stop_bits(device, DASD_STOPPED_PENDING);
	spin_unlock_irqrestore(get_ccwdev_lock(device->cdev), flags);
	dasd_schedule_device_bh(device);
}