Home | History | Annotate | Download | only in zfs

Lines Matching defs:zio

247 #include <sys/zio.h>
1045 * compression, and is set in the arc's zio completion handlers.
1764 arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio)
1766 enum zio_compress compress = BP_GET_COMPRESS(zio->io_bp);
1769 ASSERT(!BP_IS_EMBEDDED(zio->io_bp));
1770 VERIFY3U(BP_GET_PSIZE(zio->io_bp), ==, HDR_GET_PSIZE(hdr));
1790 csize = zio_compress_data(compress, zio->io_data, cbuf, lsize);
1808 zio_push_transform(zio, cbuf, csize, HDR_GET_PSIZE(hdr), NULL);
1815 * individual gang member. The zio pipeline, however, must be able to
1824 valid_cksum = (zio_checksum_error_impl(zio->io_spa, zio->io_bp,
1825 BP_GET_CHECKSUM(zio->io_bp), zio->io_data, zio->io_size,
1826 zio->io_offset, NULL) == 0);
1827 zio_pop_transforms(zio);
3992 * If zio data pages are being allocated out of a separate heap segment,
4635 arc_bcopy_func(zio_t *zio, arc_buf_t *buf, void *arg)
4637 if (zio == NULL || zio->io_error == 0)
4644 arc_getbuf_func(zio_t *zio, arc_buf_t *buf, void *arg)
4647 if (zio && zio->io_error) {
4673 arc_read_done(zio_t *zio)
4675 arc_buf_hdr_t *hdr = zio->io_private;
4690 ASSERT3U(hdr->b_birth, ==, BP_PHYSICAL_BIRTH(zio->io_bp));
4692 BP_IDENTITY(zio->io_bp)->dva_word[0]);
4694 BP_IDENTITY(zio->io_bp)->dva_word[1]);
4696 arc_buf_hdr_t *found = buf_hash_find(hdr->b_spa, zio->io_bp,
4700 DVA_EQUAL(&hdr->b_dva, BP_IDENTITY(zio->io_bp))) ||
4705 if (zio->io_error == 0) {
4707 if (BP_SHOULD_BYTESWAP(zio->io_bp)) {
4708 if (BP_GET_LEVEL(zio->io_bp) > 0) {
4712 DMU_OT_BYTESWAP(BP_GET_TYPE(zio->io_bp));
4726 if (hash_lock && zio->io_error == 0 &&
4752 if (zio->io_error == 0) {
4753 zio->io_error =
4778 if (zio->io_error == 0) {
4779 arc_hdr_verify(hdr, zio->io_bp);
4812 acb->acb_done(zio, acb->acb_buf, acb->acb_private);
4815 acb->acb_zio_dummy->io_error = zio->io_error;
4830 * callback immediately and return. Note that the `zio' parameter
5159 * Issue a null zio if the underlying buffer
5498 arc_write_ready(zio_t *zio)
5500 arc_write_callback_t *callback = zio->io_private;
5503 uint64_t psize = BP_IS_HOLE(zio->io_bp) ? 0 : BP_GET_PSIZE(zio->io_bp);
5510 * If we're reexecuting this zio because the pool suspended, then
5514 if (zio->io_flags & ZIO_FLAG_REEXECUTED) {
5533 callback->awcb_ready(zio, buf, callback->awcb_private);
5536 ASSERT(zio->io_flags & ZIO_FLAG_REEXECUTED);
5542 if (BP_IS_HOLE(zio->io_bp) || BP_IS_EMBEDDED(zio->io_bp)) {
5545 ASSERT3U(HDR_GET_LSIZE(hdr), ==, BP_GET_LSIZE(zio->io_bp));
5546 compress = BP_GET_COMPRESS(zio->io_bp);
5553 * zio contents into arc_buf_hdr_t. Otherwise, copy the original
5560 ASSERT(BP_GET_COMPRESS(zio->io_bp) != ZIO_COMPRESS_OFF);
5563 bcopy(zio->io_data, hdr->b_l1hdr.b_pdata, psize);
5565 ASSERT3P(buf->b_data, ==, zio->io_orig_data);
5566 ASSERT3U(zio->io_orig_size, ==, HDR_GET_LSIZE(hdr));
5578 VERIFY0(bcmp(zio->io_orig_data, hdr->b_l1hdr.b_pdata,
5581 arc_hdr_verify(hdr, zio->io_bp);
5585 arc_write_children_ready(zio_t *zio)
5587 arc_write_callback_t *callback = zio->io_private;
5590 callback->awcb_children_ready(zio, buf, callback->awcb_private);
5598 arc_write_physdone(zio_t *zio)
5600 arc_write_callback_t *cb = zio->io_private;
5602 cb->awcb_physdone(zio, cb->awcb_buf, cb->awcb_private);
5606 arc_write_done(zio_t *zio)
5608 arc_write_callback_t *callback = zio->io_private;
5614 if (zio->io_error == 0) {
5615 arc_hdr_verify(hdr, zio->io_bp);
5617 if (BP_IS_HOLE(zio->io_bp) || BP_IS_EMBEDDED(zio->io_bp)) {
5620 hdr->b_dva = *BP_IDENTITY(zio->io_bp);
5621 hdr->b_birth = BP_PHYSICAL_BIRTH(zio->io_bp);
5637 ASSERT(zio->io_error == 0);
5648 if (zio->io_flags & ZIO_FLAG_IO_REWRITE) {
5649 if (!BP_EQUAL(&zio->io_bp_orig, zio->io_bp))
5659 } else if (zio->io_flags & ZIO_FLAG_NOPWRITE) {
5661 ASSERT(zio->io_prop.zp_nopwrite);
5662 if (!BP_EQUAL(&zio->io_bp_orig, zio->io_bp))
5669 ASSERT(BP_GET_DEDUP(zio->io_bp));
5670 ASSERT(BP_GET_LEVEL(zio->io_bp) == 0);
5683 callback->awcb_done(zio, buf, callback->awcb_private);
5697 zio_t *zio;
5717 * will be allocated when the zio pipeline calls arc_write_ready().
5738 zio = zio_write(pio, spa, txg, bp, buf->b_data, HDR_GET_LSIZE(hdr), zp,
5744 return (zio);
6638 l2arc_write_done(zio_t *zio)
6647 cb = zio->io_private;
6655 DTRACE_PROBE2(l2arc__iodone, zio_t *, zio,
6658 if (zio->io_error != 0)
6712 if (zio->io_error != 0) {
6755 l2arc_read_done(zio_t *zio)
6762 ASSERT3P(zio->io_vd, !=, NULL);
6763 ASSERT(zio->io_flags & ZIO_FLAG_DONT_PROPAGATE);
6765 spa_config_exit(zio->io_spa, SCL_L2ARC, zio->io_vd);
6767 cb = zio->io_private;
6781 ASSERT3U(arc_hdr_size(hdr), <, zio->io_size);
6782 if (zio->io_error == 0) {
6791 * - point zio to the real ARC buffer
6792 * - set zio size accordingly
6793 * These are required because zio is either re-used for
6795 * or the zio is passed to arc_read_done() and it
6798 zio_data_buf_free(cb->l2rcb_data, zio->io_size);
6799 zio->io_size = zio->io_orig_size = arc_hdr_size(hdr);
6800 zio->io_data = zio->io_orig_data = hdr->b_l1hdr.b_pdata;
6803 ASSERT3P(zio->io_data, !=, NULL);
6808 ASSERT3P(zio->io_data, ==, hdr->b_l1hdr.b_pdata);
6809 zio->io_bp_copy = cb->l2rcb_bp; /* XXX fix in L2ARC 2.0 */
6810 zio->io_bp = &zio->io_bp_copy; /* XXX fix in L2ARC 2.0 */
6812 valid_cksum = arc_cksum_is_equal(hdr, zio);
6813 if (valid_cksum && zio->io_error == 0 && !HDR_L2_EVICTED(hdr)) {
6815 zio->io_private = hdr;
6816 arc_read_done(zio);
6823 if (zio->io_error != 0) {
6826 zio->io_error = SET_ERROR(EIO);
6836 if (zio->io_waiter == NULL) {
6837 zio_t *pio = zio_unique_parent(zio);
6841 zio_nowait(zio_read(pio, zio->io_spa, zio->io_bp,
6842 hdr->b_l1hdr.b_pdata, zio->io_size, arc_read_done,
6843 hdr, zio->io_priority, cb->l2rcb_flags,
7154 * the ZIO below can't race with the buf consumer. To
7156 * lifetime of the ZIO and be cleaned up afterwards, we