/* 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.  */
static void __dasd_device_recovery(struct dasd_device *device, struct dasd_ccw_req *ref_cqr)
/* 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.  */
static void __dasd_device_recovery(struct dasd_device *device, struct dasd_ccw_req *ref_cqr)
{
	struct list_head *l, *n;
	struct dasd_ccw_req *cqr;
	if (!ref_cqr->block)
		return;
	list_for_each_safe(l, n, &device->ccw_queue) {
		cqr = list_entry(l, struct dasd_ccw_req, devlist);
		if (cqr->status == DASD_CQR_QUEUED &&
		    ref_cqr->block == cqr->block) {
			cqr->status = DASD_CQR_CLEARED;
		}
	}
}