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 --- |