diff --git a/cmd/raidz_test/raidz_test.c b/cmd/raidz_test/raidz_test.c index 7b4118ba3..701779dad 100644 --- a/cmd/raidz_test/raidz_test.c +++ b/cmd/raidz_test/raidz_test.c @@ -265,9 +265,21 @@ cmp_data(raidz_test_opts_t *opts, raidz_map_t *rm) static int init_rand(void *data, size_t size, void *private) +{ + size_t *offsetp = (size_t *)private; + size_t offset = *offsetp; + + VERIFY3U(offset + size, <=, SPA_MAXBLOCKSIZE); + memcpy(data, (char *)rand_data + offset, size); + *offsetp = offset + size; + return (0); +} + +static int +corrupt_rand_fill(void *data, size_t size, void *private) { (void) private; - memcpy(data, rand_data, size); + memset(data, 0xAA, size); return (0); } @@ -279,7 +291,7 @@ corrupt_colums(raidz_map_t *rm, const int *tgts, const int cnt) for (int i = 0; i < cnt; i++) { raidz_col_t *col = &rr->rr_col[tgts[i]]; abd_iterate_func(col->rc_abd, 0, col->rc_size, - init_rand, NULL); + corrupt_rand_fill, NULL); } } } @@ -287,7 +299,8 @@ corrupt_colums(raidz_map_t *rm, const int *tgts, const int cnt) void init_zio_abd(zio_t *zio) { - abd_iterate_func(zio->io_abd, 0, zio->io_size, init_rand, NULL); + size_t offset = 0; + abd_iterate_func(zio->io_abd, 0, zio->io_size, init_rand, &offset); } static void