Lines Matching refs:ta
488 vdev_trim_calculate_rate(trim_args_t *ta) in vdev_trim_calculate_rate() argument
490 return (ta->trim_bytes_done * 1000 / in vdev_trim_calculate_rate()
491 (NSEC2MSEC(gethrtime() - ta->trim_start_time) + 1)); in vdev_trim_calculate_rate()
499 vdev_trim_range(trim_args_t *ta, uint64_t start, uint64_t size) in vdev_trim_range() argument
501 vdev_t *vd = ta->trim_vdev; in vdev_trim_range()
511 if (ta->trim_type == TRIM_TYPE_MANUAL) { in vdev_trim_range()
513 vdev_trim_calculate_rate(ta) > vd->vdev_trim_rate) { in vdev_trim_range()
519 ta->trim_bytes_done += size; in vdev_trim_range()
526 vd->vdev_trim_inflight[ta->trim_type]++; in vdev_trim_range()
536 if (ta->trim_type == TRIM_TYPE_MANUAL && in vdev_trim_range()
550 if ((ta->trim_type == TRIM_TYPE_MANUAL && in vdev_trim_range()
552 (ta->trim_type == TRIM_TYPE_AUTO && in vdev_trim_range()
555 vd->vdev_trim_inflight[ta->trim_type]--; in vdev_trim_range()
564 if (ta->trim_type == TRIM_TYPE_MANUAL) in vdev_trim_range()
567 if (ta->trim_type == TRIM_TYPE_MANUAL) { in vdev_trim_range()
569 } else if (ta->trim_type == TRIM_TYPE_AUTO) { in vdev_trim_range()
577 ta->trim_flags)); in vdev_trim_range()
592 vdev_trim_ranges(trim_args_t *ta) in vdev_trim_ranges() argument
594 vdev_t *vd = ta->trim_vdev; in vdev_trim_ranges()
595 zfs_btree_t *t = &ta->trim_tree->rt_root; in vdev_trim_ranges()
597 uint64_t extent_bytes_max = ta->trim_extent_bytes_max; in vdev_trim_ranges()
598 uint64_t extent_bytes_min = ta->trim_extent_bytes_min; in vdev_trim_ranges()
602 ta->trim_start_time = gethrtime(); in vdev_trim_ranges()
603 ta->trim_bytes_done = 0; in vdev_trim_ranges()
607 uint64_t size = zfs_rs_get_end(rs, ta->trim_tree) - in vdev_trim_ranges()
608 zfs_rs_get_start(rs, ta->trim_tree); in vdev_trim_ranges()
611 spa_iostats_trim_add(spa, ta->trim_type, in vdev_trim_ranges()
620 error = vdev_trim_range(ta, VDEV_LABEL_START_SIZE + in vdev_trim_ranges()
621 zfs_rs_get_start(rs, ta->trim_tree) + in vdev_trim_ranges()
813 trim_args_t *ta = arg; in vdev_trim_xlate_range_add() local
814 vdev_t *vd = ta->trim_vdev; in vdev_trim_xlate_range_add()
820 if (ta->trim_type == TRIM_TYPE_MANUAL) { in vdev_trim_xlate_range_add()
836 zfs_range_tree_add(ta->trim_tree, physical_rs->rs_start, in vdev_trim_xlate_range_add()
847 trim_args_t *ta = arg; in vdev_trim_range_add() local
848 vdev_t *vd = ta->trim_vdev; in vdev_trim_range_add()
859 metaslab_t *msp = ta->trim_msp; in vdev_trim_range_add()
882 trim_args_t ta; in vdev_trim_thread() local
902 ta.trim_vdev = vd; in vdev_trim_thread()
903 ta.trim_extent_bytes_max = zfs_trim_extent_bytes_max; in vdev_trim_thread()
904 ta.trim_extent_bytes_min = zfs_trim_extent_bytes_min; in vdev_trim_thread()
905 ta.trim_tree = zfs_range_tree_create(NULL, ZFS_RANGE_SEG64, NULL, 0, 0); in vdev_trim_thread()
906 ta.trim_type = TRIM_TYPE_MANUAL; in vdev_trim_thread()
907 ta.trim_flags = 0; in vdev_trim_thread()
915 ta.trim_flags |= ZIO_TRIM_SECURE; in vdev_trim_thread()
916 ta.trim_extent_bytes_min = SPA_MINBLOCKSIZE; in vdev_trim_thread()
950 ta.trim_msp = msp; in vdev_trim_thread()
952 &ta); in vdev_trim_thread()
956 error = vdev_trim_ranges(&ta); in vdev_trim_thread()
960 zfs_range_tree_vacate(ta.trim_tree, NULL, NULL); in vdev_trim_thread()
967 zfs_range_tree_destroy(ta.trim_tree); in vdev_trim_thread()
1205 trim_args_t *ta = arg; in vdev_trim_range_verify() local
1206 metaslab_t *msp = ta->trim_msp; in vdev_trim_range_verify()
1337 trim_args_t *ta = &tap[c]; in vdev_autotrim_thread() local
1338 vdev_t *cvd = ta->trim_vdev; in vdev_autotrim_thread()
1340 ta->trim_msp = msp; in vdev_autotrim_thread()
1341 ta->trim_extent_bytes_max = extent_bytes_max; in vdev_autotrim_thread()
1342 ta->trim_extent_bytes_min = extent_bytes_min; in vdev_autotrim_thread()
1343 ta->trim_type = TRIM_TYPE_AUTO; in vdev_autotrim_thread()
1344 ta->trim_flags = 0; in vdev_autotrim_thread()
1363 ta->trim_tree = zfs_range_tree_create(NULL, in vdev_autotrim_thread()
1366 vdev_trim_range_add, ta); in vdev_autotrim_thread()
1379 trim_args_t *ta = &tap[c]; in vdev_autotrim_thread() local
1385 if (ta->trim_tree == NULL || in vdev_autotrim_thread()
1386 ta->trim_vdev->vdev_trim_thread != NULL) { in vdev_autotrim_thread()
1399 int error = vdev_trim_ranges(ta); in vdev_autotrim_thread()
1435 trim_args_t *ta = &tap[c]; in vdev_autotrim_thread() local
1437 if (ta->trim_tree == NULL) in vdev_autotrim_thread()
1440 zfs_range_tree_vacate(ta->trim_tree, NULL, in vdev_autotrim_thread()
1442 zfs_range_tree_destroy(ta->trim_tree); in vdev_autotrim_thread()
1591 trim_args_t ta = {0}; in vdev_trim_l2arc_thread() local
1602 ta.trim_vdev = vd; in vdev_trim_l2arc_thread()
1603 ta.trim_tree = zfs_range_tree_create(NULL, ZFS_RANGE_SEG64, NULL, 0, 0); in vdev_trim_l2arc_thread()
1604 ta.trim_type = TRIM_TYPE_MANUAL; in vdev_trim_l2arc_thread()
1605 ta.trim_extent_bytes_max = zfs_trim_extent_bytes_max; in vdev_trim_l2arc_thread()
1606 ta.trim_extent_bytes_min = SPA_MINBLOCKSIZE; in vdev_trim_l2arc_thread()
1607 ta.trim_flags = 0; in vdev_trim_l2arc_thread()
1613 zfs_range_tree_add(ta.trim_tree, physical_rs.rs_start, in vdev_trim_l2arc_thread()
1620 (void) vdev_trim_ranges(&ta); in vdev_trim_l2arc_thread()
1629 zfs_range_tree_vacate(ta.trim_tree, NULL, NULL); in vdev_trim_l2arc_thread()
1630 zfs_range_tree_destroy(ta.trim_tree); in vdev_trim_l2arc_thread()
1725 trim_args_t ta = {0}; in vdev_trim_simple() local
1737 ta.trim_vdev = vd; in vdev_trim_simple()
1738 ta.trim_tree = zfs_range_tree_create(NULL, ZFS_RANGE_SEG64, NULL, 0, 0); in vdev_trim_simple()
1739 ta.trim_type = TRIM_TYPE_SIMPLE; in vdev_trim_simple()
1740 ta.trim_extent_bytes_max = zfs_trim_extent_bytes_max; in vdev_trim_simple()
1741 ta.trim_extent_bytes_min = SPA_MINBLOCKSIZE; in vdev_trim_simple()
1742 ta.trim_flags = 0; in vdev_trim_simple()
1747 zfs_range_tree_add(ta.trim_tree, physical_rs.rs_start, in vdev_trim_simple()
1753 error = vdev_trim_ranges(&ta); in vdev_trim_simple()
1761 zfs_range_tree_vacate(ta.trim_tree, NULL, NULL); in vdev_trim_simple()
1762 zfs_range_tree_destroy(ta.trim_tree); in vdev_trim_simple()