Lines Matching refs:vd
580 vdev_draid_asize(vdev_t *vd, uint64_t psize) in vdev_draid_asize() argument
582 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_asize()
583 uint64_t ashift = vd->vdev_ashift; in vdev_draid_asize()
585 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_asize()
600 vdev_draid_asize_to_psize(vdev_t *vd, uint64_t asize) in vdev_draid_asize_to_psize() argument
602 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_asize_to_psize()
613 vdev_draid_offset_to_group(vdev_t *vd, uint64_t offset) in vdev_draid_offset_to_group() argument
615 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_offset_to_group()
617 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_offset_to_group()
626 vdev_draid_group_to_offset(vdev_t *vd, uint64_t group) in vdev_draid_group_to_offset() argument
628 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_to_offset()
630 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_group_to_offset()
897 vdev_draid_logical_to_physical(vdev_t *vd, uint64_t logical_offset, in vdev_draid_logical_to_physical() argument
900 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_logical_to_physical()
903 uint64_t ashift = vd->vdev_top->vdev_ashift; in vdev_draid_logical_to_physical()
959 vdev_t *vd = zio->io_vd; in vdev_draid_map_alloc_row() local
960 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_map_alloc_row()
961 uint64_t ashift = vd->vdev_top->vdev_ashift; in vdev_draid_map_alloc_row()
963 uint64_t io_asize = vdev_draid_asize(vd, io_size); in vdev_draid_map_alloc_row()
964 uint64_t group = vdev_draid_offset_to_group(vd, io_offset); in vdev_draid_map_alloc_row()
965 uint64_t start_offset = vdev_draid_group_to_offset(vd, group + 1); in vdev_draid_map_alloc_row()
972 io_size = vdev_draid_asize_to_psize(vd, in vdev_draid_map_alloc_row()
985 vdev_draid_group_to_offset(vd, group) == io_offset); in vdev_draid_map_alloc_row()
989 uint64_t physical_offset = vdev_draid_logical_to_physical(vd, in vdev_draid_map_alloc_row()
1130 vdev_t *vd = zio->io_vd; in vdev_draid_map_alloc() local
1132 io_offset += vdev_draid_asize(vd, size); in vdev_draid_map_alloc()
1138 vd, vdev_draid_offset_to_group(vd, io_offset))); in vdev_draid_map_alloc()
1163 vdev_draid_get_astart(vdev_t *vd, const uint64_t start) in vdev_draid_get_astart() argument
1165 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_get_astart()
1167 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_get_astart()
1169 return (roundup(start, vdc->vdc_groupwidth << vd->vdev_ashift)); in vdev_draid_get_astart()
1178 vdev_draid_min_asize(vdev_t *vd) in vdev_draid_min_asize() argument
1180 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_min_asize()
1182 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_min_asize()
1185 (vd->vdev_min_asize + vdc->vdc_ndisks - 1) / (vdc->vdc_ndisks)); in vdev_draid_min_asize()
1193 vdev_draid_min_alloc(vdev_t *vd) in vdev_draid_min_alloc() argument
1195 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_min_alloc()
1197 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_min_alloc()
1199 return (vdc->vdc_ndata << vd->vdev_ashift); in vdev_draid_min_alloc()
1213 vdev_draid_missing(vdev_t *vd, uint64_t physical_offset, uint64_t txg, in vdev_draid_missing() argument
1216 if (vd->vdev_ops == &vdev_spare_ops || in vdev_draid_missing()
1217 vd->vdev_ops == &vdev_replacing_ops) { in vdev_draid_missing()
1222 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_missing()
1223 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_missing()
1236 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_missing()
1242 if (vd->vdev_rebuild_txg != 0) in vdev_draid_missing()
1249 if (vdev_dtl_contains(vd, DTL_MISSING, txg, size)) in vdev_draid_missing()
1257 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_missing()
1258 if (vd == NULL) in vdev_draid_missing()
1261 return (vdev_draid_missing(vd, physical_offset, in vdev_draid_missing()
1265 return (vdev_dtl_contains(vd, DTL_MISSING, txg, size)); in vdev_draid_missing()
1272 vdev_draid_partial(vdev_t *vd, uint64_t physical_offset, uint64_t txg, in vdev_draid_partial() argument
1275 if (vd->vdev_ops == &vdev_spare_ops || in vdev_draid_partial()
1276 vd->vdev_ops == &vdev_replacing_ops) { in vdev_draid_partial()
1281 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_partial()
1282 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_partial()
1294 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_partial()
1300 if (vd->vdev_rebuild_txg != 0) in vdev_draid_partial()
1307 if (vdev_dtl_contains(vd, DTL_MISSING, txg, size)) in vdev_draid_partial()
1315 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_partial()
1316 if (vd == NULL) in vdev_draid_partial()
1319 return (vdev_draid_partial(vd, physical_offset, txg, size)); in vdev_draid_partial()
1322 return (vdev_dtl_contains(vd, DTL_MISSING, txg, size)); in vdev_draid_partial()
1329 vdev_draid_readable(vdev_t *vd, uint64_t physical_offset) in vdev_draid_readable() argument
1331 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_readable()
1332 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_readable()
1333 if (vd == NULL) in vdev_draid_readable()
1337 if (vd->vdev_ops == &vdev_spare_ops || in vdev_draid_readable()
1338 vd->vdev_ops == &vdev_replacing_ops) { in vdev_draid_readable()
1340 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_readable()
1341 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_readable()
1353 return (vdev_readable(vd)); in vdev_draid_readable()
1360 vdev_draid_find_spare(vdev_t *vd) in vdev_draid_find_spare() argument
1362 if (vd->vdev_ops == &vdev_draid_spare_ops) in vdev_draid_find_spare()
1363 return (vd); in vdev_draid_find_spare()
1365 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_find_spare()
1366 vdev_t *svd = vdev_draid_find_spare(vd->vdev_child[c]); in vdev_draid_find_spare()
1380 vdev_draid_faulted(vdev_t *vd, uint64_t physical_offset) in vdev_draid_faulted() argument
1382 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_faulted()
1383 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_faulted()
1384 if (vd == NULL) in vdev_draid_faulted()
1391 vd = vd->vdev_parent; in vdev_draid_faulted()
1394 return (vd->vdev_ops == &vdev_replacing_ops || in vdev_draid_faulted()
1395 vd->vdev_ops == &vdev_spare_ops); in vdev_draid_faulted()
1403 vdev_draid_group_degraded(vdev_t *vd, uint64_t offset) in vdev_draid_group_degraded() argument
1405 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_degraded()
1407 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_group_degraded()
1408 ASSERT3U(vdev_draid_get_astart(vd, offset), ==, offset); in vdev_draid_group_degraded()
1411 uint64_t physical_offset = vdev_draid_logical_to_physical(vd, in vdev_draid_group_degraded()
1421 vdev_t *cvd = vd->vdev_child[cid]; in vdev_draid_group_degraded()
1442 vdev_draid_group_missing(vdev_t *vd, uint64_t offset, uint64_t txg, in vdev_draid_group_missing() argument
1445 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_missing()
1447 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_group_missing()
1448 ASSERT3U(vdev_draid_get_astart(vd, offset), ==, offset); in vdev_draid_group_missing()
1451 uint64_t physical_offset = vdev_draid_logical_to_physical(vd, in vdev_draid_group_missing()
1461 vdev_t *cvd = vd->vdev_child[cid]; in vdev_draid_group_missing()
1484 vdev_draid_calculate_asize(vdev_t *vd, uint64_t *asizep, uint64_t *max_asizep, in vdev_draid_calculate_asize() argument
1490 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_calculate_asize()
1492 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_calculate_asize()
1493 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_calculate_asize()
1502 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_calculate_asize()
1503 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_calculate_asize()
1521 vdev_draid_open_spares(vdev_t *vd) in vdev_draid_open_spares() argument
1523 return (vd->vdev_ops == &vdev_draid_spare_ops || in vdev_draid_open_spares()
1524 vd->vdev_ops == &vdev_replacing_ops || in vdev_draid_open_spares()
1525 vd->vdev_ops == &vdev_spare_ops); in vdev_draid_open_spares()
1532 vdev_draid_open_children(vdev_t *vd) in vdev_draid_open_children() argument
1534 return (!vdev_draid_open_spares(vd)); in vdev_draid_open_children()
1541 vdev_draid_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize, in vdev_draid_open() argument
1544 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_open()
1549 vd->vdev_children < nparity + 1) { in vdev_draid_open()
1550 vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; in vdev_draid_open()
1559 vdev_open_children_subset(vd, vdev_draid_open_children); in vdev_draid_open()
1560 vdev_open_children_subset(vd, vdev_draid_open_spares); in vdev_draid_open()
1563 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_open()
1564 if (vd->vdev_child[c]->vdev_open_error != 0) { in vdev_draid_open()
1566 vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS; in vdev_draid_open()
1580 vdev_draid_calculate_asize(vd, &child_asize, &child_max_asize, in vdev_draid_open()
1609 vdev_draid_close(vdev_t *vd) in vdev_draid_close() argument
1611 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_close()
1612 if (vd->vdev_child[c] != NULL) in vdev_draid_close()
1613 vdev_close(vd->vdev_child[c]); in vdev_draid_close()
1625 vdev_draid_rebuild_asize(vdev_t *vd, uint64_t start, uint64_t asize, in vdev_draid_rebuild_asize() argument
1628 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_rebuild_asize()
1630 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_rebuild_asize()
1632 uint64_t ashift = vd->vdev_ashift; in vdev_draid_rebuild_asize()
1637 ASSERT3U(vdev_draid_get_astart(vd, start), ==, start); in vdev_draid_rebuild_asize()
1642 uint64_t chunk_size = MIN(asize, vdev_psize_to_asize(vd, psize)); in vdev_draid_rebuild_asize()
1645 uint64_t group = vdev_draid_offset_to_group(vd, start); in vdev_draid_rebuild_asize()
1646 uint64_t left = vdev_draid_group_to_offset(vd, group + 1) - start; in vdev_draid_rebuild_asize()
1650 ASSERT3U(vdev_draid_offset_to_group(vd, start), ==, in vdev_draid_rebuild_asize()
1651 vdev_draid_offset_to_group(vd, start + chunk_size - 1)); in vdev_draid_rebuild_asize()
1664 vdev_draid_metaslab_init(vdev_t *vd, uint64_t *ms_start, uint64_t *ms_size) in vdev_draid_metaslab_init() argument
1666 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_metaslab_init()
1668 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_metaslab_init()
1670 uint64_t sz = vdc->vdc_groupwidth << vd->vdev_ashift; in vdev_draid_metaslab_init()
1671 uint64_t astart = vdev_draid_get_astart(vd, *ms_start); in vdev_draid_metaslab_init()
1687 vdev_draid_spare_create(nvlist_t *nvroot, vdev_t *vd, uint64_t *ndraidp, in vdev_draid_spare_create() argument
1694 for (uint64_t i = 0; i < vd->vdev_children; i++) { in vdev_draid_spare_create()
1695 vdev_t *cvd = vd->vdev_child[i]; in vdev_draid_spare_create()
1724 for (uint64_t vdev_id = 0; vdev_id < vd->vdev_children; vdev_id++) { in vdev_draid_spare_create()
1725 vdev_t *cvd = vd->vdev_child[vdev_id]; in vdev_draid_spare_create()
1782 vdev_draid_need_resilver(vdev_t *vd, const dva_t *dva, size_t psize, in vdev_draid_need_resilver() argument
1786 uint64_t asize = vdev_draid_asize(vd, psize); in vdev_draid_need_resilver()
1794 ASSERT3U(vdev_draid_offset_to_group(vd, offset), ==, in vdev_draid_need_resilver()
1795 vdev_draid_offset_to_group(vd, offset + asize - 1)); in vdev_draid_need_resilver()
1797 return (vdev_draid_group_degraded(vd, offset)); in vdev_draid_need_resilver()
1803 if (!vdev_dtl_contains(vd, DTL_PARTIAL, phys_birth, 1)) in vdev_draid_need_resilver()
1806 if (vdev_draid_group_missing(vd, offset, phys_birth, 1)) in vdev_draid_need_resilver()
1810 if (vdev_draid_offset_to_group(vd, offset) != in vdev_draid_need_resilver()
1811 vdev_draid_offset_to_group(vd, offset + asize - 1)) { in vdev_draid_need_resilver()
1812 if (vdev_draid_group_missing(vd, in vdev_draid_need_resilver()
1822 vdev_draid_rebuilding(vdev_t *vd) in vdev_draid_rebuilding() argument
1824 if (vd->vdev_ops->vdev_op_leaf && vd->vdev_rebuild_txg) in vdev_draid_rebuilding()
1827 for (int i = 0; i < vd->vdev_children; i++) { in vdev_draid_rebuilding()
1828 if (vdev_draid_rebuilding(vd->vdev_child[i])) { in vdev_draid_rebuilding()
1837 vdev_draid_io_verify(vdev_t *vd, raidz_row_t *rr, int col) in vdev_draid_io_verify() argument
1843 vdev_draid_asize(vd, rr->rr_size); in vdev_draid_io_verify()
1846 vdev_t *cvd = vd->vdev_child[rc->rc_devidx]; in vdev_draid_io_verify()
1866 vdev_t *vd = zio->io_vd; in vdev_draid_io_start_write() local
1881 vdev_draid_io_verify(vd, rr, c); in vdev_draid_io_start_write()
1884 vd->vdev_child[rc->rc_devidx], rc->rc_offset, in vdev_draid_io_start_write()
1901 vdev_t *vd = zio->io_vd; in vdev_draid_io_start_read() local
1914 vdev_t *cvd = vd->vdev_child[rc->rc_devidx]; in vdev_draid_io_start_read()
2026 vdev_t *cvd = vd->vdev_child[rc->rc_devidx]; in vdev_draid_io_start_read()
2047 vdev_t *vd __maybe_unused = zio->io_vd; in vdev_draid_io_start()
2049 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_io_start()
2050 ASSERT3U(zio->io_offset, ==, vdev_draid_get_astart(vd, zio->io_offset)); in vdev_draid_io_start()
2082 vdev_draid_state_change(vdev_t *vd, int faulted, int degraded) in vdev_draid_state_change() argument
2084 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_state_change()
2085 ASSERT(vd->vdev_ops == &vdev_draid_ops); in vdev_draid_state_change()
2088 vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, in vdev_draid_state_change()
2091 vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE); in vdev_draid_state_change()
2093 vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE); in vdev_draid_state_change()
2195 vdev_draid_config_generate(vdev_t *vd, nvlist_t *nv) in vdev_draid_config_generate() argument
2197 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_config_generate()
2198 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_config_generate()
2297 vdev_draid_fini(vdev_t *vd) in vdev_draid_fini() argument
2299 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_fini()
2307 vdev_draid_nparity(vdev_t *vd) in vdev_draid_nparity() argument
2309 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_nparity()
2315 vdev_draid_ndisks(vdev_t *vd) in vdev_draid_ndisks() argument
2317 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_ndisks()
2371 vdev_draid_spare_get_parent(vdev_t *vd) in vdev_draid_spare_get_parent() argument
2373 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_get_parent()
2375 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_spare_ops); in vdev_draid_spare_get_parent()
2380 return (vdev_lookup_by_guid(vd->vdev_spa->spa_root_vdev, in vdev_draid_spare_get_parent()
2389 vdev_draid_spare_is_active(vdev_t *vd) in vdev_draid_spare_is_active() argument
2391 vdev_t *pvd = vd->vdev_parent; in vdev_draid_spare_is_active()
2409 vdev_draid_spare_get_child(vdev_t *vd, uint64_t physical_offset) in vdev_draid_spare_get_child() argument
2411 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_get_child()
2413 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_spare_ops); in vdev_draid_spare_get_child()
2442 vdev_draid_spare_close(vdev_t *vd) in vdev_draid_spare_close() argument
2444 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_close()
2453 vdev_draid_spare_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, in vdev_draid_spare_open() argument
2456 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_open()
2457 vdev_t *rvd = vd->vdev_spa->spa_root_vdev; in vdev_draid_spare_open()
2469 if (vd->vdev_parent == NULL) { in vdev_draid_spare_open()
2532 vdev_draid_read_config_spare(vdev_t *vd) in vdev_draid_read_config_spare() argument
2534 spa_t *spa = vd->vdev_spa; in vdev_draid_read_config_spare()
2536 uint64_t guid = vd->vdev_guid; in vdev_draid_read_config_spare()
2540 fnvlist_add_uint64(nv, ZPOOL_CONFIG_CREATE_TXG, vd->vdev_crtxg); in vdev_draid_read_config_spare()
2545 fnvlist_add_uint64(nv, ZPOOL_CONFIG_TOP_GUID, vd->vdev_top->vdev_guid); in vdev_draid_read_config_spare()
2547 vdev_draid_spare_is_active(vd) ? in vdev_draid_read_config_spare()
2553 strcmp(sav->sav_vdevs[i]->vdev_path, vd->vdev_path) == 0) { in vdev_draid_read_config_spare()
2571 vdev_t *vd = zio->io_vd; in vdev_draid_spare_ioctl() local
2575 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_spare_ioctl()
2577 vd->vdev_child[c], zio->io_offset, zio->io_abd, in vdev_draid_spare_ioctl()
2598 vdev_t *cvd = NULL, *vd = zio->io_vd; in vdev_draid_spare_io_start() local
2599 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_io_start()
2618 if (VDEV_OFFSET_IS_LABEL(vd, zio->io_offset)) { in vdev_draid_spare_io_start()
2634 cvd = vdev_draid_spare_get_child(vd, offset); in vdev_draid_spare_io_start()
2648 if (VDEV_OFFSET_IS_LABEL(vd, zio->io_offset)) { in vdev_draid_spare_io_start()
2662 cvd = vdev_draid_spare_get_child(vd, offset); in vdev_draid_spare_io_start()
2677 ASSERT0(VDEV_OFFSET_IS_LABEL(vd, zio->io_offset)); in vdev_draid_spare_io_start()
2679 cvd = vdev_draid_spare_get_child(vd, offset); in vdev_draid_spare_io_start()
2800 vdev_draid_spare_fini(vdev_t *vd) in vdev_draid_spare_fini() argument
2802 kmem_free(vd->vdev_tsd, sizeof (vdev_draid_spare_t)); in vdev_draid_spare_fini()
2806 vdev_draid_spare_config_generate(vdev_t *vd, nvlist_t *nv) in vdev_draid_spare_config_generate() argument
2808 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_config_generate()
2810 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_spare_ops); in vdev_draid_spare_config_generate()