private->iob.bio_list = __pa(dreq->bio); 
private->iob.bio_list = dreq->bio; 
dasd_start_diag(struct dasd_ccw_req * cqr){	struct dasd_device *device;	struct dasd_diag_private *private;	struct dasd_diag_req *dreq;	int rc;	device = cqr->device;	if (cqr->retries < 0) {		DEV_MESSAGE(KERN_WARNING, device, "DIAG start_IO: request %p "			    "- no retry left)", cqr);		cqr->status = DASD_CQR_FAILED;		return -EIO;	}	private = (struct dasd_diag_private *) device->private;	dreq = (struct dasd_diag_req *) cqr->data;	private->iob.dev_nr = _ccw_device_get_device_number(device->cdev);	private->iob.key = 0;	private->iob.flags = DASD_DIAG_RWFLAG_ASYNC;	private->iob.block_count = dreq->block_count;	private->iob.interrupt_params = (addr_t) cqr;	private->iob.bio_list = __pa(dreq->bio);	private->iob.flaga = DASD_DIAG_FLAGA_DEFAULT;	cqr->startclk = get_clock();	cqr->starttime = jiffies;	cqr->retries--;	rc = dia250(&private->iob, RW_BIO);	switch (rc) {	case 0: /* Synchronous I/O finished successfully */		cqr->stopclk = get_clock();		cqr->status = DASD_CQR_DONE;		/* Indicate to calling function that only a dasd_schedule_bh()		   and no timer is needed */                rc = -EACCES;		break;	case 8: /* Asynchronous I/O was started */		cqr->status = DASD_CQR_IN_IO;		rc = 0;		break;	default: /* Error condition */		cqr->status = DASD_CQR_QUEUED;		DEV_MESSAGE(KERN_WARNING, device, "dia250 returned rc=%d", rc);		dasd_diag_erp(device);		rc = -EIO;		break;	}	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/86b368a5804d05a6508791f10ebabf7b779eb845/dasd_diag.c/clean/drivers/s390/block/dasd_diag.c