425 uint64_t io_children[ZIO_CHILD_TYPES][ZIO_WAIT_TYPES];
426 uint64_t io_child_count;
427 uint64_t io_parent_count;
428 uint64_t *io_stall;
429 zio_t *io_gang_leader;
430 zio_gang_node_t *io_gang_tree;
431 void *io_executor;
432 void *io_waiter;
433 kmutex_t io_lock;
434 kcondvar_t io_cv;
435
436 /* FMA state */
437 zio_cksum_report_t *io_cksum_report;
438 uint64_t io_ena;
439
440 /* Taskq dispatching state */
441 taskq_ent_t io_tqent;
442 };
443
444 extern zio_t *zio_null(zio_t *pio, spa_t *spa, vdev_t *vd,
445 zio_done_func_t *done, void *private, enum zio_flag flags);
446
447 extern zio_t *zio_root(spa_t *spa,
448 zio_done_func_t *done, void *private, enum zio_flag flags);
449
450 extern zio_t *zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, void *data,
451 uint64_t size, zio_done_func_t *done, void *private,
452 int priority, enum zio_flag flags, const zbookmark_t *zb);
453
454 extern zio_t *zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
455 void *data, uint64_t size, const zio_prop_t *zp,
456 zio_done_func_t *ready, zio_done_func_t *done, void *private,
457 int priority, enum zio_flag flags, const zbookmark_t *zb);
458
459 extern zio_t *zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
460 void *data, uint64_t size, zio_done_func_t *done, void *private,
461 int priority, enum zio_flag flags, zbookmark_t *zb);
462
463 extern void zio_write_override(zio_t *zio, blkptr_t *bp, int copies,
464 boolean_t nopwrite);
465
466 extern void zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp);
467
468 extern zio_t *zio_claim(zio_t *pio, spa_t *spa, uint64_t txg,
469 const blkptr_t *bp,
470 zio_done_func_t *done, void *private, enum zio_flag flags);
471
472 extern zio_t *zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd,
473 zio_done_func_t *done, void *private, int priority, enum zio_flag flags);
474
475 extern zio_t *zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset,
476 uint64_t size, void *data, int checksum,
477 zio_done_func_t *done, void *private, int priority, enum zio_flag flags,
478 boolean_t labels);
479
480 extern zio_t *zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset,
481 uint64_t size, void *data, int checksum,
482 zio_done_func_t *done, void *private, int priority, enum zio_flag flags,
483 boolean_t labels);
484
485 extern zio_t *zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg,
486 const blkptr_t *bp, enum zio_flag flags);
487
488 extern int zio_alloc_zil(spa_t *spa, uint64_t txg, blkptr_t *new_bp,
489 blkptr_t *old_bp, uint64_t size, boolean_t use_slog);
490 extern void zio_free_zil(spa_t *spa, uint64_t txg, blkptr_t *bp);
491 extern void zio_flush(zio_t *zio, vdev_t *vd);
492 extern void zio_shrink(zio_t *zio, uint64_t size);
493
494 extern int zio_wait(zio_t *zio);
495 extern void zio_nowait(zio_t *zio);
496 extern void zio_execute(zio_t *zio);
497 extern void zio_interrupt(zio_t *zio);
498
499 extern zio_t *zio_walk_parents(zio_t *cio);
500 extern zio_t *zio_walk_children(zio_t *pio);
501 extern zio_t *zio_unique_parent(zio_t *cio);
502 extern void zio_add_child(zio_t *pio, zio_t *cio);
503
504 extern void *zio_buf_alloc(size_t size);
505 extern void zio_buf_free(void *buf, size_t size);
506 extern void *zio_data_buf_alloc(size_t size);
507 extern void zio_data_buf_free(void *buf, size_t size);
508
509 extern void zio_resubmit_stage_async(void *);
510
511 extern zio_t *zio_vdev_child_io(zio_t *zio, blkptr_t *bp, vdev_t *vd,
512 uint64_t offset, void *data, uint64_t size, int type, int priority,
513 enum zio_flag flags, zio_done_func_t *done, void *private);
514
515 extern zio_t *zio_vdev_delegated_io(vdev_t *vd, uint64_t offset,
516 void *data, uint64_t size, int type, int priority,
517 enum zio_flag flags, zio_done_func_t *done, void *private);
518
519 extern void zio_vdev_io_bypass(zio_t *zio);
520 extern void zio_vdev_io_reissue(zio_t *zio);
521 extern void zio_vdev_io_redone(zio_t *zio);
522
523 extern void zio_checksum_verified(zio_t *zio);
524 extern int zio_worst_error(int e1, int e2);
525
526 extern enum zio_checksum zio_checksum_select(enum zio_checksum child,
527 enum zio_checksum parent);
528 extern enum zio_checksum zio_checksum_dedup_select(spa_t *spa,
529 enum zio_checksum child, enum zio_checksum parent);
530 extern enum zio_compress zio_compress_select(enum zio_compress child,
531 enum zio_compress parent);
532
533 extern void zio_suspend(spa_t *spa, zio_t *zio);
534 extern int zio_resume(spa_t *spa);
535 extern void zio_resume_wait(spa_t *spa);
536
537 /*
|
425 uint64_t io_children[ZIO_CHILD_TYPES][ZIO_WAIT_TYPES];
426 uint64_t io_child_count;
427 uint64_t io_parent_count;
428 uint64_t *io_stall;
429 zio_t *io_gang_leader;
430 zio_gang_node_t *io_gang_tree;
431 void *io_executor;
432 void *io_waiter;
433 kmutex_t io_lock;
434 kcondvar_t io_cv;
435
436 /* FMA state */
437 zio_cksum_report_t *io_cksum_report;
438 uint64_t io_ena;
439
440 /* Taskq dispatching state */
441 taskq_ent_t io_tqent;
442 };
443
444 extern zio_t *zio_null(zio_t *pio, spa_t *spa, vdev_t *vd,
445 zio_done_func_t *done, void *io_private, enum zio_flag flags);
446
447 extern zio_t *zio_root(spa_t *spa,
448 zio_done_func_t *done, void *io_private, enum zio_flag flags);
449
450 extern zio_t *zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, void *data,
451 uint64_t size, zio_done_func_t *done, void *io_private,
452 int priority, enum zio_flag flags, const zbookmark_t *zb);
453
454 extern zio_t *zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
455 void *data, uint64_t size, const zio_prop_t *zp,
456 zio_done_func_t *ready, zio_done_func_t *done, void *io_private,
457 int priority, enum zio_flag flags, const zbookmark_t *zb);
458
459 extern zio_t *zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp,
460 void *data, uint64_t size, zio_done_func_t *done, void *io_private,
461 int priority, enum zio_flag flags, zbookmark_t *zb);
462
463 extern void zio_write_override(zio_t *zio, blkptr_t *bp, int copies,
464 boolean_t nopwrite);
465
466 extern void zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp);
467
468 extern zio_t *zio_claim(zio_t *pio, spa_t *spa, uint64_t txg,
469 const blkptr_t *bp,
470 zio_done_func_t *done, void *io_private, enum zio_flag flags);
471
472 extern zio_t *zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd,
473 zio_done_func_t *done, void *io_private, int priority,
474 enum zio_flag flags);
475
476 extern zio_t *zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset,
477 uint64_t size, void *data, int checksum,
478 zio_done_func_t *done, void *io_private, int priority, enum zio_flag flags,
479 boolean_t labels);
480
481 extern zio_t *zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset,
482 uint64_t size, void *data, int checksum,
483 zio_done_func_t *done, void *io_private, int priority, enum zio_flag flags,
484 boolean_t labels);
485
486 extern zio_t *zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg,
487 const blkptr_t *bp, enum zio_flag flags);
488
489 extern int zio_alloc_zil(spa_t *spa, uint64_t txg, blkptr_t *new_bp,
490 blkptr_t *old_bp, uint64_t size, boolean_t use_slog);
491 extern void zio_free_zil(spa_t *spa, uint64_t txg, blkptr_t *bp);
492 extern void zio_flush(zio_t *zio, vdev_t *vd);
493 extern void zio_shrink(zio_t *zio, uint64_t size);
494
495 extern int zio_wait(zio_t *zio);
496 extern void zio_nowait(zio_t *zio);
497 extern void zio_execute(zio_t *zio);
498 extern void zio_interrupt(zio_t *zio);
499
500 extern zio_t *zio_walk_parents(zio_t *cio);
501 extern zio_t *zio_walk_children(zio_t *pio);
502 extern zio_t *zio_unique_parent(zio_t *cio);
503 extern void zio_add_child(zio_t *pio, zio_t *cio);
504
505 extern void *zio_buf_alloc(size_t size);
506 extern void zio_buf_free(void *buf, size_t size);
507 extern void *zio_data_buf_alloc(size_t size);
508 extern void zio_data_buf_free(void *buf, size_t size);
509
510 extern void zio_resubmit_stage_async(void *);
511
512 extern zio_t *zio_vdev_child_io(zio_t *zio, blkptr_t *bp, vdev_t *vd,
513 uint64_t offset, void *data, uint64_t size, int type, int priority,
514 enum zio_flag flags, zio_done_func_t *done, void *io_private);
515
516 extern zio_t *zio_vdev_delegated_io(vdev_t *vd, uint64_t offset,
517 void *data, uint64_t size, int type, int priority,
518 enum zio_flag flags, zio_done_func_t *done, void *io_private);
519
520 extern void zio_vdev_io_bypass(zio_t *zio);
521 extern void zio_vdev_io_reissue(zio_t *zio);
522 extern void zio_vdev_io_redone(zio_t *zio);
523
524 extern void zio_checksum_verified(zio_t *zio);
525 extern int zio_worst_error(int e1, int e2);
526
527 extern enum zio_checksum zio_checksum_select(enum zio_checksum child,
528 enum zio_checksum parent);
529 extern enum zio_checksum zio_checksum_dedup_select(spa_t *spa,
530 enum zio_checksum child, enum zio_checksum parent);
531 extern enum zio_compress zio_compress_select(enum zio_compress child,
532 enum zio_compress parent);
533
534 extern void zio_suspend(spa_t *spa, zio_t *zio);
535 extern int zio_resume(spa_t *spa);
536 extern void zio_resume_wait(spa_t *spa);
537
538 /*
|