• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/

Lines Matching defs:svr

188 	spa_vdev_removal_t *svr = kmem_zalloc(sizeof (*svr), KM_SLEEP);
189 mutex_init(&svr->svr_lock, NULL, MUTEX_DEFAULT, NULL);
190 cv_init(&svr->svr_cv, NULL, CV_DEFAULT, NULL);
191 svr->svr_allocd_segs = range_tree_create(NULL, NULL);
192 svr->svr_vdev_id = vd->vdev_id;
195 svr->svr_frees[i] = range_tree_create(NULL, NULL);
196 list_create(&svr->svr_new_segments[i],
201 return (svr);
205 spa_vdev_removal_destroy(spa_vdev_removal_t *svr)
208 ASSERT0(svr->svr_bytes_done[i]);
209 ASSERT0(svr->svr_max_offset_to_sync[i]);
210 range_tree_destroy(svr->svr_frees[i]);
211 list_destroy(&svr->svr_new_segments[i]);
214 range_tree_destroy(svr->svr_allocd_segs);
215 mutex_destroy(&svr->svr_lock);
216 cv_destroy(&svr->svr_cv);
217 kmem_free(svr, sizeof (*svr));
239 spa_vdev_removal_t *svr = NULL;
243 svr = spa_vdev_removal_create(vd);
350 spa->spa_vdev_removal = svr;
351 svr->svr_thread = thread_create(NULL, 0,
403 spa_vdev_removal_t *svr = spa_vdev_removal_create(vd);
404 ASSERT3U(svr->svr_vdev_id, ==, vd->vdev_id);
413 spa->spa_vdev_removal = svr;
444 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
446 if (svr == NULL)
458 if (svr->svr_thread != NULL)
464 zfs_dbgmsg("restarting removal of %llu", svr->svr_vdev_id);
465 svr->svr_thread = thread_create(NULL, 0, spa_vdev_remove_thread, spa,
478 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
486 ASSERT3U(vd->vdev_id, ==, svr->svr_vdev_id);
488 mutex_enter(&svr->svr_lock);
548 if (size > 0 && offset < svr->svr_max_offset_to_sync[txgoff]) {
554 svr->svr_max_offset_to_sync[txgoff] - offset);
568 if (svr->svr_max_offset_to_sync[txgoff] != 0) {
569 ASSERT3U(svr->svr_max_offset_to_sync[txgoff],
572 svr->svr_max_offset_to_sync[txgoff];
587 range_tree_add(svr->svr_frees[txgoff],
603 ASSERT3U(svr->svr_bytes_done[txgoff], >=,
605 svr->svr_bytes_done[txgoff] -= inflight_size;
606 svr->svr_bytes_done[txg & TXG_MASK] += inflight_size;
609 ASSERT0(svr->svr_max_offset_to_sync[TXG_CLEAN(txg) & TXG_MASK]);
622 if (svr->svr_allocd_segs != NULL)
623 range_tree_clear(svr->svr_allocd_segs, offset, size);
630 svr->svr_bytes_done[txg & TXG_MASK] += size;
632 mutex_exit(&svr->svr_lock);
659 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
662 /* Ensure the removal thread has completed before we free the svr. */
669 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
685 spa_vdev_removal_destroy(svr);
710 spa_vdev_removal_t *svr = arg;
712 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
721 &svr->svr_new_segments[txg & TXG_MASK], tx);
729 mutex_enter(&svr->svr_lock);
730 range_tree_vacate(svr->svr_frees[txg & TXG_MASK],
732 ASSERT3U(svr->svr_max_offset_to_sync[txg & TXG_MASK], >=,
734 svr->svr_max_offset_to_sync[txg & TXG_MASK] = 0;
735 mutex_exit(&svr->svr_lock);
908 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
1025 list_insert_tail(&svr->svr_new_segments[txg & TXG_MASK], entry);
1040 spa_vdev_removal_t *svr = arg;
1042 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
1047 ASSERT0(svr->svr_bytes_done[i]);
1056 ASSERT3P(svr->svr_zaplist, !=, NULL);
1057 for (nvpair_t *pair = nvlist_next_nvpair(svr->svr_zaplist, NULL);
1059 pair = nvlist_next_nvpair(svr->svr_zaplist, pair)) {
1062 fnvlist_free(svr->svr_zaplist);
1094 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
1101 svr->svr_zaplist = fnvlist_alloc();
1102 vdev_remove_enlist_zaps(vd, svr->svr_zaplist);
1115 dsl_sync_task_nowait(spa->spa_dsl_pool, vdev_remove_complete_sync, svr,
1121 * After this, we can not use svr.
1123 mutex_enter(&svr->svr_lock);
1124 svr->svr_thread = NULL;
1125 cv_broadcast(&svr->svr_cv);
1126 mutex_exit(&svr->svr_lock);
1206 spa_vdev_copy_impl(vdev_t *vd, spa_vdev_removal_t *svr, vdev_copy_arg_t *vca,
1212 mutex_enter(&svr->svr_lock);
1223 range_seg_t *rs = avl_first(&svr->svr_allocd_segs->rt_root);
1255 range_tree_remove(svr->svr_allocd_segs,
1260 mutex_exit(&svr->svr_lock);
1265 if (svr->svr_max_offset_to_sync[txg & TXG_MASK] == 0) {
1267 svr, 0, ZFS_SPACE_CHECK_NONE, tx);
1270 svr->svr_max_offset_to_sync[txg & TXG_MASK] = range_tree_max(segs);
1276 svr->svr_bytes_done[txg & TXG_MASK] += range_tree_space(segs);
1278 mutex_exit(&svr->svr_lock);
1343 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
1349 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
1363 mutex_enter(&svr->svr_lock);
1371 msi < vd->vdev_ms_count && !svr->svr_thread_exit; msi++) {
1375 ASSERT0(range_tree_space(svr->svr_allocd_segs));
1398 svr->svr_allocd_segs, SM_ALLOC));
1401 range_tree_remove, svr->svr_allocd_segs);
1408 range_tree_clear(svr->svr_allocd_segs, 0, start_offset);
1415 avl_numnodes(&svr->svr_allocd_segs->rt_root),
1418 while (!svr->svr_thread_exit &&
1419 !range_tree_is_empty(svr->svr_allocd_segs)) {
1421 mutex_exit(&svr->svr_lock);
1442 bytes_copied += svr->svr_bytes_done[i];
1444 !svr->svr_thread_exit)
1466 vd = vdev_lookup_top(spa, svr->svr_vdev_id);
1472 spa_vdev_copy_impl(vd, svr, &vca, &max_alloc, tx);
1475 mutex_enter(&svr->svr_lock);
1479 mutex_exit(&svr->svr_lock);
1492 if (svr->svr_thread_exit) {
1493 mutex_enter(&svr->svr_lock);
1494 range_tree_vacate(svr->svr_allocd_segs, NULL, NULL);
1495 svr->svr_thread = NULL;
1496 cv_broadcast(&svr->svr_cv);
1497 mutex_exit(&svr->svr_lock);
1499 ASSERT0(range_tree_space(svr->svr_allocd_segs));
1508 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
1510 if (svr == NULL)
1513 mutex_enter(&svr->svr_lock);
1514 svr->svr_thread_exit = B_TRUE;
1515 while (svr->svr_thread != NULL)
1516 cv_wait(&svr->svr_cv, &svr->svr_lock);
1517 svr->svr_thread_exit = B_FALSE;
1518 mutex_exit(&svr->svr_lock);
1541 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
1542 vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
1547 ASSERT3P(svr->svr_thread, ==, NULL);
1569 ASSERT(list_is_empty(&svr->svr_new_segments[i]));
1570 ASSERT3U(svr->svr_max_offset_to_sync[i], <=,
1580 ASSERT0(range_tree_space(svr->svr_allocd_segs));
1594 mutex_enter(&svr->svr_lock);
1596 svr->svr_allocd_segs, SM_ALLOC));
1598 range_tree_remove, svr->svr_allocd_segs);
1608 range_tree_clear(svr->svr_allocd_segs,
1611 mutex_exit(&svr->svr_lock);
1615 mutex_enter(&svr->svr_lock);
1616 range_tree_vacate(svr->svr_allocd_segs,
1618 mutex_exit(&svr->svr_lock);
1649 svr->svr_bytes_done[dmu_tx_get_txg(tx) & TXG_MASK] = 0;
1689 spa_vdev_removal_t *svr = spa->spa_vdev_removal;
1698 if (svr->svr_bytes_done[txgoff] == 0)
1704 spa->spa_removing_phys.sr_copied += svr->svr_bytes_done[txgoff];
1705 svr->svr_bytes_done[txgoff] = 0;