 rdev->kobj.parent = NULL; rdev->kobj.ktype = &rdev_ktype; kobject_init(&rdev->kobj); 
static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_minor){	char b[BDEVNAME_SIZE];	int err;	mdk_rdev_t *rdev;	sector_t size;	rdev = (mdk_rdev_t *) kmalloc(sizeof(*rdev), GFP_KERNEL);	if (!rdev) {		printk(KERN_ERR "md: could not alloc mem for new device!\n");		return ERR_PTR(-ENOMEM);	}	memset(rdev, 0, sizeof(*rdev));	if ((err = alloc_disk_sb(rdev)))		goto abort_free;	err = lock_rdev(rdev, newdev);	if (err)		goto abort_free;	rdev->desc_nr = -1;	rdev->faulty = 0;	rdev->in_sync = 0;	rdev->data_offset = 0;	atomic_set(&rdev->nr_pending, 0);	size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS;	if (!size) {		printk(KERN_WARNING 			"md: %s has zero or unknown size, marking faulty!\n",			bdevname(rdev->bdev,b));		err = -EINVAL;		goto abort_free;	}	if (super_format >= 0) {		err = super_types[super_format].			load_super(rdev, NULL, super_minor);		if (err == -EINVAL) {			printk(KERN_WARNING 				"md: %s has invalid sb, not importing!\n",				bdevname(rdev->bdev,b));			goto abort_free;		}		if (err < 0) {			printk(KERN_WARNING 				"md: could not read %s's sb, not importing!\n",				bdevname(rdev->bdev,b));			goto abort_free;		}	}	INIT_LIST_HEAD(&rdev->same_set);	return rdev;abort_free:	if (rdev->sb_page) {		if (rdev->bdev)			unlock_rdev(rdev);		free_disk_sb(rdev);	}	kfree(rdev);	return ERR_PTR(err);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/86e6ffdd243a06663713e637ee683fb27dce8e0c/md.c/clean/drivers/md/md.c