Print this page
3748 zfs headers should be C++ compatible
Submitted by:   Justin Gibbs <justing@spectralogic.com>
Submitted by:   Will Andrews <willa@spectralogic.com>
Reviewed by:    Matthew Ahrens <mahrens@delphix.com>


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