Remove unused rr_code

The `rr_code` field in `raidz_row_t` is unused.

This commit removes the field, as well as the code that's used to set
it.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
Closes #11736
This commit is contained in:
Matthew Ahrens 2021-03-17 21:57:09 -07:00 committed by GitHub
parent ec3e4c6784
commit 46df6e98aa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 47 deletions

View File

@ -127,7 +127,6 @@ typedef struct raidz_row {
abd_t *rr_abd_copy; /* rm_asize-buffer of copied data */ abd_t *rr_abd_copy; /* rm_asize-buffer of copied data */
abd_t *rr_abd_empty; /* dRAID empty sector buffer */ abd_t *rr_abd_empty; /* dRAID empty sector buffer */
int rr_nempty; /* empty sectors included in parity */ int rr_nempty; /* empty sectors included in parity */
int rr_code; /* reconstruction code (unused) */
#ifdef ZFS_DEBUG #ifdef ZFS_DEBUG
uint64_t rr_offset; /* Logical offset for *_io_verify() */ uint64_t rr_offset; /* Logical offset for *_io_verify() */
uint64_t rr_size; /* Physical size for *_io_verify() */ uint64_t rr_size; /* Physical size for *_io_verify() */

View File

@ -831,7 +831,7 @@ vdev_raidz_reconst_pq_tail_func(void *xbuf, size_t size, void *private)
return (0); return (0);
} }
static int static void
vdev_raidz_reconstruct_p(raidz_row_t *rr, int *tgts, int ntgts) vdev_raidz_reconstruct_p(raidz_row_t *rr, int *tgts, int ntgts)
{ {
int x = tgts[0]; int x = tgts[0];
@ -860,11 +860,9 @@ vdev_raidz_reconstruct_p(raidz_row_t *rr, int *tgts, int ntgts)
(void) abd_iterate_func2(dst, src, 0, 0, size, (void) abd_iterate_func2(dst, src, 0, 0, size,
vdev_raidz_reconst_p_func, NULL); vdev_raidz_reconst_p_func, NULL);
} }
return (1 << VDEV_RAIDZ_P);
} }
static int static void
vdev_raidz_reconstruct_q(raidz_row_t *rr, int *tgts, int ntgts) vdev_raidz_reconstruct_q(raidz_row_t *rr, int *tgts, int ntgts)
{ {
int x = tgts[0]; int x = tgts[0];
@ -905,11 +903,9 @@ vdev_raidz_reconstruct_q(raidz_row_t *rr, int *tgts, int ntgts)
struct reconst_q_struct rq = { abd_to_buf(src), exp }; struct reconst_q_struct rq = { abd_to_buf(src), exp };
(void) abd_iterate_func(dst, 0, rr->rr_col[x].rc_size, (void) abd_iterate_func(dst, 0, rr->rr_col[x].rc_size,
vdev_raidz_reconst_q_post_func, &rq); vdev_raidz_reconst_q_post_func, &rq);
return (1 << VDEV_RAIDZ_Q);
} }
static int static void
vdev_raidz_reconstruct_pq(raidz_row_t *rr, int *tgts, int ntgts) vdev_raidz_reconstruct_pq(raidz_row_t *rr, int *tgts, int ntgts)
{ {
uint8_t *p, *q, *pxy, *qxy, tmp, a, b, aexp, bexp; uint8_t *p, *q, *pxy, *qxy, tmp, a, b, aexp, bexp;
@ -995,8 +991,6 @@ vdev_raidz_reconstruct_pq(raidz_row_t *rr, int *tgts, int ntgts)
*/ */
rr->rr_col[VDEV_RAIDZ_P].rc_abd = pdata; rr->rr_col[VDEV_RAIDZ_P].rc_abd = pdata;
rr->rr_col[VDEV_RAIDZ_Q].rc_abd = qdata; rr->rr_col[VDEV_RAIDZ_Q].rc_abd = qdata;
return ((1 << VDEV_RAIDZ_P) | (1 << VDEV_RAIDZ_Q));
} }
/* BEGIN CSTYLED */ /* BEGIN CSTYLED */
@ -1355,7 +1349,7 @@ vdev_raidz_matrix_reconstruct(raidz_row_t *rr, int n, int nmissing,
kmem_free(p, psize); kmem_free(p, psize);
} }
static int static void
vdev_raidz_reconstruct_general(raidz_row_t *rr, int *tgts, int ntgts) vdev_raidz_reconstruct_general(raidz_row_t *rr, int *tgts, int ntgts)
{ {
int n, i, c, t, tt; int n, i, c, t, tt;
@ -1370,8 +1364,6 @@ vdev_raidz_reconstruct_general(raidz_row_t *rr, int *tgts, int ntgts)
abd_t **bufs = NULL; abd_t **bufs = NULL;
int code = 0;
/* /*
* Matrix reconstruction can't use scatter ABDs yet, so we allocate * Matrix reconstruction can't use scatter ABDs yet, so we allocate
* temporary linear ABDs if any non-linear ABDs are found. * temporary linear ABDs if any non-linear ABDs are found.
@ -1426,15 +1418,10 @@ vdev_raidz_reconstruct_general(raidz_row_t *rr, int *tgts, int ntgts)
continue; continue;
} }
code |= 1 << c;
parity_map[i] = c; parity_map[i] = c;
i++; i++;
} }
ASSERT(code != 0);
ASSERT3U(code, <, 1 << VDEV_RAIDZ_MAXPARITY);
psize = (sizeof (rows[0][0]) + sizeof (invrows[0][0])) * psize = (sizeof (rows[0][0]) + sizeof (invrows[0][0])) *
nmissing_rows * n + sizeof (used[0]) * n; nmissing_rows * n + sizeof (used[0]) * n;
p = kmem_alloc(psize, KM_SLEEP); p = kmem_alloc(psize, KM_SLEEP);
@ -1497,18 +1484,15 @@ vdev_raidz_reconstruct_general(raidz_row_t *rr, int *tgts, int ntgts)
} }
kmem_free(bufs, rr->rr_cols * sizeof (abd_t *)); kmem_free(bufs, rr->rr_cols * sizeof (abd_t *));
} }
return (code);
} }
static int static void
vdev_raidz_reconstruct_row(raidz_map_t *rm, raidz_row_t *rr, vdev_raidz_reconstruct_row(raidz_map_t *rm, raidz_row_t *rr,
const int *t, int nt) const int *t, int nt)
{ {
int tgts[VDEV_RAIDZ_MAXPARITY], *dt; int tgts[VDEV_RAIDZ_MAXPARITY], *dt;
int ntgts; int ntgts;
int i, c, ret; int i, c, ret;
int code;
int nbadparity, nbaddata; int nbadparity, nbaddata;
int parity_valid[VDEV_RAIDZ_MAXPARITY]; int parity_valid[VDEV_RAIDZ_MAXPARITY];
@ -1541,20 +1525,24 @@ vdev_raidz_reconstruct_row(raidz_map_t *rm, raidz_row_t *rr,
/* Reconstruct using the new math implementation */ /* Reconstruct using the new math implementation */
ret = vdev_raidz_math_reconstruct(rm, rr, parity_valid, dt, nbaddata); ret = vdev_raidz_math_reconstruct(rm, rr, parity_valid, dt, nbaddata);
if (ret != RAIDZ_ORIGINAL_IMPL) if (ret != RAIDZ_ORIGINAL_IMPL)
return (ret); return;
/* /*
* See if we can use any of our optimized reconstruction routines. * See if we can use any of our optimized reconstruction routines.
*/ */
switch (nbaddata) { switch (nbaddata) {
case 1: case 1:
if (parity_valid[VDEV_RAIDZ_P]) if (parity_valid[VDEV_RAIDZ_P]) {
return (vdev_raidz_reconstruct_p(rr, dt, 1)); vdev_raidz_reconstruct_p(rr, dt, 1);
return;
}
ASSERT(rr->rr_firstdatacol > 1); ASSERT(rr->rr_firstdatacol > 1);
if (parity_valid[VDEV_RAIDZ_Q]) if (parity_valid[VDEV_RAIDZ_Q]) {
return (vdev_raidz_reconstruct_q(rr, dt, 1)); vdev_raidz_reconstruct_q(rr, dt, 1);
return;
}
ASSERT(rr->rr_firstdatacol > 2); ASSERT(rr->rr_firstdatacol > 2);
break; break;
@ -1563,18 +1551,17 @@ vdev_raidz_reconstruct_row(raidz_map_t *rm, raidz_row_t *rr,
ASSERT(rr->rr_firstdatacol > 1); ASSERT(rr->rr_firstdatacol > 1);
if (parity_valid[VDEV_RAIDZ_P] && if (parity_valid[VDEV_RAIDZ_P] &&
parity_valid[VDEV_RAIDZ_Q]) parity_valid[VDEV_RAIDZ_Q]) {
return (vdev_raidz_reconstruct_pq(rr, dt, 2)); vdev_raidz_reconstruct_pq(rr, dt, 2);
return;
}
ASSERT(rr->rr_firstdatacol > 2); ASSERT(rr->rr_firstdatacol > 2);
break; break;
} }
code = vdev_raidz_reconstruct_general(rr, tgts, ntgts); vdev_raidz_reconstruct_general(rr, tgts, ntgts);
ASSERT(code < (1 << VDEV_RAIDZ_MAXPARITY));
ASSERT(code > 0);
return (code);
} }
static int static int
@ -2082,10 +2069,8 @@ raidz_reconstruct(zio_t *zio, int *ltgts, int ntgts, int nparity)
raidz_restore_orig_data(rm); raidz_restore_orig_data(rm);
return (EINVAL); return (EINVAL);
} }
rr->rr_code = 0;
if (dead_data > 0) if (dead_data > 0)
rr->rr_code = vdev_raidz_reconstruct_row(rm, rr, vdev_raidz_reconstruct_row(rm, rr, my_tgts, t);
my_tgts, t);
} }
/* Check for success */ /* Check for success */
@ -2318,11 +2303,7 @@ vdev_raidz_io_done_write_impl(zio_t *zio, raidz_row_t *rr)
} }
} }
/* static void
* return 0 if no reconstruction occurred, otherwise the "code" from
* vdev_raidz_reconstruct().
*/
static int
vdev_raidz_io_done_reconstruct_known_missing(zio_t *zio, raidz_map_t *rm, vdev_raidz_io_done_reconstruct_known_missing(zio_t *zio, raidz_map_t *rm,
raidz_row_t *rr) raidz_row_t *rr)
{ {
@ -2330,7 +2311,6 @@ vdev_raidz_io_done_reconstruct_known_missing(zio_t *zio, raidz_map_t *rm,
int parity_untried = 0; int parity_untried = 0;
int data_errors = 0; int data_errors = 0;
int total_errors = 0; int total_errors = 0;
int code = 0;
ASSERT3U(rr->rr_missingparity, <=, rr->rr_firstdatacol); ASSERT3U(rr->rr_missingparity, <=, rr->rr_firstdatacol);
ASSERT3U(rr->rr_missingdata, <=, rr->rr_cols - rr->rr_firstdatacol); ASSERT3U(rr->rr_missingdata, <=, rr->rr_cols - rr->rr_firstdatacol);
@ -2385,10 +2365,8 @@ vdev_raidz_io_done_reconstruct_known_missing(zio_t *zio, raidz_map_t *rm,
ASSERT(rr->rr_firstdatacol >= n); ASSERT(rr->rr_firstdatacol >= n);
code = vdev_raidz_reconstruct_row(rm, rr, tgts, n); vdev_raidz_reconstruct_row(rm, rr, tgts, n);
} }
return (code);
} }
/* /*
@ -2473,8 +2451,7 @@ vdev_raidz_io_done(zio_t *zio)
} else { } else {
for (int i = 0; i < rm->rm_nrows; i++) { for (int i = 0; i < rm->rm_nrows; i++) {
raidz_row_t *rr = rm->rm_row[i]; raidz_row_t *rr = rm->rm_row[i];
rr->rr_code = vdev_raidz_io_done_reconstruct_known_missing(zio,
vdev_raidz_io_done_reconstruct_known_missing(zio,
rm, rr); rm, rr);
} }