Lines Matching refs:pio

360 zio_walk_children(zio_t *pio)  in zio_walk_children()  argument
362 zio_link_t *zl = pio->io_walk_link; in zio_walk_children()
363 list_t *cl = &pio->io_child_list; in zio_walk_children()
366 pio->io_walk_link = zl; in zio_walk_children()
371 ASSERT(zl->zl_parent == pio); in zio_walk_children()
378 zio_t *pio = zio_walk_parents(cio); in zio_unique_parent() local
381 return (pio); in zio_unique_parent()
385 zio_add_child(zio_t *pio, zio_t *cio) in zio_add_child() argument
395 ASSERT(cio->io_child_type <= pio->io_child_type); in zio_add_child()
397 zl->zl_parent = pio; in zio_add_child()
401 mutex_enter(&pio->io_lock); in zio_add_child()
403 ASSERT(pio->io_state[ZIO_WAIT_DONE] == 0); in zio_add_child()
406 pio->io_children[cio->io_child_type][w] += !cio->io_state[w]; in zio_add_child()
408 list_insert_head(&pio->io_child_list, zl); in zio_add_child()
411 pio->io_child_count++; in zio_add_child()
414 mutex_exit(&pio->io_lock); in zio_add_child()
419 zio_remove_child(zio_t *pio, zio_t *cio, zio_link_t *zl) in zio_remove_child() argument
421 ASSERT(zl->zl_parent == pio); in zio_remove_child()
425 mutex_enter(&pio->io_lock); in zio_remove_child()
427 list_remove(&pio->io_child_list, zl); in zio_remove_child()
430 pio->io_child_count--; in zio_remove_child()
433 mutex_exit(&pio->io_lock); in zio_remove_child()
463 zio_notify_parent(zio_t *pio, zio_t *zio, enum zio_wait_type wait) in zio_notify_parent() argument
465 uint64_t *countp = &pio->io_children[zio->io_child_type][wait]; in zio_notify_parent()
466 int *errorp = &pio->io_child_error[zio->io_child_type]; in zio_notify_parent()
468 mutex_enter(&pio->io_lock); in zio_notify_parent()
471 pio->io_reexecute |= zio->io_reexecute; in zio_notify_parent()
476 if (*countp == 0 && pio->io_stall == countp) { in zio_notify_parent()
477 pio->io_stall = NULL; in zio_notify_parent()
478 mutex_exit(&pio->io_lock); in zio_notify_parent()
479 zio_execute(pio); in zio_notify_parent()
481 mutex_exit(&pio->io_lock); in zio_notify_parent()
498 zio_create(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, in zio_create() argument
567 if (pio != NULL) { in zio_create()
569 zio->io_logical = pio->io_logical; in zio_create()
571 zio->io_gang_leader = pio->io_gang_leader; in zio_create()
572 zio_add_child(pio, zio); in zio_create()
589 zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done, in zio_null() argument
594 zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, in zio_null()
690 zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, in zio_read() argument
698 zio = zio_create(pio, spa, BP_PHYSICAL_BIRTH(bp), bp, in zio_read()
708 zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, in zio_write() argument
725 zio = zio_create(pio, spa, txg, bp, data, size, done, private, in zio_write()
748 zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, void *data, in zio_rewrite() argument
754 zio = zio_create(pio, spa, txg, bp, data, size, done, private, in zio_rewrite()
809 zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, in zio_free_sync() argument
820 return (zio_null(pio, spa, NULL, NULL, NULL, 0)); in zio_free_sync()
833 zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), in zio_free_sync()
841 zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, in zio_claim() argument
849 return (zio_null(pio, spa, NULL, NULL, NULL, 0)); in zio_claim()
867 zio = zio_create(pio, spa, txg, bp, NULL, BP_GET_PSIZE(bp), in zio_claim()
875 zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, in zio_ioctl() argument
882 zio = zio_create(pio, spa, 0, NULL, NULL, 0, done, private, in zio_ioctl()
888 zio = zio_null(pio, spa, NULL, NULL, NULL, flags); in zio_ioctl()
899 zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, in zio_read_phys() argument
910 zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, in zio_read_phys()
920 zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, in zio_write_phys() argument
931 zio = zio_create(pio, vd->vdev_spa, 0, NULL, data, size, done, private, in zio_write_phys()
956 zio_vdev_child_io(zio_t *pio, blkptr_t *bp, vdev_t *vd, uint64_t offset, in zio_vdev_child_io() argument
964 (pio->io_vd ? pio->io_vd : pio->io_spa->spa_root_vdev)); in zio_vdev_child_io()
974 pio->io_pipeline &= ~ZIO_STAGE_CHECKSUM_VERIFY; in zio_vdev_child_io()
980 flags |= ZIO_VDEV_CHILD_FLAGS(pio) | ZIO_FLAG_DONT_PROPAGATE; in zio_vdev_child_io()
989 zio = zio_create(pio, pio->io_spa, pio->io_txg, bp, data, size, in zio_vdev_child_io()
990 done, private, type, priority, flags, vd, offset, &pio->io_bookmark, in zio_vdev_child_io()
993 zio->io_physdone = pio->io_physdone; in zio_vdev_child_io()
1479 zio_reexecute(zio_t *pio) in zio_reexecute() argument
1483 ASSERT(pio->io_child_type == ZIO_CHILD_LOGICAL); in zio_reexecute()
1484 ASSERT(pio->io_orig_stage == ZIO_STAGE_OPEN); in zio_reexecute()
1485 ASSERT(pio->io_gang_leader == NULL); in zio_reexecute()
1486 ASSERT(pio->io_gang_tree == NULL); in zio_reexecute()
1488 pio->io_flags = pio->io_orig_flags; in zio_reexecute()
1489 pio->io_stage = pio->io_orig_stage; in zio_reexecute()
1490 pio->io_pipeline = pio->io_orig_pipeline; in zio_reexecute()
1491 pio->io_reexecute = 0; in zio_reexecute()
1492 pio->io_flags |= ZIO_FLAG_REEXECUTED; in zio_reexecute()
1493 pio->io_error = 0; in zio_reexecute()
1495 pio->io_state[w] = 0; in zio_reexecute()
1497 pio->io_child_error[c] = 0; in zio_reexecute()
1499 if (IO_IS_ALLOCATING(pio)) in zio_reexecute()
1500 BP_ZERO(pio->io_bp); in zio_reexecute()
1509 for (cio = zio_walk_children(pio); cio != NULL; cio = cio_next) { in zio_reexecute()
1510 cio_next = zio_walk_children(pio); in zio_reexecute()
1511 mutex_enter(&pio->io_lock); in zio_reexecute()
1513 pio->io_children[cio->io_child_type][w]++; in zio_reexecute()
1514 mutex_exit(&pio->io_lock); in zio_reexecute()
1523 if (!(pio->io_flags & ZIO_FLAG_GODFATHER)) in zio_reexecute()
1524 zio_execute(pio); in zio_reexecute()
1561 zio_t *pio; in zio_resume() local
1569 pio = spa->spa_suspend_zio_root; in zio_resume()
1573 if (pio == NULL) in zio_resume()
1576 zio_reexecute(pio); in zio_resume()
1577 return (zio_wait(pio)); in zio_resume()
1656 zio_read_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_read_gang() argument
1659 return (pio); in zio_read_gang()
1661 return (zio_read(pio, pio->io_spa, bp, data, BP_GET_PSIZE(bp), in zio_read_gang()
1662 NULL, NULL, pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), in zio_read_gang()
1663 &pio->io_bookmark)); in zio_read_gang()
1667 zio_rewrite_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_rewrite_gang() argument
1672 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp, in zio_rewrite_gang()
1673 gn->gn_gbh, SPA_GANGBLOCKSIZE, NULL, NULL, pio->io_priority, in zio_rewrite_gang()
1674 ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); in zio_rewrite_gang()
1684 if (gn != pio->io_gang_leader->io_gang_tree) { in zio_rewrite_gang()
1692 if (pio->io_gang_leader->io_flags & ZIO_FLAG_INDUCE_DAMAGE) in zio_rewrite_gang()
1695 zio = zio_rewrite(pio, pio->io_spa, pio->io_txg, bp, in zio_rewrite_gang()
1696 data, BP_GET_PSIZE(bp), NULL, NULL, pio->io_priority, in zio_rewrite_gang()
1697 ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); in zio_rewrite_gang()
1705 zio_free_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_free_gang() argument
1707 return (zio_free_sync(pio, pio->io_spa, pio->io_txg, bp, in zio_free_gang()
1708 ZIO_GANG_CHILD_FLAGS(pio))); in zio_free_gang()
1713 zio_claim_gang(zio_t *pio, blkptr_t *bp, zio_gang_node_t *gn, void *data) in zio_claim_gang() argument
1715 return (zio_claim(pio, pio->io_spa, pio->io_txg, bp, in zio_claim_gang()
1716 NULL, NULL, ZIO_GANG_CHILD_FLAGS(pio))); in zio_claim_gang()
1813 zio_gang_tree_issue(zio_t *pio, zio_gang_node_t *gn, blkptr_t *bp, void *data) in zio_gang_tree_issue() argument
1815 zio_t *gio = pio->io_gang_leader; in zio_gang_tree_issue()
1826 zio = zio_gang_issue_func[gio->io_type](pio, bp, gn, data); in zio_gang_tree_issue()
1843 if (zio != pio) in zio_gang_tree_issue()
1887 zio_t *pio = zio_unique_parent(zio); in zio_write_gang_member_ready() local
1890 dva_t *pdva = pio->io_bp->blk_dva; in zio_write_gang_member_ready()
1901 ASSERT3U(pio->io_prop.zp_copies, <=, BP_GET_NDVAS(pio->io_bp)); in zio_write_gang_member_ready()
1902 ASSERT3U(BP_GET_NDVAS(zio->io_bp), <=, BP_GET_NDVAS(pio->io_bp)); in zio_write_gang_member_ready()
1904 mutex_enter(&pio->io_lock); in zio_write_gang_member_ready()
1911 mutex_exit(&pio->io_lock); in zio_write_gang_member_ready()
1915 zio_write_gang_block(zio_t *pio) in zio_write_gang_block() argument
1917 spa_t *spa = pio->io_spa; in zio_write_gang_block()
1918 blkptr_t *bp = pio->io_bp; in zio_write_gang_block()
1919 zio_t *gio = pio->io_gang_leader; in zio_write_gang_block()
1923 uint64_t txg = pio->io_txg; in zio_write_gang_block()
1924 uint64_t resid = pio->io_size; in zio_write_gang_block()
1932 bp, gbh_copies, txg, pio == gio ? NULL : gio->io_bp, in zio_write_gang_block()
1935 pio->io_error = error; in zio_write_gang_block()
1939 if (pio == gio) { in zio_write_gang_block()
1942 gnpp = pio->io_private; in zio_write_gang_block()
1943 ASSERT(pio->io_ready == zio_write_gang_member_ready); in zio_write_gang_block()
1953 zio = zio_rewrite(pio, spa, txg, bp, gbh, SPA_GANGBLOCKSIZE, NULL, NULL, in zio_write_gang_block()
1954 pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), &pio->io_bookmark); in zio_write_gang_block()
1974 (char *)pio->io_data + (pio->io_size - resid), lsize, &zp, in zio_write_gang_block()
1976 pio->io_priority, ZIO_GANG_CHILD_FLAGS(pio), in zio_write_gang_block()
1977 &pio->io_bookmark)); in zio_write_gang_block()
1983 pio->io_pipeline = ZIO_INTERLOCK_PIPELINE; in zio_write_gang_block()
2057 zio_t *pio = zio_unique_parent(zio); in zio_ddt_child_read_done() local
2059 mutex_enter(&pio->io_lock); in zio_ddt_child_read_done()
2067 mutex_exit(&pio->io_lock); in zio_ddt_child_read_done()
2213 zio_t *pio; in zio_ddt_child_write_ready() local
2224 while ((pio = zio_walk_parents(zio)) != NULL) in zio_ddt_child_write_ready()
2225 ddt_bp_fill(ddp, pio->io_bp, zio->io_txg); in zio_ddt_child_write_ready()
2974 zio_t *pio, *pio_next; in zio_ready() local
2998 pio = zio_walk_parents(zio); in zio_ready()
3008 for (; pio != NULL; pio = pio_next) { in zio_ready()
3010 zio_notify_parent(pio, zio, ZIO_WAIT_READY); in zio_ready()
3037 zio_t *pio, *pio_next; in zio_done() local
3216 for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) { in zio_done()
3220 if ((pio->io_flags & ZIO_FLAG_GODFATHER) && in zio_done()
3222 zio_remove_child(pio, zio, zl); in zio_done()
3223 zio_notify_parent(pio, zio, ZIO_WAIT_DONE); in zio_done()
3227 if ((pio = zio_unique_parent(zio)) != NULL) { in zio_done()
3235 zio_notify_parent(pio, zio, ZIO_WAIT_DONE); in zio_done()
3282 for (pio = zio_walk_parents(zio); pio != NULL; pio = pio_next) { in zio_done()
3285 zio_remove_child(pio, zio, zl); in zio_done()
3286 zio_notify_parent(pio, zio, ZIO_WAIT_DONE); in zio_done()