Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_removal.c
Show First 20 Lines • Show All 169 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
static spa_vdev_removal_t * | static spa_vdev_removal_t * | ||||
spa_vdev_removal_create(vdev_t *vd) | spa_vdev_removal_create(vdev_t *vd) | ||||
{ | { | ||||
spa_vdev_removal_t *svr = kmem_zalloc(sizeof (*svr), KM_SLEEP); | spa_vdev_removal_t *svr = kmem_zalloc(sizeof (*svr), KM_SLEEP); | ||||
mutex_init(&svr->svr_lock, NULL, MUTEX_DEFAULT, NULL); | mutex_init(&svr->svr_lock, NULL, MUTEX_DEFAULT, NULL); | ||||
cv_init(&svr->svr_cv, NULL, CV_DEFAULT, NULL); | cv_init(&svr->svr_cv, NULL, CV_DEFAULT, NULL); | ||||
svr->svr_allocd_segs = range_tree_create(NULL, NULL); | svr->svr_allocd_segs = range_tree_create(NULL, NULL, &svr->svr_lock); | ||||
svr->svr_vdev = vd; | svr->svr_vdev = vd; | ||||
for (int i = 0; i < TXG_SIZE; i++) { | for (int i = 0; i < TXG_SIZE; i++) { | ||||
svr->svr_frees[i] = range_tree_create(NULL, NULL); | svr->svr_frees[i] = range_tree_create(NULL, NULL, &svr->svr_lock); | ||||
list_create(&svr->svr_new_segments[i], | list_create(&svr->svr_new_segments[i], | ||||
sizeof (vdev_indirect_mapping_entry_t), | sizeof (vdev_indirect_mapping_entry_t), | ||||
offsetof(vdev_indirect_mapping_entry_t, vime_node)); | offsetof(vdev_indirect_mapping_entry_t, vime_node)); | ||||
} | } | ||||
return (svr); | return (svr); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,766 Lines • Show Last 20 Lines |