Lines Matching refs:pio
361 zio_walk_children(zio_t *pio) in zio_walk_children() argument
363 zio_link_t *zl = pio->io_walk_link; in zio_walk_children()
364 list_t *cl = &pio->io_child_list; in zio_walk_children()
367 pio->io_walk_link = zl; in zio_walk_children()
372 ASSERT(zl->zl_parent == pio); in zio_walk_children()
379 zio_t *pio = zio_walk_parents(cio); in zio_unique_parent() local
382 return (pio); in zio_unique_parent()
386 zio_add_child(zio_t *pio, zio_t *cio) in zio_add_child() argument
396 ASSERT(cio->io_child_type <= pio->io_child_type); in zio_add_child()
398 zl->zl_parent = pio; in zio_add_child()
402 mutex_enter(&pio->io_lock); in zio_add_child()
404 ASSERT(pio->io_state[ZIO_WAIT_DONE] == 0); in zio_add_child()
407 pio->io_children[cio->io_child_type][w] += !cio->io_state[w]; in zio_add_child()
409 list_insert_head(&pio->io_child_list, zl); in zio_add_child()
412 pio->io_child_count++; in zio_add_child()
415 mutex_exit(&pio->io_lock); in zio_add_child()
420 zio_remove_child(zio_t *pio, zio_t *cio, zio_link_t *zl) in zio_remove_child() argument
422 ASSERT(zl->zl_parent == pio); in zio_remove_child()
426 mutex_enter(&pio->io_lock); in zio_remove_child()
428 list_remove(&pio->io_child_list, zl); in zio_remove_child()
431 pio->io_child_count--; in zio_remove_child()
434 mutex_exit(&pio->io_lock); in zio_remove_child()
464 zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait) in zio_notify_parent() argument
466 uint64_t *countp = &pio->io_children[zio->io_child_type][wait]; in zio_notify_parent()
467 int *errorp = &pio->io_child_error[zio->io_child_type]; in zio_notify_parent()
469 mutex_enter(&pio->io_lock); in zio_notify_parent()
472 pio->io_reexecute |= zio->io_reexecute; in zio_notify_parent()
477 if (*countp == 0 && pio->io_stall == countp) { in zio_notify_parent()
478 pio->io_stall = NULL; in zio_notify_parent()
479 mutex_exit(&pio->io_lock); in zio_notify_parent()
480 zio_execute(pio); in zio_notify_parent()
482 mutex_exit(&pio->io_lock); in zio_notify_parent()
499 zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, in zio_create() argument
568 if (pio != NULL) { in zio_create()
570 zio->io_logical = pio->io_logical; in zio_create()
572 zio->io_gang_leader = pio->io_gang_leader; in zio_create()
573 zio_add_child(pio, zio); in zio_create()
590 zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done, in zio_null() argument
595 zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, in zio_null()
691 zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, in zio_read() argument
699 zio = zio_create(pio, spa, BP_PHYSICAL_BIRTH(bp), bp, in zio_read()
709 zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, in zio_write() argument
726 zio = zio_create(pio, spa, txg, bp, data, size, done, private, in zio_write()
749 zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, void *data, in zio_rewrite() argument
755 zio = zio_create(pio, spa, txg, bp, data, size, done, private, in zio_rewrite()
810 zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, in zio_free_sync() argument
821 return (zio_null(pio, spa, NULL, NULL, NULL, 0)); in zio_free_sync()
834 zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), in zio_free_sync()
842 zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, in zio_claim() argument
850 return (zio_null(pio, spa, NULL, NULL, NULL, 0)); in zio_claim()
868 zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), in zio_claim()
876 zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, in zio_ioctl() argument
883 zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, in zio_ioctl()
889 zio = zio_null(pio, spa, NULL, NULL, NULL, flags); in zio_ioctl()
900 zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, in zio_read_phys() argument
911 zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, in zio_read_phys()
921 zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, in zio_write_phys() argument
932 zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, in zio_write_phys()
957 zio_vdev_child_io(zio_t *pio, blkptr_t *bp, vdev_t *vd, uint64_t offset, in zio_vdev_child_io() argument
965 (pio->io_vd ? pio->io_vd : pio->io_spa->spa_root_vdev)); in zio_vdev_child_io()
975 pio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY; in zio_vdev_child_io()
981 flags |= ZIO_VDEV_CHILD_FLAGS(pio) | ZIO_FLAG_DONT_PROPAGATE; in zio_vdev_child_io()
990 zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size, in zio_vdev_child_io()
991 done, private, type, priority, flags, vd, offset, &pio->io_bookmark, in zio_vdev_child_io()
994 zio->io_physdone = pio->io_physdone; in zio_vdev_child_io()
1534 zio_reexecute(zio_t *pio) in zio_reexecute() argument
1538 ASSERT(pio->io_child_type == ZIO_CHILD_LOGICAL); in zio_reexecute()
1539 ASSERT(pio->io_orig_stage == ZIO_STAGE_OPEN); in zio_reexecute()
1540 ASSERT(pio->io_gang_leader == NULL); in zio_reexecute()
1541 ASSERT(pio->io_gang_tree == NULL); in zio_reexecute()
1543 pio->io_flags = pio->io_orig_flags; in zio_reexecute()
1544 pio->io_stage = pio->io_orig_stage; in zio_reexecute()
1545 pio->io_pipeline = pio->io_orig_pipeline; in zio_reexecute()
1546 pio->io_reexecute = 0; in zio_reexecute()
1547 pio->io_flags |= ZIO_FLAG_REEXECUTED; in zio_reexecute()
1548 pio->io_error = 0; in zio_reexecute()
1550 pio->io_state[w] = 0; in zio_reexecute()
1552 pio->io_child_error[c] = 0; in zio_reexecute()
1554 if (IO_IS_ALLOCATING(pio)) in zio_reexecute()
1555 BP_ZERO(pio->io_bp); in zio_reexecute()
1564 for (cio = zio_walk_children(pio); cio != NULL; cio = cio_next) { in zio_reexecute()
1565 cio_next = zio_walk_children(pio); in zio_reexecute()
1566 mutex_enter(&pio->io_lock); in zio_reexecute()
1568 pio->io_children[cio->io_child_type][w]++; in zio_reexecute()
1569 mutex_exit(&pio->io_lock); in zio_reexecute()
1578 if (!(pio->io_flags & ZIO_FLAG_GODFATHER)) in zio_reexecute()
1579 zio_execute(pio); in zio_reexecute()
1616 zio_t *pio; in zio_resume() local
1624 pio = spa->spa_suspend_zio_root; in zio_resume()
1628 if (pio == NULL) in zio_resume()
1631 zio_reexecute(pio); in zio_resume()
1632 return (zio_wait(pio)); in zio_resume()
1711 zio_read_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_read_gang() argument
1714 return (pio); in zio_read_gang()
1716 return (zio_read(pio, pio->io_spa, bp, data, BP_GET_PSIZE(bp), in zio_read_gang()
1717 NULL, NULL, pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), in zio_read_gang()
1718 &pio->io_bookmark)); in zio_read_gang()
1722 zio_rewrite_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_rewrite_gang() argument
1727 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp, in zio_rewrite_gang()
1728 gn->gn_gbh, SPA_GANGBLOCKSIZE, NULL, NULL, pio->io_priority, in zio_rewrite_gang()
1729 ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); in zio_rewrite_gang()
1739 if (gn != pio->io_gang_leader->io_gang_tree) { in zio_rewrite_gang()
1747 if (pio->io_gang_leader->io_flags & ZIO_FLAG_INDUCE_DAMAGE) in zio_rewrite_gang()
1750 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp, in zio_rewrite_gang()
1751 data, BP_GET_PSIZE(bp), NULL, NULL, pio->io_priority, in zio_rewrite_gang()
1752 ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); in zio_rewrite_gang()
1760 zio_free_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_free_gang() argument
1762 return (zio_free_sync(pio, pio->io_spa, pio->io_txg, bp, in zio_free_gang()
1763 ZIO_GANG_CHILD_FLAGS(pio))); in zio_free_gang()
1768 zio_claim_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_claim_gang() argument
1770 return (zio_claim(pio, pio->io_spa, pio->io_txg, bp, in zio_claim_gang()
1771 NULL, NULL, ZIO_GANG_CHILD_FLAGS(pio))); in zio_claim_gang()
1868 zio_gang_tree_issue(zio_t *pio, zio_gang_node_t *gn, blkptr_t *bp, void *data) in zio_gang_tree_issue() argument
1870 zio_t *gio = pio->io_gang_leader; in zio_gang_tree_issue()
1881 zio = zio_gang_issue_func[gio->io_type](pio, bp, gn, data); in zio_gang_tree_issue()
1898 if (zio != pio) in zio_gang_tree_issue()
1942 zio_t *pio = zio_unique_parent(zio); in zio_write_gang_member_ready() local
1945 dva_t *pdva = pio->io_bp->blk_dva; in zio_write_gang_member_ready()
1956 ASSERT3U(pio->io_prop.zp_copies, <=, BP_GET_NDVAS(pio->io_bp)); in zio_write_gang_member_ready()
1957 ASSERT3U(BP_GET_NDVAS(zio->io_bp), <=, BP_GET_NDVAS(pio->io_bp)); in zio_write_gang_member_ready()
1959 mutex_enter(&pio->io_lock); in zio_write_gang_member_ready()
1966 mutex_exit(&pio->io_lock); in zio_write_gang_member_ready()
1970 zio_write_gang_block(zio_t *pio) in zio_write_gang_block() argument
1972 spa_t *spa = pio->io_spa; in zio_write_gang_block()
1973 blkptr_t *bp = pio->io_bp; in zio_write_gang_block()
1974 zio_t *gio = pio->io_gang_leader; in zio_write_gang_block()
1978 uint64_t txg = pio->io_txg; in zio_write_gang_block()
1979 uint64_t resid = pio->io_size; in zio_write_gang_block()
1987 bp, gbh_copies, txg, pio == gio ? NULL : gio->io_bp, in zio_write_gang_block()
1990 pio->io_error = error; in zio_write_gang_block()
1994 if (pio == gio) { in zio_write_gang_block()
1997 gnpp = pio->io_private; in zio_write_gang_block()
1998 ASSERT(pio->io_ready == zio_write_gang_member_ready); in zio_write_gang_block()
2008 zio = zio_rewrite(pio, spa, txg, bp, gbh, SPA_GANGBLOCKSIZE, NULL, NULL, in zio_write_gang_block()
2009 pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); in zio_write_gang_block()
2029 (char *)pio->io_data + (pio->io_size - resid), lsize, &zp, in zio_write_gang_block()
2031 pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), in zio_write_gang_block()
2032 &pio->io_bookmark)); in zio_write_gang_block()
2038 pio->io_pipeline = ZIO_INTERLOCK_PIPELINE; in zio_write_gang_block()
2124 zio_t *pio = zio_unique_parent(zio); in zio_ddt_child_read_done() local
2126 mutex_enter(&pio->io_lock); in zio_ddt_child_read_done()
2134 mutex_exit(&pio->io_lock); in zio_ddt_child_read_done()
2280 zio_t *pio; in zio_ddt_child_write_ready() local
2291 while ((pio = zio_walk_parents(zio)) != NULL) in zio_ddt_child_write_ready()
2292 ddt_bp_fill(ddp, pio->io_bp, zio->io_txg); in zio_ddt_child_write_ready()
3042 zio_t *pio, *pio_next; in zio_ready() local
3066 pio = zio_walk_parents(zio); in zio_ready()
3076 for (; pio != NULL; pio = pio_next) { in zio_ready()
3078 zio_notify_parent(pio, zio, ZIO_WAIT_READY); in zio_ready()
3105 zio_t *pio, *pio_next; in zio_done() local
3284 for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) { in zio_done()
3288 if ((pio->io_flags & ZIO_FLAG_GODFATHER) && in zio_done()
3290 zio_remove_child(pio, zio, zl); in zio_done()
3291 zio_notify_parent(pio, zio, ZIO_WAIT_DONE); in zio_done()
3295 if ((pio = zio_unique_parent(zio)) != NULL) { in zio_done()
3303 zio_notify_parent(pio, zio, ZIO_WAIT_DONE); in zio_done()
3350 for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) { in zio_done()
3353 zio_remove_child(pio, zio, zl); in zio_done()
3354 zio_notify_parent(pio, zio, ZIO_WAIT_DONE); in zio_done()