Lines Matching defs:rm
399 vdev_raidz_map_free(raidz_map_t *rm)
401 for (int i = 0; i < rm->rm_nrows; i++)
402 vdev_raidz_row_free(rm->rm_row[i]);
404 if (rm->rm_nphys_cols) {
405 for (int i = 0; i < rm->rm_nphys_cols; i++) {
406 if (rm->rm_phys_col[i].rc_abd != NULL)
407 abd_free(rm->rm_phys_col[i].rc_abd);
410 kmem_free(rm->rm_phys_col, sizeof (raidz_col_t) *
411 rm->rm_nphys_cols);
414 ASSERT3P(rm->rm_lr, ==, NULL);
415 kmem_free(rm, offsetof(raidz_map_t, rm_row[rm->rm_nrows]));
421 raidz_map_t *rm = zio->io_vsd;
423 vdev_raidz_map_free(rm);
468 vdev_raidz_map_alloc_write(zio_t *zio, raidz_map_t *rm, uint64_t ashift)
473 raidz_row_t *rr = rm->rm_row[0];
476 ASSERT3U(rm->rm_nrows, ==, 1);
482 if (rm->rm_skipstart < rr->rr_firstdatacol) {
483 ASSERT0(rm->rm_skipstart);
484 nwrapped = rm->rm_nskip;
485 } else if (rr->rr_scols < (rm->rm_skipstart + rm->rm_nskip)) {
487 (rm->rm_skipstart + rm->rm_nskip) % rr->rr_scols;
538 if (c >= rm->rm_skipstart && skipped < rm->rm_nskip) {
551 ASSERT3S(skipped, ==, rm->rm_nskip);
555 vdev_raidz_map_alloc_read(zio_t *zio, raidz_map_t *rm)
558 raidz_row_t *rr = rm->rm_row[0];
560 ASSERT3U(rm->rm_nrows, ==, 1);
597 raidz_map_t *rm =
599 rm->rm_nrows = 1;
637 rm->rm_row[0] = rr;
670 rm->rm_nskip = roundup(tot, nparity + 1) - tot;
671 rm->rm_skipstart = bc;
703 if (rm->rm_skipstart == 0)
704 rm->rm_skipstart = 1;
708 vdev_raidz_map_alloc_write(zio, rm, ashift);
710 vdev_raidz_map_alloc_read(zio, rm);
713 rm->rm_ops = vdev_raidz_math_get_ops();
715 return (rm);
772 raidz_map_t *rm =
775 rm->rm_nrows = rows;
776 rm->rm_nskip = roundup(tot, nparity + 1) - tot;
777 rm->rm_skipstart = bc;
783 rm->rm_row[row] = rr;
953 rm->rm_nphys_cols = physical_cols;
954 rm->rm_phys_col =
955 kmem_zalloc(sizeof (raidz_col_t) * rm->rm_nphys_cols,
963 i < rm->rm_nrows && rm->rm_phys_col != NULL; i++) {
964 raidz_row_t *rr = rm->rm_row[i];
968 &rm->rm_phys_col[rc->rc_devidx];
986 kmem_free(rm->rm_phys_col,
988 rm->rm_nphys_cols);
989 rm->rm_phys_col = NULL;
990 rm->rm_nphys_cols = 0;
997 if (rm->rm_phys_col != NULL) {
1001 for (int i = 0; i < rm->rm_nphys_cols; i++) {
1002 raidz_col_t *prc = &rm->rm_phys_col[i];
1010 abd_alloc_linear(rm->rm_phys_col[i].rc_size,
1017 for (int i = 0; i < rm->rm_nrows; i++) {
1018 raidz_row_t *rr = rm->rm_row[i];
1022 &rm->rm_phys_col[rc->rc_devidx];
1034 for (int i = 0; i < rm->rm_nrows; i++) {
1035 raidz_row_t *rr = rm->rm_row[i];
1045 rm->rm_ops = vdev_raidz_math_get_ops();
1047 return (rm);
1224 vdev_raidz_generate_parity_row(raidz_map_t *rm, raidz_row_t *rr)
1237 if (vdev_raidz_math_generate(rm, rr) != RAIDZ_ORIGINAL_IMPL)
1256 vdev_raidz_generate_parity(raidz_map_t *rm)
1258 for (int i = 0; i < rm->rm_nrows; i++) {
1259 raidz_row_t *rr = rm->rm_row[i];
1260 vdev_raidz_generate_parity_row(rm, rr);
1387 zfs_dbgmsg("reconstruct_p(rm=%px x=%u)", rr, x);
1422 zfs_dbgmsg("reconstruct_q(rm=%px x=%u)", rr, x);
1471 zfs_dbgmsg("reconstruct_pq(rm=%px x=%u y=%u)", rr, x, y);
1922 zfs_dbgmsg("reconstruct_general(rm=%px ntgts=%u)", rr, ntgts);
2047 vdev_raidz_reconstruct_row(raidz_map_t *rm, raidz_row_t *rr,
2057 zfs_dbgmsg("reconstruct(rm=%px nt=%u cols=%u md=%u mp=%u)",
2067 zfs_dbgmsg("reconstruct(rm=%px col=%u devid=%u "
2096 ret = vdev_raidz_math_reconstruct(rm, rr, parity_valid, dt, nbaddata);
2304 vdev_raidz_io_verify(zio_t *zio, raidz_map_t *rm, raidz_row_t *rr, int col)
2306 (void) rm;
2348 raidz_map_t *rm = zio->io_vsd;
2350 vdev_raidz_generate_parity_row(rm, rr);
2357 vdev_raidz_io_verify(zio, rm, rr, c);
2396 raidz_map_t *rm = zio->io_vsd;
2397 ASSERT3U(rm->rm_nrows, ==, 1);
2398 raidz_row_t *rr = rm->rm_row[0];
2460 vdev_raidz_io_start_read_phys_cols(zio_t *zio, raidz_map_t *rm)
2464 for (int i = 0; i < rm->rm_nphys_cols; i++) {
2465 raidz_col_t *prc = &rm->rm_phys_col[i];
2490 vdev_raidz_io_start_read(zio_t *zio, raidz_map_t *rm)
2497 boolean_t forceparity = rm->rm_nrows > 1;
2499 if (rm->rm_phys_col) {
2500 vdev_raidz_io_start_read_phys_cols(zio, rm);
2502 for (int i = 0; i < rm->rm_nrows; i++) {
2503 raidz_row_t *rr = rm->rm_row[i];
2532 raidz_map_t *rm;
2585 rm = vdev_raidz_map_alloc_expanded(zio,
2589 rm->rm_lr = lr;
2591 rm = vdev_raidz_map_alloc(zio,
2594 rm->rm_original_width = vdrz->vd_original_width;
2596 zio->io_vsd = rm;
2599 for (int i = 0; i < rm->rm_nrows; i++) {
2600 vdev_raidz_io_start_write(zio, rm->rm_row[i]);
2608 vdev_raidz_io_start_read(zio, rm);
2625 raidz_map_t *rm = zio->io_vsd;
2628 zbc.zbc_injected = rm->rm_ecksuminjected;
2647 raidz_map_t *rm = zio->io_vsd;
2665 rm->rm_ecksuminjected = 1;
2681 raidz_map_t *rm = zio->io_vsd;
2713 vdev_raidz_generate_parity_row(rm, rr);
2865 raidz_restore_orig_data(raidz_map_t *rm)
2867 for (int i = 0; i < rm->rm_nrows; i++) {
2868 raidz_row_t *rr = rm->rm_row[i];
2925 raidz_map_t *rm = zio->io_vsd;
2927 int original_width = (rm->rm_original_width != 0) ?
2928 rm->rm_original_width : physical_width;
2937 for (int r = 0; r < rm->rm_nrows; r++) {
2938 raidz_row_t *rr = rm->rm_row[r];
3006 raidz_restore_orig_data(rm);
3010 vdev_raidz_reconstruct_row(rm, rr, my_tgts, t);
3019 for (int i = 0; i < rm->rm_nrows; i++) {
3020 raidz_row_t *rr = rm->rm_row[i];
3059 raidz_restore_orig_data(rm);
3120 raidz_map_t *rm = zio->io_vsd;
3122 int original_width = (rm->rm_original_width != 0) ?
3123 rm->rm_original_width : physical_width;
3125 for (int i = 0; i < rm->rm_nrows; i++) {
3126 raidz_row_t *rr = rm->rm_row[i];
3222 vdev_raidz_reconstruct(raidz_map_t *rm, const int *t, int nt)
3224 for (uint64_t row = 0; row < rm->rm_nrows; row++) {
3225 raidz_row_t *rr = rm->rm_row[row];
3226 vdev_raidz_reconstruct_row(rm, rr, t, nt);
3283 vdev_raidz_io_done_reconstruct_known_missing(zio_t *zio, raidz_map_t *rm,
3354 vdev_raidz_reconstruct_row(rm, rr, tgts, n);
3402 raidz_map_t *rm = zio->io_vsd;
3404 for (int i = 0; i < rm->rm_nrows; i++) {
3405 raidz_row_t *rr = rm->rm_row[i];
3416 zbc.zbc_injected = rm->rm_ecksuminjected;
3430 raidz_map_t *rm = zio->io_vsd;
3434 for (int i = 0; i < rm->rm_nrows; i++) {
3435 vdev_raidz_io_done_write_impl(zio, rm->rm_row[i]);
3438 if (rm->rm_phys_col) {
3443 for (int i = 0; i < rm->rm_nrows; i++) {
3444 raidz_row_t *rr = rm->rm_row[i];
3452 &rm->rm_phys_col[rc->rc_devidx];
3474 for (int i = 0; i < rm->rm_nrows; i++) {
3475 raidz_row_t *rr = rm->rm_row[i];
3477 rm, rr);
3484 for (int i = 0; i < rm->rm_nrows; i++) {
3485 raidz_row_t *rr = rm->rm_row[i];
3508 for (int i = 0; i < rm->rm_nrows; i++) {
3510 rm->rm_row[i]);
3579 if (rm->rm_lr != NULL) {
3580 zfs_rangelock_exit(rm->rm_lr);
3581 rm->rm_lr = NULL;