feature_diag = dasd_get_feature(cdev, DASD_FEATURE_USEDIAG); if (feature_diag < 0) return feature_diag;  if (feature_diag) { 
if (device->features & DASD_FEATURE_USEDIAG) { 
dasd_generic_set_online (struct ccw_device *cdev,			 struct dasd_discipline *discipline){	struct dasd_device *device;	int feature_diag, rc;	device = dasd_create_device(cdev);	if (IS_ERR(device))		return PTR_ERR(device);	feature_diag = dasd_get_feature(cdev, DASD_FEATURE_USEDIAG);	if (feature_diag < 0)		return feature_diag;	if (feature_diag) {	  	if (!dasd_diag_discipline_pointer) {		        printk (KERN_WARNING				"dasd_generic couldn't online device %s "				"- discipline DIAG not available\n",				cdev->dev.bus_id);			dasd_delete_device(device);			return -ENODEV;		}		discipline = dasd_diag_discipline_pointer;	}	device->discipline = discipline;	rc = discipline->check_device(device);	if (rc) {		printk (KERN_WARNING			"dasd_generic couldn't online device %s "			"with discipline %s rc=%i\n",			cdev->dev.bus_id, discipline->name, rc);		dasd_delete_device(device);		return rc;	}	dasd_set_target_state(device, DASD_STATE_ONLINE);	if (device->state <= DASD_STATE_KNOWN) {		printk (KERN_WARNING			"dasd_generic discipline not found for %s\n",			cdev->dev.bus_id);		rc = -ENODEV;		dasd_set_target_state(device, DASD_STATE_NEW);		dasd_delete_device(device);	} else		pr_debug("dasd_generic device %s found\n",				cdev->dev.bus_id);	/* FIXME: we have to wait for the root device but we don't want	 * to wait for each single device but for all at once. */	wait_event(dasd_init_waitq, _wait_for_device(device));	dasd_put_device(device);	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c6eb7b7703ac4b3401b74f411c8c51ded214bf19/dasd.c/clean/drivers/s390/block/dasd.c