Lines Matching refs:vdc

558 vdev_draid_get_perm(vdev_draid_config_t *vdc, uint64_t pindex,  in vdev_draid_get_perm()  argument
561 uint64_t ncols = vdc->vdc_children; in vdev_draid_get_perm()
562 uint64_t poff = pindex % (vdc->vdc_nperms * ncols); in vdev_draid_get_perm()
564 *base = vdc->vdc_perms + (poff / ncols) * ncols; in vdev_draid_get_perm()
569 vdev_draid_permute_id(vdev_draid_config_t *vdc, in vdev_draid_permute_id() argument
572 return ((base[index] + iter) % vdc->vdc_children); in vdev_draid_permute_id()
582 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_asize() local
587 uint64_t rows = ((psize - 1) / (vdc->vdc_ndata << ashift)) + 1; in vdev_draid_asize()
588 uint64_t asize = (rows * vdc->vdc_groupwidth) << ashift; in vdev_draid_asize()
591 ASSERT3U(asize % (vdc->vdc_groupwidth), ==, 0); in vdev_draid_asize()
602 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_asize_to_psize() local
604 ASSERT0(asize % vdc->vdc_groupwidth); in vdev_draid_asize_to_psize()
606 return ((asize / vdc->vdc_groupwidth) * vdc->vdc_ndata); in vdev_draid_asize_to_psize()
615 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_offset_to_group() local
619 return (offset / vdc->vdc_groupsz); in vdev_draid_offset_to_group()
628 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_to_offset() local
632 return (group * vdc->vdc_groupsz); in vdev_draid_group_to_offset()
900 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_logical_to_physical() local
922 uint64_t groupwidth = vdc->vdc_groupwidth; in vdev_draid_logical_to_physical()
923 uint64_t ngroups = vdc->vdc_ngroups; in vdev_draid_logical_to_physical()
924 uint64_t ndisks = vdc->vdc_ndisks; in vdev_draid_logical_to_physical()
930 uint64_t group = logical_offset / vdc->vdc_groupsz; in vdev_draid_logical_to_physical()
960 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_map_alloc_row() local
983 (io_asize >> ashift) % vdc->vdc_groupwidth == 0); in vdev_draid_map_alloc_row()
997 uint64_t ndisks = vdc->vdc_ndisks; in vdev_draid_map_alloc_row()
998 uint64_t groupwidth = vdc->vdc_groupwidth; in vdev_draid_map_alloc_row()
1011 uint64_t q = psize / vdc->vdc_ndata; in vdev_draid_map_alloc_row()
1017 uint64_t r = psize - q * vdc->vdc_ndata; in vdev_draid_map_alloc_row()
1020 uint64_t bc = (r == 0 ? 0 : r + vdc->vdc_nparity); in vdev_draid_map_alloc_row()
1024 uint64_t tot = psize + (vdc->vdc_nparity * (q + (r == 0 ? 0 : 1))); in vdev_draid_map_alloc_row()
1026 ASSERT3U(vdc->vdc_nparity, >, 0); in vdev_draid_map_alloc_row()
1035 rr->rr_firstdatacol = vdc->vdc_nparity; in vdev_draid_map_alloc_row()
1045 vdev_draid_get_perm(vdc, perm, &base, &iter); in vdev_draid_map_alloc_row()
1054 rc->rc_devidx = vdev_draid_permute_id(vdc, base, iter, c); in vdev_draid_map_alloc_row()
1165 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_get_astart() local
1169 return (roundup(start, vdc->vdc_groupwidth << vd->vdev_ashift)); in vdev_draid_get_astart()
1180 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_min_asize() local
1185 (vd->vdev_min_asize + vdc->vdc_ndisks - 1) / (vdc->vdc_ndisks)); in vdev_draid_min_asize()
1195 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_min_alloc() local
1199 return (vdc->vdc_ndata << vd->vdev_ashift); in vdev_draid_min_alloc()
1405 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_degraded() local
1416 vdev_draid_get_perm(vdc, perm, &base, &iter); in vdev_draid_group_degraded()
1418 for (uint64_t i = 0; i < vdc->vdc_groupwidth; i++) { in vdev_draid_group_degraded()
1419 uint64_t c = (groupstart + i) % vdc->vdc_ndisks; in vdev_draid_group_degraded()
1420 uint64_t cid = vdev_draid_permute_id(vdc, base, iter, c); in vdev_draid_group_degraded()
1445 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_group_missing() local
1456 vdev_draid_get_perm(vdc, perm, &base, &iter); in vdev_draid_group_missing()
1458 for (uint64_t i = 0; i < vdc->vdc_groupwidth; i++) { in vdev_draid_group_missing()
1459 uint64_t c = (groupstart + i) % vdc->vdc_ndisks; in vdev_draid_group_missing()
1460 uint64_t cid = vdev_draid_permute_id(vdc, base, iter, c); in vdev_draid_group_missing()
1544 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_open() local
1545 uint64_t nparity = vdc->vdc_nparity; in vdev_draid_open()
1597 *asize = (((child_asize * vdc->vdc_ndisks) / vdc->vdc_groupsz) * in vdev_draid_open()
1598 vdc->vdc_groupsz); in vdev_draid_open()
1599 *max_asize = (((child_max_asize * vdc->vdc_ndisks) / vdc->vdc_groupsz) * in vdev_draid_open()
1600 vdc->vdc_groupsz); in vdev_draid_open()
1628 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_rebuild_asize() local
1633 uint64_t ndata = vdc->vdc_ndata; in vdev_draid_rebuild_asize()
1638 ASSERT3U(asize % (vdc->vdc_groupwidth << ashift), ==, 0); in vdev_draid_rebuild_asize()
1649 ASSERT3U(chunk_size % (vdc->vdc_groupwidth << ashift), ==, 0); in vdev_draid_rebuild_asize()
1666 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_metaslab_init() local
1670 uint64_t sz = vdc->vdc_groupwidth << vd->vdev_ashift; in vdev_draid_metaslab_init()
1698 vdev_draid_config_t *vdc = cvd->vdev_tsd; in vdev_draid_spare_create() local
1699 draid_nspares += vdc->vdc_nspares; in vdev_draid_spare_create()
1731 vdev_draid_config_t *vdc = cvd->vdev_tsd; in vdev_draid_spare_create() local
1732 uint64_t nspares = vdc->vdc_nspares; in vdev_draid_spare_create()
1733 uint64_t nparity = vdc->vdc_nparity; in vdev_draid_spare_create()
2084 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_state_change() local
2087 if (faulted > vdc->vdc_nparity) in vdev_draid_state_change()
2103 vdev_draid_config_t *vdc = raidvd->vdev_tsd; in vdev_draid_xlate() local
2148 vdev_draid_get_perm(vdc, perm, &base, &iter); in vdev_draid_xlate()
2156 for (uint64_t i = 0; i < vdc->vdc_groupwidth; i++) { in vdev_draid_xlate()
2157 uint64_t c = (groupstart + i) % vdc->vdc_ndisks; in vdev_draid_xlate()
2165 id = vdev_draid_permute_id(vdc, base, iter, c); in vdev_draid_xlate()
2171 vdc->vdc_groupwidth) + 1) << ashift); in vdev_draid_xlate()
2198 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_config_generate() local
2200 fnvlist_add_uint64(nv, ZPOOL_CONFIG_NPARITY, vdc->vdc_nparity); in vdev_draid_config_generate()
2201 fnvlist_add_uint64(nv, ZPOOL_CONFIG_DRAID_NDATA, vdc->vdc_ndata); in vdev_draid_config_generate()
2202 fnvlist_add_uint64(nv, ZPOOL_CONFIG_DRAID_NSPARES, vdc->vdc_nspares); in vdev_draid_config_generate()
2203 fnvlist_add_uint64(nv, ZPOOL_CONFIG_DRAID_NGROUPS, vdc->vdc_ngroups); in vdev_draid_config_generate()
2253 vdev_draid_config_t *vdc; in vdev_draid_init() local
2260 vdc = kmem_zalloc(sizeof (*vdc), KM_SLEEP); in vdev_draid_init()
2261 vdc->vdc_ndata = ndata; in vdev_draid_init()
2262 vdc->vdc_nparity = nparity; in vdev_draid_init()
2263 vdc->vdc_nspares = nspares; in vdev_draid_init()
2264 vdc->vdc_children = children; in vdev_draid_init()
2265 vdc->vdc_ngroups = ngroups; in vdev_draid_init()
2266 vdc->vdc_nperms = map->dm_nperms; in vdev_draid_init()
2268 error = vdev_draid_generate_perms(map, &vdc->vdc_perms); in vdev_draid_init()
2270 kmem_free(vdc, sizeof (*vdc)); in vdev_draid_init()
2277 vdc->vdc_groupwidth = vdc->vdc_ndata + vdc->vdc_nparity; in vdev_draid_init()
2278 vdc->vdc_ndisks = vdc->vdc_children - vdc->vdc_nspares; in vdev_draid_init()
2279 vdc->vdc_groupsz = vdc->vdc_groupwidth * VDEV_DRAID_ROWHEIGHT; in vdev_draid_init()
2280 vdc->vdc_devslicesz = (vdc->vdc_groupsz * vdc->vdc_ngroups) / in vdev_draid_init()
2281 vdc->vdc_ndisks; in vdev_draid_init()
2283 ASSERT3U(vdc->vdc_groupwidth, >=, 2); in vdev_draid_init()
2284 ASSERT3U(vdc->vdc_groupwidth, <=, vdc->vdc_ndisks); in vdev_draid_init()
2285 ASSERT3U(vdc->vdc_groupsz, >=, 2 * VDEV_DRAID_ROWHEIGHT); in vdev_draid_init()
2286 ASSERT3U(vdc->vdc_devslicesz, >=, VDEV_DRAID_ROWHEIGHT); in vdev_draid_init()
2287 ASSERT3U(vdc->vdc_devslicesz % VDEV_DRAID_ROWHEIGHT, ==, 0); in vdev_draid_init()
2288 ASSERT3U((vdc->vdc_groupwidth * vdc->vdc_ngroups) % in vdev_draid_init()
2289 vdc->vdc_ndisks, ==, 0); in vdev_draid_init()
2291 *tsd = vdc; in vdev_draid_init()
2299 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_fini() local
2301 vmem_free(vdc->vdc_perms, sizeof (uint8_t) * in vdev_draid_fini()
2302 vdc->vdc_children * vdc->vdc_nperms); in vdev_draid_fini()
2303 kmem_free(vdc, sizeof (*vdc)); in vdev_draid_fini()
2309 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_nparity() local
2311 return (vdc->vdc_nparity); in vdev_draid_nparity()
2317 vdev_draid_config_t *vdc = vd->vdev_tsd; in vdev_draid_ndisks() local
2319 return (vdc->vdc_ndisks); in vdev_draid_ndisks()
2420 vdev_draid_config_t *vdc = tvd->vdev_tsd; in vdev_draid_spare_get_child() local
2423 ASSERT3U(vds->vds_spare_id, <, vdc->vdc_nspares); in vdev_draid_spare_get_child()
2427 uint64_t perm = physical_offset / vdc->vdc_devslicesz; in vdev_draid_spare_get_child()
2429 vdev_draid_get_perm(vdc, perm, &base, &iter); in vdev_draid_spare_get_child()
2431 uint64_t cid = vdev_draid_permute_id(vdc, base, iter, in vdev_draid_spare_get_child()
2478 vdev_draid_config_t *vdc = tvd->vdev_tsd; in vdev_draid_spare_open() local
2479 if (tvd->vdev_ops != &vdev_draid_ops || vdc == NULL) in vdev_draid_spare_open()
2482 if (vds->vds_spare_id >= vdc->vdc_nspares) in vdev_draid_spare_open()