300 vd->vdev_guid_sum = guid; |
300 vd->vdev_guid_sum = guid; |
301 vd->vdev_ops = ops; |
301 vd->vdev_ops = ops; |
302 vd->vdev_state = VDEV_STATE_CLOSED; |
302 vd->vdev_state = VDEV_STATE_CLOSED; |
303 |
303 |
304 mutex_init(&vd->vdev_dtl_lock, NULL, MUTEX_DEFAULT, NULL); |
304 mutex_init(&vd->vdev_dtl_lock, NULL, MUTEX_DEFAULT, NULL); |
|
305 mutex_init(&vd->vdev_stat_lock, NULL, MUTEX_DEFAULT, NULL); |
305 space_map_create(&vd->vdev_dtl_map, 0, -1ULL, 0, &vd->vdev_dtl_lock); |
306 space_map_create(&vd->vdev_dtl_map, 0, -1ULL, 0, &vd->vdev_dtl_lock); |
306 space_map_create(&vd->vdev_dtl_scrub, 0, -1ULL, 0, &vd->vdev_dtl_lock); |
307 space_map_create(&vd->vdev_dtl_scrub, 0, -1ULL, 0, &vd->vdev_dtl_lock); |
307 txg_list_create(&vd->vdev_ms_list, |
308 txg_list_create(&vd->vdev_ms_list, |
308 offsetof(struct metaslab, ms_txg_node)); |
309 offsetof(struct metaslab, ms_txg_node)); |
309 txg_list_create(&vd->vdev_dtl_list, |
310 txg_list_create(&vd->vdev_dtl_list, |
336 space_map_destroy(&vd->vdev_dtl_map); |
337 space_map_destroy(&vd->vdev_dtl_map); |
337 space_map_vacate(&vd->vdev_dtl_scrub, NULL, NULL); |
338 space_map_vacate(&vd->vdev_dtl_scrub, NULL, NULL); |
338 space_map_destroy(&vd->vdev_dtl_scrub); |
339 space_map_destroy(&vd->vdev_dtl_scrub); |
339 mutex_exit(&vd->vdev_dtl_lock); |
340 mutex_exit(&vd->vdev_dtl_lock); |
340 mutex_destroy(&vd->vdev_dtl_lock); |
341 mutex_destroy(&vd->vdev_dtl_lock); |
|
342 mutex_destroy(&vd->vdev_stat_lock); |
341 |
343 |
342 if (vd == spa->spa_root_vdev) |
344 if (vd == spa->spa_root_vdev) |
343 spa->spa_root_vdev = NULL; |
345 spa->spa_root_vdev = NULL; |
344 |
346 |
345 kmem_free(vd, sizeof (vdev_t)); |
347 kmem_free(vd, sizeof (vdev_t)); |