Deleted Added
full compact
ztest.c (168404) ztest.c (168498)
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 232 unchanged lines hidden (view full) ---

241
242#define ZTEST_DIROBJ 1
243#define ZTEST_MICROZAP_OBJ 2
244#define ZTEST_FATZAP_OBJ 3
245
246#define ZTEST_DIROBJ_BLOCKSIZE (1 << 10)
247#define ZTEST_DIRSIZE 256
248
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 232 unchanged lines hidden (view full) ---

241
242#define ZTEST_DIROBJ 1
243#define ZTEST_MICROZAP_OBJ 2
244#define ZTEST_FATZAP_OBJ 3
245
246#define ZTEST_DIROBJ_BLOCKSIZE (1 << 10)
247#define ZTEST_DIRSIZE 256
248
249static void usage(boolean_t);
250
249/*
250 * These libumem hooks provide a reasonable set of defaults for the allocator's
251 * debugging facilities.
252 */
253const char *
254_umem_debug_init()
255{
256 return ("default,verbose"); /* $UMEM_DEBUG setting */

--- 41 unchanged lines hidden (view full) ---

298 int i;
299
300 if (buf[0] == '\0')
301 return (0);
302 for (i = 0; i < strlen(ends); i++) {
303 if (toupper(buf[0]) == ends[i])
304 break;
305 }
251/*
252 * These libumem hooks provide a reasonable set of defaults for the allocator's
253 * debugging facilities.
254 */
255const char *
256_umem_debug_init()
257{
258 return ("default,verbose"); /* $UMEM_DEBUG setting */

--- 41 unchanged lines hidden (view full) ---

300 int i;
301
302 if (buf[0] == '\0')
303 return (0);
304 for (i = 0; i < strlen(ends); i++) {
305 if (toupper(buf[0]) == ends[i])
306 break;
307 }
306 if (i == strlen(ends))
307 fatal(0, "invalid bytes suffix: %s", buf);
308 if (i == strlen(ends)) {
309 (void) fprintf(stderr, "ztest: invalid bytes suffix: %s\n",
310 buf);
311 usage(B_FALSE);
312 }
308 if (buf[1] == '\0' || (toupper(buf[1]) == 'B' && buf[2] == '\0')) {
309 return (10*i);
310 }
313 if (buf[1] == '\0' || (toupper(buf[1]) == 'B' && buf[2] == '\0')) {
314 return (10*i);
315 }
311 fatal(0, "invalid bytes suffix: %s", buf);
312 return (-1);
316 (void) fprintf(stderr, "ztest: invalid bytes suffix: %s\n", buf);
317 usage(B_FALSE);
318 /* NOTREACHED */
313}
314
315static uint64_t
316nicenumtoull(const char *buf)
317{
318 char *end;
319 uint64_t val;
320
321 val = strtoull(buf, &end, 0);
322 if (end == buf) {
319}
320
321static uint64_t
322nicenumtoull(const char *buf)
323{
324 char *end;
325 uint64_t val;
326
327 val = strtoull(buf, &end, 0);
328 if (end == buf) {
323 fatal(0, "bad numeric value: %s", buf);
329 (void) fprintf(stderr, "ztest: bad numeric value: %s\n", buf);
330 usage(B_FALSE);
324 } else if (end[0] == '.') {
325 double fval = strtod(buf, &end);
326 fval *= pow(2, str2shift(end));
331 } else if (end[0] == '.') {
332 double fval = strtod(buf, &end);
333 fval *= pow(2, str2shift(end));
327 if (fval > UINT64_MAX)
328 fatal(0, "value too large: %s", buf);
334 if (fval > UINT64_MAX) {
335 (void) fprintf(stderr, "ztest: value too large: %s\n",
336 buf);
337 usage(B_FALSE);
338 }
329 val = (uint64_t)fval;
330 } else {
331 int shift = str2shift(end);
339 val = (uint64_t)fval;
340 } else {
341 int shift = str2shift(end);
332 if (shift >= 64 || (val << shift) >> shift != val)
333 fatal(0, "value too large: %s", buf);
342 if (shift >= 64 || (val << shift) >> shift != val) {
343 (void) fprintf(stderr, "ztest: value too large: %s\n",
344 buf);
345 usage(B_FALSE);
346 }
334 val <<= shift;
335 }
336 return (val);
337}
338
339static void
347 val <<= shift;
348 }
349 return (val);
350}
351
352static void
340usage(void)
353usage(boolean_t requested)
341{
342 char nice_vdev_size[10];
343 char nice_gang_bang[10];
354{
355 char nice_vdev_size[10];
356 char nice_gang_bang[10];
357 FILE *fp = requested ? stdout : stderr;
344
345 nicenum(zopt_vdev_size, nice_vdev_size);
346 nicenum(zio_gang_bang, nice_gang_bang);
347
358
359 nicenum(zopt_vdev_size, nice_vdev_size);
360 nicenum(zio_gang_bang, nice_gang_bang);
361
348 (void) printf("Usage: %s\n"
362 (void) fprintf(fp, "Usage: %s\n"
349 "\t[-v vdevs (default: %llu)]\n"
350 "\t[-s size_of_each_vdev (default: %s)]\n"
351 "\t[-a alignment_shift (default: %d) (use 0 for random)]\n"
352 "\t[-m mirror_copies (default: %d)]\n"
353 "\t[-r raidz_disks (default: %d)]\n"
354 "\t[-R raidz_parity (default: %d)]\n"
355 "\t[-d datasets (default: %d)]\n"
356 "\t[-t threads (default: %d)]\n"
357 "\t[-g gang_block_threshold (default: %s)]\n"
358 "\t[-i initialize pool i times (default: %d)]\n"
359 "\t[-k kill percentage (default: %llu%%)]\n"
360 "\t[-p pool_name (default: %s)]\n"
361 "\t[-f file directory for vdev files (default: %s)]\n"
362 "\t[-V(erbose)] (use multiple times for ever more blather)\n"
363 "\t[-E(xisting)] (use existing pool instead of creating new one)\n"
364 "\t[-T time] total run time (default: %llu sec)\n"
365 "\t[-P passtime] time per pass (default: %llu sec)\n"
366 "\t[-z zil failure rate (default: fail every 2^%llu allocs)]\n"
363 "\t[-v vdevs (default: %llu)]\n"
364 "\t[-s size_of_each_vdev (default: %s)]\n"
365 "\t[-a alignment_shift (default: %d) (use 0 for random)]\n"
366 "\t[-m mirror_copies (default: %d)]\n"
367 "\t[-r raidz_disks (default: %d)]\n"
368 "\t[-R raidz_parity (default: %d)]\n"
369 "\t[-d datasets (default: %d)]\n"
370 "\t[-t threads (default: %d)]\n"
371 "\t[-g gang_block_threshold (default: %s)]\n"
372 "\t[-i initialize pool i times (default: %d)]\n"
373 "\t[-k kill percentage (default: %llu%%)]\n"
374 "\t[-p pool_name (default: %s)]\n"
375 "\t[-f file directory for vdev files (default: %s)]\n"
376 "\t[-V(erbose)] (use multiple times for ever more blather)\n"
377 "\t[-E(xisting)] (use existing pool instead of creating new one)\n"
378 "\t[-T time] total run time (default: %llu sec)\n"
379 "\t[-P passtime] time per pass (default: %llu sec)\n"
380 "\t[-z zil failure rate (default: fail every 2^%llu allocs)]\n"
381 "\t[-h] (print help)\n"
367 "",
368 cmdname,
369 (u_longlong_t)zopt_vdevs, /* -v */
370 nice_vdev_size, /* -s */
371 zopt_ashift, /* -a */
372 zopt_mirrors, /* -m */
373 zopt_raidz, /* -r */
374 zopt_raidz_parity, /* -R */
375 zopt_datasets, /* -d */
376 zopt_threads, /* -t */
377 nice_gang_bang, /* -g */
378 zopt_init, /* -i */
379 (u_longlong_t)zopt_killrate, /* -k */
380 zopt_pool, /* -p */
381 zopt_dir, /* -f */
382 (u_longlong_t)zopt_time, /* -T */
383 (u_longlong_t)zopt_passtime, /* -P */
384 (u_longlong_t)zio_zil_fail_shift); /* -z */
382 "",
383 cmdname,
384 (u_longlong_t)zopt_vdevs, /* -v */
385 nice_vdev_size, /* -s */
386 zopt_ashift, /* -a */
387 zopt_mirrors, /* -m */
388 zopt_raidz, /* -r */
389 zopt_raidz_parity, /* -R */
390 zopt_datasets, /* -d */
391 zopt_threads, /* -t */
392 nice_gang_bang, /* -g */
393 zopt_init, /* -i */
394 (u_longlong_t)zopt_killrate, /* -k */
395 zopt_pool, /* -p */
396 zopt_dir, /* -f */
397 (u_longlong_t)zopt_time, /* -T */
398 (u_longlong_t)zopt_passtime, /* -P */
399 (u_longlong_t)zio_zil_fail_shift); /* -z */
385 exit(1);
400 exit(requested ? 0 : 1);
386}
387
388static uint64_t
389ztest_random(uint64_t range)
390{
391 uint64_t r;
392
393 if (range == 0)

--- 23 unchanged lines hidden (view full) ---

417
418 /* By default, test gang blocks for blocks 32K and greater */
419 zio_gang_bang = 32 << 10;
420
421 /* Default value, fail every 32nd allocation */
422 zio_zil_fail_shift = 5;
423
424 while ((opt = getopt(argc, argv,
401}
402
403static uint64_t
404ztest_random(uint64_t range)
405{
406 uint64_t r;
407
408 if (range == 0)

--- 23 unchanged lines hidden (view full) ---

432
433 /* By default, test gang blocks for blocks 32K and greater */
434 zio_gang_bang = 32 << 10;
435
436 /* Default value, fail every 32nd allocation */
437 zio_zil_fail_shift = 5;
438
439 while ((opt = getopt(argc, argv,
425 "v:s:a:m:r:R:d:t:g:i:k:p:f:VET:P:z:")) != EOF) {
440 "v:s:a:m:r:R:d:t:g:i:k:p:f:VET:P:z:h")) != EOF) {
426 value = 0;
427 switch (opt) {
428 case 'v':
429 case 's':
430 case 'a':
431 case 'm':
432 case 'r':
433 case 'R':

--- 57 unchanged lines hidden (view full) ---

491 zopt_time = value;
492 break;
493 case 'P':
494 zopt_passtime = MAX(1, value);
495 break;
496 case 'z':
497 zio_zil_fail_shift = MIN(value, 16);
498 break;
441 value = 0;
442 switch (opt) {
443 case 'v':
444 case 's':
445 case 'a':
446 case 'm':
447 case 'r':
448 case 'R':

--- 57 unchanged lines hidden (view full) ---

506 zopt_time = value;
507 break;
508 case 'P':
509 zopt_passtime = MAX(1, value);
510 break;
511 case 'z':
512 zio_zil_fail_shift = MIN(value, 16);
513 break;
514 case 'h':
515 usage(B_TRUE);
516 break;
499 case '?':
500 default:
517 case '?':
518 default:
501 usage();
519 usage(B_FALSE);
502 break;
503 }
504 }
505
506 zopt_raidz_parity = MIN(zopt_raidz_parity, zopt_raidz - 1);
507
508 zopt_vdevtime = (zopt_vdevs > 0 ? zopt_time / zopt_vdevs : UINT64_MAX);
509 zopt_maxfaults = MAX(zopt_mirrors, 1) * (zopt_raidz_parity + 1) - 1;

--- 2968 unchanged lines hidden ---
520 break;
521 }
522 }
523
524 zopt_raidz_parity = MIN(zopt_raidz_parity, zopt_raidz - 1);
525
526 zopt_vdevtime = (zopt_vdevs > 0 ? zopt_time / zopt_vdevs : UINT64_MAX);
527 zopt_maxfaults = MAX(zopt_mirrors, 1) * (zopt_raidz_parity + 1) - 1;

--- 2968 unchanged lines hidden ---