if (start_rdev->faulty) { 
if (test_bit(Faulty, &start_rdev->flags)) { 
static int autostart_array(dev_t startdev){	char b[BDEVNAME_SIZE];	int err = -EINVAL, i;	mdp_super_t *sb = NULL;	mdk_rdev_t *start_rdev = NULL, *rdev;	start_rdev = md_import_device(startdev, 0, 0);	if (IS_ERR(start_rdev))		return err;	/* NOTE: this can only work for 0.90.0 superblocks */	sb = (mdp_super_t*)page_address(start_rdev->sb_page);	if (sb->major_version != 0 ||	    sb->minor_version != 90 ) {		printk(KERN_WARNING "md: can only autostart 0.90.0 arrays\n");		export_rdev(start_rdev);		return err;	}	if (start_rdev->faulty) {		printk(KERN_WARNING 			"md: can not autostart based on faulty %s!\n",			bdevname(start_rdev->bdev,b));		export_rdev(start_rdev);		return err;	}	list_add(&start_rdev->same_set, &pending_raid_disks);	for (i = 0; i < MD_SB_DISKS; i++) {		mdp_disk_t *desc = sb->disks + i;		dev_t dev = MKDEV(desc->major, desc->minor);		if (!dev)			continue;		if (dev == startdev)			continue;		if (MAJOR(dev) != desc->major || MINOR(dev) != desc->minor)			continue;		rdev = md_import_device(dev, 0, 0);		if (IS_ERR(rdev))			continue;		list_add(&rdev->same_set, &pending_raid_disks);	}	/*	 * possibly return codes	 */	autorun_devices(0);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b2d444d7ad975d555bb919601bcdc0e58975a40e/md.c/buggy/drivers/md/md.c