uint64_t ccount;
uint8_t *dst[VDEV_RAIDZ_MAXPARITY];
uint64_t dcount[VDEV_RAIDZ_MAXPARITY];
- uint8_t log, val;
+ uint8_t log = 0, val;
int ll;
uint8_t *invlog[VDEV_RAIDZ_MAXPARITY];
uint8_t *p, *pp;
{
zio_bad_cksum_t zbc;
raidz_map_t *rm = zio->io_vsd;
+ int ret;
- int ret = zio_checksum_error(zio, &zbc);
+ bzero(&zbc, sizeof (zio_bad_cksum_t));
+
+ ret = zio_checksum_error(zio, &zbc);
if (ret != 0 && zbc.zbc_injected != 0)
rm->rm_ecksuminjected = 1;
static int
vdev_raidz_worst_error(raidz_map_t *rm)
{
- int error = 0;
+ int c, error = 0;
- for (int c = 0; c < rm->rm_cols; c++)
+ for (c = 0; c < rm->rm_cols; c++)
error = zio_worst_error(error, rm->rm_col[c].rc_error);
return (error);
void *orig[VDEV_RAIDZ_MAXPARITY];
int tstore[VDEV_RAIDZ_MAXPARITY + 2];
int *tgts = &tstore[1];
- int current, next, i, c, n;
+ int curr, next, i, c, n;
int code, ret = 0;
ASSERT(total_errors < rm->rm_firstdatacol);
orig[n - 1] = zio_buf_alloc(rm->rm_col[0].rc_size);
- current = 0;
- next = tgts[current];
+ curr = 0;
+ next = tgts[curr];
- while (current != n) {
- tgts[current] = next;
- current = 0;
+ while (curr != n) {
+ tgts[curr] = next;
+ curr = 0;
/*
* Save off the original data that we're going to
do {
/*
- * Find the next valid column after the current
+ * Find the next valid column after the curr
* position..
*/
- for (next = tgts[current] + 1;
+ for (next = tgts[curr] + 1;
next < rm->rm_cols &&
rm->rm_col[next].rc_error != 0; next++)
continue;
- ASSERT(next <= tgts[current + 1]);
+ ASSERT(next <= tgts[curr + 1]);
/*
* If that spot is available, we're done here.
*/
- if (next != tgts[current + 1])
+ if (next != tgts[curr + 1])
break;
/*
* Otherwise, find the next valid column after
* the previous position.
*/
- for (c = tgts[current - 1] + 1;
+ for (c = tgts[curr - 1] + 1;
rm->rm_col[c].rc_error != 0; c++)
continue;
- tgts[current] = c;
- current++;
+ tgts[curr] = c;
+ curr++;
- } while (current != n);
+ } while (curr != n);
}
}
n--;
vdev_t *vd = zio->io_vd;
vdev_t *cvd;
raidz_map_t *rm = zio->io_vsd;
- raidz_col_t *rc;
+ raidz_col_t *rc = NULL;
int unexpected_errors = 0;
int parity_errors = 0;
int parity_untried = 0;