/* returns: 0 failed (write timeout expired) 1 success  */
static int ide_cd_breathe(ide_drive_t *drive, struct request *rq)
/* returns: 0 failed (write timeout expired) 1 success  */
static int ide_cd_breathe(ide_drive_t *drive, struct request *rq)
{
	struct cdrom_info *info = drive->driver_data;
	if (!rq->errors)
		info->write_timeout = jiffies +	ATAPI_WAIT_WRITE_BUSY;
	rq->errors = 1;
	if (time_after(jiffies, info->write_timeout))
		return 0;
	else {
		struct request_queue *q = drive->queue;
		unsigned long flags;
		spin_lock_irqsave(q->queue_lock, flags);
		blk_plug_device(q);
		spin_unlock_irqrestore(q->queue_lock, flags);
		return 1;
	}
}