MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vdev_trim_simple

Function vdev_trim_simple

freebsd/contrib/openzfs/module/zfs/vdev_trim.c:1654–1697  ·  view source on GitHub ↗

* A wrapper which calls vdev_trim_ranges(). It is intended to be called * on leaf vdevs. */

Source from the content-addressed store, hash-verified

1652 * on leaf vdevs.
1653 */
1654int
1655vdev_trim_simple(vdev_t *vd, uint64_t start, uint64_t size)
1656{
1657 trim_args_t ta;
1658 range_seg64_t physical_rs;
1659 int error;
1660 physical_rs.rs_start = start;
1661 physical_rs.rs_end = start + size;
1662
1663 ASSERT(vdev_is_concrete(vd));
1664 ASSERT(vd->vdev_ops->vdev_op_leaf);
1665 ASSERT(!vd->vdev_detached);
1666 ASSERT(!vd->vdev_top->vdev_removing);
1667
1668 bzero(&ta, sizeof (ta));
1669 ta.trim_vdev = vd;
1670 ta.trim_tree = range_tree_create(NULL, RANGE_SEG64, NULL, 0, 0);
1671 ta.trim_type = TRIM_TYPE_SIMPLE;
1672 ta.trim_extent_bytes_max = zfs_trim_extent_bytes_max;
1673 ta.trim_extent_bytes_min = SPA_MINBLOCKSIZE;
1674 ta.trim_flags = 0;
1675
1676 ASSERT3U(physical_rs.rs_end, >=, physical_rs.rs_start);
1677
1678 if (physical_rs.rs_end > physical_rs.rs_start) {
1679 range_tree_add(ta.trim_tree, physical_rs.rs_start,
1680 physical_rs.rs_end - physical_rs.rs_start);
1681 } else {
1682 ASSERT3U(physical_rs.rs_end, ==, physical_rs.rs_start);
1683 }
1684
1685 error = vdev_trim_ranges(&ta);
1686
1687 mutex_enter(&vd->vdev_trim_io_lock);
1688 while (vd->vdev_trim_inflight[TRIM_TYPE_SIMPLE] > 0) {
1689 cv_wait(&vd->vdev_trim_io_cv, &vd->vdev_trim_io_lock);
1690 }
1691 mutex_exit(&vd->vdev_trim_io_lock);
1692
1693 range_tree_vacate(ta.trim_tree, NULL, NULL);
1694 range_tree_destroy(ta.trim_tree);
1695
1696 return (error);
1697}
1698
1699EXPORT_SYMBOL(vdev_trim);
1700EXPORT_SYMBOL(vdev_trim_stop);

Callers 1

l2arc_evictFunction · 0.85

Calls 10

vdev_is_concreteFunction · 0.85
bzeroFunction · 0.85
range_tree_createFunction · 0.85
range_tree_addFunction · 0.85
vdev_trim_rangesFunction · 0.85
mutex_enterFunction · 0.85
cv_waitFunction · 0.85
mutex_exitFunction · 0.85
range_tree_vacateFunction · 0.85
range_tree_destroyFunction · 0.85

Tested by

no test coverage detected