Lines Matching refs:vd
581 vdev_draid_psize_to_asize(vdev_t *vd, uint64_t psize, uint64_t txg) in vdev_draid_psize_to_asize() argument
584 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_psize_to_asize()
585 uint64_t ashift = vd->vdev_ashift; in vdev_draid_psize_to_asize()
587 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_psize_to_asize()
602 vdev_draid_asize_to_psize(vdev_t *vd, uint64_t asize, uint64_t txg) in vdev_draid_asize_to_psize() argument
605 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_asize_to_psize()
616 vdev_draid_offset_to_group(vdev_t *vd, uint64_t offset) in vdev_draid_offset_to_group() argument
618 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_offset_to_group()
620 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_offset_to_group()
629 vdev_draid_group_to_offset(vdev_t *vd, uint64_t group) in vdev_draid_group_to_offset() argument
631 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_to_offset()
633 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_group_to_offset()
900 vdev_draid_logical_to_physical(vdev_t *vd, uint64_t logical_offset, in vdev_draid_logical_to_physical() argument
903 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_logical_to_physical()
906 uint64_t ashift = vd->vdev_top->vdev_ashift; in vdev_draid_logical_to_physical()
962 vdev_t *vd = zio->io_vd; in vdev_draid_map_alloc_row() local
963 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_map_alloc_row()
964 uint64_t ashift = vd->vdev_top->vdev_ashift; in vdev_draid_map_alloc_row()
966 uint64_t io_asize = vdev_draid_psize_to_asize(vd, io_size, 0); in vdev_draid_map_alloc_row()
967 uint64_t group = vdev_draid_offset_to_group(vd, io_offset); in vdev_draid_map_alloc_row()
968 uint64_t start_offset = vdev_draid_group_to_offset(vd, group + 1); in vdev_draid_map_alloc_row()
975 io_size = vdev_draid_asize_to_psize(vd, in vdev_draid_map_alloc_row()
988 vdev_draid_group_to_offset(vd, group) == io_offset); in vdev_draid_map_alloc_row()
992 uint64_t physical_offset = vdev_draid_logical_to_physical(vd, in vdev_draid_map_alloc_row()
1119 vdev_t *vd = zio->io_vd; in vdev_draid_map_alloc() local
1121 io_offset += vdev_draid_psize_to_asize(vd, size, 0); in vdev_draid_map_alloc()
1127 vd, vdev_draid_offset_to_group(vd, io_offset))); in vdev_draid_map_alloc()
1151 vdev_draid_get_astart(vdev_t *vd, const uint64_t start) in vdev_draid_get_astart() argument
1153 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_get_astart()
1155 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_get_astart()
1157 return (roundup(start, vdc->vdc_groupwidth << vd->vdev_ashift)); in vdev_draid_get_astart()
1166 vdev_draid_min_asize(vdev_t *vd) in vdev_draid_min_asize() argument
1168 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_min_asize()
1170 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_min_asize()
1173 (vd->vdev_min_asize + vdc->vdc_ndisks - 1) / (vdc->vdc_ndisks)); in vdev_draid_min_asize()
1181 vdev_draid_min_alloc(vdev_t *vd) in vdev_draid_min_alloc() argument
1183 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_min_alloc()
1185 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_min_alloc()
1187 return (vdc->vdc_ndata << vd->vdev_ashift); in vdev_draid_min_alloc()
1201 vdev_draid_missing(vdev_t *vd, uint64_t physical_offset, uint64_t txg, in vdev_draid_missing() argument
1204 if (vd->vdev_ops == &vdev_spare_ops || in vdev_draid_missing()
1205 vd->vdev_ops == &vdev_replacing_ops) { in vdev_draid_missing()
1210 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_missing()
1211 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_missing()
1224 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_missing()
1230 if (vd->vdev_rebuild_txg != 0) in vdev_draid_missing()
1237 if (vdev_dtl_contains(vd, DTL_MISSING, txg, size)) in vdev_draid_missing()
1245 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_missing()
1246 if (vd == NULL) in vdev_draid_missing()
1249 return (vdev_draid_missing(vd, physical_offset, in vdev_draid_missing()
1253 return (vdev_dtl_contains(vd, DTL_MISSING, txg, size)); in vdev_draid_missing()
1260 vdev_draid_partial(vdev_t *vd, uint64_t physical_offset, uint64_t txg, in vdev_draid_partial() argument
1263 if (vd->vdev_ops == &vdev_spare_ops || in vdev_draid_partial()
1264 vd->vdev_ops == &vdev_replacing_ops) { in vdev_draid_partial()
1269 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_partial()
1270 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_partial()
1282 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_partial()
1288 if (vd->vdev_rebuild_txg != 0) in vdev_draid_partial()
1295 if (vdev_dtl_contains(vd, DTL_MISSING, txg, size)) in vdev_draid_partial()
1303 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_partial()
1304 if (vd == NULL) in vdev_draid_partial()
1307 return (vdev_draid_partial(vd, physical_offset, txg, size)); in vdev_draid_partial()
1310 return (vdev_dtl_contains(vd, DTL_MISSING, txg, size)); in vdev_draid_partial()
1317 vdev_draid_readable(vdev_t *vd, uint64_t physical_offset) in vdev_draid_readable() argument
1319 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_readable()
1320 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_readable()
1321 if (vd == NULL) in vdev_draid_readable()
1325 if (vd->vdev_ops == &vdev_spare_ops || in vdev_draid_readable()
1326 vd->vdev_ops == &vdev_replacing_ops) { in vdev_draid_readable()
1328 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_readable()
1329 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_readable()
1341 return (vdev_readable(vd)); in vdev_draid_readable()
1348 vdev_draid_find_spare(vdev_t *vd) in vdev_draid_find_spare() argument
1350 if (vd->vdev_ops == &vdev_draid_spare_ops) in vdev_draid_find_spare()
1351 return (vd); in vdev_draid_find_spare()
1353 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_find_spare()
1354 vdev_t *svd = vdev_draid_find_spare(vd->vdev_child[c]); in vdev_draid_find_spare()
1368 vdev_draid_faulted(vdev_t *vd, uint64_t physical_offset) in vdev_draid_faulted() argument
1370 if (vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_draid_faulted()
1371 vd = vdev_draid_spare_get_child(vd, physical_offset); in vdev_draid_faulted()
1372 if (vd == NULL) in vdev_draid_faulted()
1379 vd = vd->vdev_parent; in vdev_draid_faulted()
1382 return (vd->vdev_ops == &vdev_replacing_ops || in vdev_draid_faulted()
1383 vd->vdev_ops == &vdev_spare_ops); in vdev_draid_faulted()
1391 vdev_draid_group_degraded(vdev_t *vd, uint64_t offset) in vdev_draid_group_degraded() argument
1393 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_degraded()
1395 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_group_degraded()
1396 ASSERT3U(vdev_draid_get_astart(vd, offset), ==, offset); in vdev_draid_group_degraded()
1399 uint64_t physical_offset = vdev_draid_logical_to_physical(vd, in vdev_draid_group_degraded()
1409 vdev_t *cvd = vd->vdev_child[cid]; in vdev_draid_group_degraded()
1430 vdev_draid_group_missing(vdev_t *vd, uint64_t offset, uint64_t txg, in vdev_draid_group_missing() argument
1433 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_missing()
1435 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_group_missing()
1436 ASSERT3U(vdev_draid_get_astart(vd, offset), ==, offset); in vdev_draid_group_missing()
1439 uint64_t physical_offset = vdev_draid_logical_to_physical(vd, in vdev_draid_group_missing()
1449 vdev_t *cvd = vd->vdev_child[cid]; in vdev_draid_group_missing()
1472 vdev_draid_calculate_asize(vdev_t *vd, uint64_t *asizep, uint64_t *max_asizep, in vdev_draid_calculate_asize() argument
1478 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_calculate_asize()
1480 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_calculate_asize()
1481 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_calculate_asize()
1490 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_calculate_asize()
1491 vdev_t *cvd = vd->vdev_child[c]; in vdev_draid_calculate_asize()
1509 vdev_draid_open_spares(vdev_t *vd) in vdev_draid_open_spares() argument
1511 return (vd->vdev_ops == &vdev_draid_spare_ops || in vdev_draid_open_spares()
1512 vd->vdev_ops == &vdev_replacing_ops || in vdev_draid_open_spares()
1513 vd->vdev_ops == &vdev_spare_ops); in vdev_draid_open_spares()
1520 vdev_draid_open_children(vdev_t *vd) in vdev_draid_open_children() argument
1522 return (!vdev_draid_open_spares(vd)); in vdev_draid_open_children()
1529 vdev_draid_open(vdev_t *vd, uint64_t *asize, uint64_t *max_asize, in vdev_draid_open() argument
1532 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_open()
1537 vd->vdev_children < nparity + 1) { in vdev_draid_open()
1538 vd->vdev_stat.vs_aux = VDEV_AUX_BAD_LABEL; in vdev_draid_open()
1547 vdev_open_children_subset(vd, vdev_draid_open_children); in vdev_draid_open()
1548 vdev_open_children_subset(vd, vdev_draid_open_spares); in vdev_draid_open()
1551 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_open()
1552 if (vd->vdev_child[c]->vdev_open_error != 0) { in vdev_draid_open()
1554 vd->vdev_stat.vs_aux = VDEV_AUX_NO_REPLICAS; in vdev_draid_open()
1568 vdev_draid_calculate_asize(vd, &child_asize, &child_max_asize, in vdev_draid_open()
1597 vdev_draid_close(vdev_t *vd) in vdev_draid_close() argument
1599 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_close()
1600 if (vd->vdev_child[c] != NULL) in vdev_draid_close()
1601 vdev_close(vd->vdev_child[c]); in vdev_draid_close()
1613 vdev_draid_rebuild_asize(vdev_t *vd, uint64_t start, uint64_t asize, in vdev_draid_rebuild_asize() argument
1616 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_rebuild_asize()
1618 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_rebuild_asize()
1620 uint64_t ashift = vd->vdev_ashift; in vdev_draid_rebuild_asize()
1625 ASSERT3U(vdev_draid_get_astart(vd, start), ==, start); in vdev_draid_rebuild_asize()
1630 uint64_t chunk_size = MIN(asize, vdev_psize_to_asize(vd, psize)); in vdev_draid_rebuild_asize()
1633 uint64_t group = vdev_draid_offset_to_group(vd, start); in vdev_draid_rebuild_asize()
1634 uint64_t left = vdev_draid_group_to_offset(vd, group + 1) - start; in vdev_draid_rebuild_asize()
1638 ASSERT3U(vdev_draid_offset_to_group(vd, start), ==, in vdev_draid_rebuild_asize()
1639 vdev_draid_offset_to_group(vd, start + chunk_size - 1)); in vdev_draid_rebuild_asize()
1652 vdev_draid_metaslab_init(vdev_t *vd, uint64_t *ms_start, uint64_t *ms_size) in vdev_draid_metaslab_init() argument
1654 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_metaslab_init()
1656 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_metaslab_init()
1658 uint64_t sz = vdc->vdc_groupwidth << vd->vdev_ashift; in vdev_draid_metaslab_init()
1659 uint64_t astart = vdev_draid_get_astart(vd, *ms_start); in vdev_draid_metaslab_init()
1675 vdev_draid_spare_create(nvlist_t *nvroot, vdev_t *vd, uint64_t *ndraidp, in vdev_draid_spare_create() argument
1682 for (uint64_t i = 0; i < vd->vdev_children; i++) { in vdev_draid_spare_create()
1683 vdev_t *cvd = vd->vdev_child[i]; in vdev_draid_spare_create()
1712 for (uint64_t vdev_id = 0; vdev_id < vd->vdev_children; vdev_id++) { in vdev_draid_spare_create()
1713 vdev_t *cvd = vd->vdev_child[vdev_id]; in vdev_draid_spare_create()
1770 vdev_draid_need_resilver(vdev_t *vd, const dva_t *dva, size_t psize, in vdev_draid_need_resilver() argument
1774 uint64_t asize = vdev_draid_psize_to_asize(vd, psize, 0); in vdev_draid_need_resilver()
1782 ASSERT3U(vdev_draid_offset_to_group(vd, offset), ==, in vdev_draid_need_resilver()
1783 vdev_draid_offset_to_group(vd, offset + asize - 1)); in vdev_draid_need_resilver()
1785 return (vdev_draid_group_degraded(vd, offset)); in vdev_draid_need_resilver()
1791 if (!vdev_dtl_contains(vd, DTL_PARTIAL, phys_birth, 1)) in vdev_draid_need_resilver()
1794 if (vdev_draid_group_missing(vd, offset, phys_birth, 1)) in vdev_draid_need_resilver()
1798 if (vdev_draid_offset_to_group(vd, offset) != in vdev_draid_need_resilver()
1799 vdev_draid_offset_to_group(vd, offset + asize - 1)) { in vdev_draid_need_resilver()
1800 if (vdev_draid_group_missing(vd, in vdev_draid_need_resilver()
1810 vdev_draid_rebuilding(vdev_t *vd) in vdev_draid_rebuilding() argument
1812 if (vd->vdev_ops->vdev_op_leaf && vd->vdev_rebuild_txg) in vdev_draid_rebuilding()
1815 for (int i = 0; i < vd->vdev_children; i++) { in vdev_draid_rebuilding()
1816 if (vdev_draid_rebuilding(vd->vdev_child[i])) { in vdev_draid_rebuilding()
1825 vdev_draid_io_verify(vdev_t *vd, raidz_row_t *rr, int col) in vdev_draid_io_verify() argument
1831 vdev_draid_psize_to_asize(vd, rr->rr_size, 0); in vdev_draid_io_verify()
1834 vdev_t *cvd = vd->vdev_child[rc->rc_devidx]; in vdev_draid_io_verify()
1854 vdev_t *vd = zio->io_vd; in vdev_draid_io_start_write() local
1869 vdev_draid_io_verify(vd, rr, c); in vdev_draid_io_start_write()
1872 vd->vdev_child[rc->rc_devidx], rc->rc_offset, in vdev_draid_io_start_write()
1889 vdev_t *vd = zio->io_vd; in vdev_draid_io_start_read() local
1902 vdev_t *cvd = vd->vdev_child[rc->rc_devidx]; in vdev_draid_io_start_read()
2014 vdev_t *cvd = vd->vdev_child[rc->rc_devidx]; in vdev_draid_io_start_read()
2035 vdev_t *vd __maybe_unused = zio->io_vd; in vdev_draid_io_start()
2037 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_io_start()
2038 ASSERT3U(zio->io_offset, ==, vdev_draid_get_astart(vd, zio->io_offset)); in vdev_draid_io_start()
2070 vdev_draid_state_change(vdev_t *vd, int faulted, int degraded) in vdev_draid_state_change() argument
2072 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_state_change()
2073 ASSERT(vd->vdev_ops == &vdev_draid_ops); in vdev_draid_state_change()
2076 vdev_set_state(vd, B_FALSE, VDEV_STATE_CANT_OPEN, in vdev_draid_state_change()
2079 vdev_set_state(vd, B_FALSE, VDEV_STATE_DEGRADED, VDEV_AUX_NONE); in vdev_draid_state_change()
2081 vdev_set_state(vd, B_FALSE, VDEV_STATE_HEALTHY, VDEV_AUX_NONE); in vdev_draid_state_change()
2183 vdev_draid_config_generate(vdev_t *vd, nvlist_t *nv) in vdev_draid_config_generate() argument
2185 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_ops); in vdev_draid_config_generate()
2186 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_config_generate()
2285 vdev_draid_fini(vdev_t *vd) in vdev_draid_fini() argument
2287 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_fini()
2295 vdev_draid_nparity(vdev_t *vd) in vdev_draid_nparity() argument
2297 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_nparity()
2303 vdev_draid_ndisks(vdev_t *vd) in vdev_draid_ndisks() argument
2305 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_ndisks()
2360 vdev_draid_spare_get_parent(vdev_t *vd) in vdev_draid_spare_get_parent() argument
2362 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_get_parent()
2364 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_spare_ops); in vdev_draid_spare_get_parent()
2369 return (vdev_lookup_by_guid(vd->vdev_spa->spa_root_vdev, in vdev_draid_spare_get_parent()
2378 vdev_draid_spare_is_active(vdev_t *vd) in vdev_draid_spare_is_active() argument
2380 vdev_t *pvd = vd->vdev_parent; in vdev_draid_spare_is_active()
2398 vdev_draid_spare_get_child(vdev_t *vd, uint64_t physical_offset) in vdev_draid_spare_get_child() argument
2400 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_get_child()
2402 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_spare_ops); in vdev_draid_spare_get_child()
2431 vdev_draid_spare_close(vdev_t *vd) in vdev_draid_spare_close() argument
2433 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_close()
2442 vdev_draid_spare_open(vdev_t *vd, uint64_t *psize, uint64_t *max_psize, in vdev_draid_spare_open() argument
2445 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_open()
2446 vdev_t *rvd = vd->vdev_spa->spa_root_vdev; in vdev_draid_spare_open()
2458 if (vd->vdev_parent == NULL) { in vdev_draid_spare_open()
2521 vdev_draid_read_config_spare(vdev_t *vd) in vdev_draid_read_config_spare() argument
2523 spa_t *spa = vd->vdev_spa; in vdev_draid_read_config_spare()
2525 uint64_t guid = vd->vdev_guid; in vdev_draid_read_config_spare()
2529 fnvlist_add_uint64(nv, ZPOOL_CONFIG_CREATE_TXG, vd->vdev_crtxg); in vdev_draid_read_config_spare()
2534 fnvlist_add_uint64(nv, ZPOOL_CONFIG_TOP_GUID, vd->vdev_top->vdev_guid); in vdev_draid_read_config_spare()
2536 vdev_draid_spare_is_active(vd) ? in vdev_draid_read_config_spare()
2542 strcmp(sav->sav_vdevs[i]->vdev_path, vd->vdev_path) == 0) { in vdev_draid_read_config_spare()
2560 vdev_t *vd = zio->io_vd; in vdev_draid_spare_flush() local
2563 for (int c = 0; c < vd->vdev_children; c++) { in vdev_draid_spare_flush()
2565 vd->vdev_child[c], zio->io_offset, zio->io_abd, in vdev_draid_spare_flush()
2583 vdev_t *cvd = NULL, *vd = zio->io_vd; in vdev_draid_spare_io_start() local
2584 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_io_start()
2603 if (VDEV_OFFSET_IS_LABEL(vd, zio->io_offset)) { in vdev_draid_spare_io_start()
2619 cvd = vdev_draid_spare_get_child(vd, offset); in vdev_draid_spare_io_start()
2633 if (VDEV_OFFSET_IS_LABEL(vd, zio->io_offset)) { in vdev_draid_spare_io_start()
2647 cvd = vdev_draid_spare_get_child(vd, offset); in vdev_draid_spare_io_start()
2662 ASSERT0(VDEV_OFFSET_IS_LABEL(vd, zio->io_offset)); in vdev_draid_spare_io_start()
2664 cvd = vdev_draid_spare_get_child(vd, offset); in vdev_draid_spare_io_start()
2785 vdev_draid_spare_fini(vdev_t *vd) in vdev_draid_spare_fini() argument
2787 kmem_free(vd->vdev_tsd, sizeof (vdev_draid_spare_t)); in vdev_draid_spare_fini()
2791 vdev_draid_spare_config_generate(vdev_t *vd, nvlist_t *nv) in vdev_draid_spare_config_generate() argument
2793 vdev_draid_spare_t *vds = vd->vdev_tsd; in vdev_draid_spare_config_generate()
2795 ASSERT3P(vd->vdev_ops, ==, &vdev_draid_spare_ops); in vdev_draid_spare_config_generate()