• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/

Lines Matching refs:zio

264 #include <sys/zio.h>
384 * log2 fraction of the zio arena to keep free.
1189 * compression, and is set in the arc's zio completion handlers.
2009 arc_cksum_is_equal(arc_buf_hdr_t *hdr, zio_t *zio)
2011 enum zio_compress compress = BP_GET_COMPRESS(zio->io_bp);
2014 ASSERT(!BP_IS_EMBEDDED(zio->io_bp));
2015 VERIFY3U(BP_GET_PSIZE(zio->io_bp), ==, HDR_GET_PSIZE(hdr));
2035 csize = zio_compress_data(compress, zio->io_abd,
2055 zio_push_transform(zio, cdata, csize, HDR_GET_PSIZE(hdr), NULL);
2062 * individual gang member. The zio pipeline, however, must be able to
2071 valid_cksum = (zio_checksum_error_impl(zio->io_spa, zio->io_bp,
2072 BP_GET_CHECKSUM(zio->io_bp), zio->io_abd, zio->io_size,
2073 zio->io_offset, NULL) == 0);
2074 zio_pop_transforms(zio);
4760 * If zio data pages are being allocated out of a separate heap segment,
5523 arc_bcopy_func(zio_t *zio, const zbookmark_phys_t *zb, const blkptr_t *bp,
5536 arc_getbuf_func(zio_t *zio, const zbookmark_phys_t *zb, const blkptr_t *bp,
5541 ASSERT(zio == NULL || zio->io_error != 0);
5544 ASSERT(zio == NULL || zio->io_error == 0);
5567 arc_read_done(zio_t *zio)
5569 arc_buf_hdr_t *hdr = zio->io_private;
5574 boolean_t no_zio_error = (zio->io_error == 0);
5585 ASSERT3U(hdr->b_birth, ==, BP_PHYSICAL_BIRTH(zio->io_bp));
5587 BP_IDENTITY(zio->io_bp)->dva_word[0]);
5589 BP_IDENTITY(zio->io_bp)->dva_word[1]);
5591 arc_buf_hdr_t *found = buf_hash_find(hdr->b_spa, zio->io_bp,
5595 DVA_EQUAL(&hdr->b_dva, BP_IDENTITY(zio->io_bp))) ||
5602 if (BP_SHOULD_BYTESWAP(zio->io_bp)) {
5603 if (BP_GET_LEVEL(zio->io_bp) > 0) {
5607 DMU_OT_BYTESWAP(BP_GET_TYPE(zio->io_bp));
5646 acb->acb_compressed, zio->io_error == 0,
5663 zio->io_error = error;
5688 arc_hdr_verify(hdr, zio->io_bp);
5721 if (zio->io_error != 0 && acb->acb_buf != NULL) {
5730 acb->acb_done(zio, &zio->io_bookmark, zio->io_bp,
5735 acb->acb_zio_dummy->io_error = zio->io_error;
5750 * callback immediately and return. Note that the `zio' parameter
5802 * zio have its priority upgraded.
6083 * Issue a null zio if the underlying buffer
6468 arc_write_ready(zio_t *zio)
6470 arc_write_callback_t *callback = zio->io_private;
6473 uint64_t psize = BP_IS_HOLE(zio->io_bp) ? 0 : BP_GET_PSIZE(zio->io_bp);
6480 * If we're reexecuting this zio because the pool suspended, then
6484 if (zio->io_flags & ZIO_FLAG_REEXECUTED) {
6501 callback->awcb_ready(zio, buf, callback->awcb_private);
6504 ASSERT(zio->io_flags & ZIO_FLAG_REEXECUTED);
6510 if (BP_IS_HOLE(zio->io_bp) || BP_IS_EMBEDDED(zio->io_bp)) {
6513 ASSERT3U(HDR_GET_LSIZE(hdr), ==, BP_GET_LSIZE(zio->io_bp));
6514 compress = BP_GET_COMPRESS(zio->io_bp);
6522 * is available from the zio, otherwise we can take it from the buf.
6541 ASSERT3U(BP_GET_COMPRESS(zio->io_bp), !=,
6545 abd_copy(hdr->b_l1hdr.b_pabd, zio->io_abd, psize);
6547 ASSERT3U(zio->io_orig_size, ==, arc_hdr_size(hdr));
6553 ASSERT3P(buf->b_data, ==, abd_to_buf(zio->io_orig_abd));
6554 ASSERT3U(zio->io_orig_size, ==, arc_buf_size(buf));
6560 arc_hdr_verify(hdr, zio->io_bp);
6564 arc_write_children_ready(zio_t *zio)
6566 arc_write_callback_t *callback = zio->io_private;
6569 callback->awcb_children_ready(zio, buf, callback->awcb_private);
6577 arc_write_physdone(zio_t *zio)
6579 arc_write_callback_t *cb = zio->io_private;
6581 cb->awcb_physdone(zio, cb->awcb_buf, cb->awcb_private);
6585 arc_write_done(zio_t *zio)
6587 arc_write_callback_t *callback = zio->io_private;
6593 if (zio->io_error == 0) {
6594 arc_hdr_verify(hdr, zio->io_bp);
6596 if (BP_IS_HOLE(zio->io_bp) || BP_IS_EMBEDDED(zio->io_bp)) {
6599 hdr->b_dva = *BP_IDENTITY(zio->io_bp);
6600 hdr->b_birth = BP_PHYSICAL_BIRTH(zio->io_bp);
6616 ASSERT3U(zio->io_error, ==, 0);
6627 if (zio->io_flags & ZIO_FLAG_IO_REWRITE) {
6628 if (!BP_EQUAL(&zio->io_bp_orig, zio->io_bp))
6638 } else if (zio->io_flags & ZIO_FLAG_NOPWRITE) {
6640 ASSERT(zio->io_prop.zp_nopwrite);
6641 if (!BP_EQUAL(&zio->io_bp_orig, zio->io_bp))
6648 ASSERT(BP_GET_DEDUP(zio->io_bp));
6649 ASSERT(BP_GET_LEVEL(zio->io_bp) == 0);
6662 callback->awcb_done(zio, buf, callback->awcb_private);
6664 abd_put(zio->io_abd);
6677 zio_t *zio;
6709 * will be allocated when the zio pipeline calls arc_write_ready().
6729 zio = zio_write(pio, spa, txg, bp,
6736 return (zio);
7709 l2arc_write_done(zio_t *zio)
7718 cb = zio->io_private;
7726 DTRACE_PROBE2(l2arc__iodone, zio_t *, zio,
7729 if (zio->io_error != 0)
7783 if (zio->io_error != 0) {
7826 l2arc_read_done(zio_t *zio)
7833 ASSERT3P(zio->io_vd, !=, NULL);
7834 ASSERT(zio->io_flags & ZIO_FLAG_DONT_PROPAGATE);
7836 spa_config_exit(zio->io_spa, SCL_L2ARC, zio->io_vd);
7838 cb = zio->io_private;
7852 ASSERT3U(arc_hdr_size(hdr), <, zio->io_size);
7853 if (zio->io_error == 0) {
7862 * - point zio to the real ARC buffer
7863 * - set zio size accordingly
7864 * These are required because zio is either re-used for
7866 * or the zio is passed to arc_read_done() and it
7870 zio->io_size = zio->io_orig_size = arc_hdr_size(hdr);
7871 zio->io_abd = zio->io_orig_abd = hdr->b_l1hdr.b_pabd;
7874 ASSERT3P(zio->io_abd, !=, NULL);
7879 ASSERT3P(zio->io_abd, ==, hdr->b_l1hdr.b_pabd);
7880 zio->io_bp_copy = cb->l2rcb_bp; /* XXX fix in L2ARC 2.0 */
7881 zio->io_bp = &zio->io_bp_copy; /* XXX fix in L2ARC 2.0 */
7883 valid_cksum = arc_cksum_is_equal(hdr, zio);
7884 if (valid_cksum && zio->io_error == 0 && !HDR_L2_EVICTED(hdr)) {
7886 zio->io_private = hdr;
7887 arc_read_done(zio);
7893 if (zio->io_error != 0) {
7896 zio->io_error = SET_ERROR(EIO);
7906 if (zio->io_waiter == NULL) {
7907 zio_t *pio = zio_unique_parent(zio);
7911 zio = zio_read(pio, zio->io_spa, zio->io_bp,
7912 hdr->b_l1hdr.b_pabd, zio->io_size, arc_read_done,
7913 hdr, zio->io_priority, cb->l2rcb_flags,
7917 acb->acb_zio_head = zio;
7919 zio_nowait(zio);