mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 15:19:51 +00:00
md: split out md_rdev_init
This functionality will be needed separately in a subsequent patch, so split it into it's own exported function. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
676e42d896
commit
e8bb9a839a
@ -2691,6 +2691,24 @@ static struct kobj_type rdev_ktype = {
|
|||||||
.default_attrs = rdev_default_attrs,
|
.default_attrs = rdev_default_attrs,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void md_rdev_init(mdk_rdev_t *rdev)
|
||||||
|
{
|
||||||
|
rdev->desc_nr = -1;
|
||||||
|
rdev->saved_raid_disk = -1;
|
||||||
|
rdev->raid_disk = -1;
|
||||||
|
rdev->flags = 0;
|
||||||
|
rdev->data_offset = 0;
|
||||||
|
rdev->sb_events = 0;
|
||||||
|
rdev->last_read_error.tv_sec = 0;
|
||||||
|
rdev->last_read_error.tv_nsec = 0;
|
||||||
|
atomic_set(&rdev->nr_pending, 0);
|
||||||
|
atomic_set(&rdev->read_errors, 0);
|
||||||
|
atomic_set(&rdev->corrected_errors, 0);
|
||||||
|
|
||||||
|
INIT_LIST_HEAD(&rdev->same_set);
|
||||||
|
init_waitqueue_head(&rdev->blocked_wait);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(md_rdev_init);
|
||||||
/*
|
/*
|
||||||
* Import a device. If 'super_format' >= 0, then sanity check the superblock
|
* Import a device. If 'super_format' >= 0, then sanity check the superblock
|
||||||
*
|
*
|
||||||
@ -2714,6 +2732,7 @@ static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi
|
|||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
md_rdev_init(rdev);
|
||||||
if ((err = alloc_disk_sb(rdev)))
|
if ((err = alloc_disk_sb(rdev)))
|
||||||
goto abort_free;
|
goto abort_free;
|
||||||
|
|
||||||
@ -2723,18 +2742,6 @@ static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi
|
|||||||
|
|
||||||
kobject_init(&rdev->kobj, &rdev_ktype);
|
kobject_init(&rdev->kobj, &rdev_ktype);
|
||||||
|
|
||||||
rdev->desc_nr = -1;
|
|
||||||
rdev->saved_raid_disk = -1;
|
|
||||||
rdev->raid_disk = -1;
|
|
||||||
rdev->flags = 0;
|
|
||||||
rdev->data_offset = 0;
|
|
||||||
rdev->sb_events = 0;
|
|
||||||
rdev->last_read_error.tv_sec = 0;
|
|
||||||
rdev->last_read_error.tv_nsec = 0;
|
|
||||||
atomic_set(&rdev->nr_pending, 0);
|
|
||||||
atomic_set(&rdev->read_errors, 0);
|
|
||||||
atomic_set(&rdev->corrected_errors, 0);
|
|
||||||
|
|
||||||
size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS;
|
size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS;
|
||||||
if (!size) {
|
if (!size) {
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
@ -2763,9 +2770,6 @@ static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
INIT_LIST_HEAD(&rdev->same_set);
|
|
||||||
init_waitqueue_head(&rdev->blocked_wait);
|
|
||||||
|
|
||||||
return rdev;
|
return rdev;
|
||||||
|
|
||||||
abort_free:
|
abort_free:
|
||||||
|
@ -487,4 +487,5 @@ extern void md_integrity_add_rdev(mdk_rdev_t *rdev, mddev_t *mddev);
|
|||||||
extern int strict_strtoul_scaled(const char *cp, unsigned long *res, int scale);
|
extern int strict_strtoul_scaled(const char *cp, unsigned long *res, int scale);
|
||||||
extern void restore_bitmap_write_access(struct file *file);
|
extern void restore_bitmap_write_access(struct file *file);
|
||||||
|
|
||||||
|
extern void md_rdev_init(mdk_rdev_t *rdev);
|
||||||
#endif /* _MD_MD_H */
|
#endif /* _MD_MD_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user