Lines Matching refs:dio

648 	zio_t *first, *last, *aio, *dio, *mandatory, *nio;  in vdev_queue_aggregate()  local
708 while ((dio = AVL_PREV(t, first)) != NULL && in vdev_queue_aggregate()
709 (dio->io_flags & ZIO_FLAG_AGG_INHERIT) == flags && in vdev_queue_aggregate()
710 IO_SPAN(dio, last) <= limit && in vdev_queue_aggregate()
711 IO_GAP(dio, first) <= maxgap && in vdev_queue_aggregate()
712 dio->io_type == zio->io_type) { in vdev_queue_aggregate()
713 first = dio; in vdev_queue_aggregate()
733 while ((dio = AVL_NEXT(t, last)) != NULL && in vdev_queue_aggregate()
734 (dio->io_flags & ZIO_FLAG_AGG_INHERIT) == flags && in vdev_queue_aggregate()
735 (IO_SPAN(first, dio) <= limit || in vdev_queue_aggregate()
736 (dio->io_flags & ZIO_FLAG_OPTIONAL)) && in vdev_queue_aggregate()
737 IO_SPAN(first, dio) <= maxblocksize && in vdev_queue_aggregate()
738 IO_GAP(last, dio) <= maxgap && in vdev_queue_aggregate()
739 dio->io_type == zio->io_type) { in vdev_queue_aggregate()
740 last = dio; in vdev_queue_aggregate()
757 while ((dio = AVL_NEXT(t, nio)) != NULL && in vdev_queue_aggregate()
758 IO_GAP(nio, dio) == 0 && in vdev_queue_aggregate()
759 IO_GAP(mandatory, dio) <= zfs_vdev_write_gap_limit) { in vdev_queue_aggregate()
760 nio = dio; in vdev_queue_aggregate()
775 dio = AVL_NEXT(t, last); in vdev_queue_aggregate()
776 dio->io_flags &= ~ZIO_FLAG_OPTIONAL; in vdev_queue_aggregate()
805 dio = nio; in vdev_queue_aggregate()
806 nio = AVL_NEXT(t, dio); in vdev_queue_aggregate()
807 zio_add_child(dio, aio); in vdev_queue_aggregate()
808 vdev_queue_io_remove(vq, dio); in vdev_queue_aggregate()
810 if (dio->io_offset != next_offset) { in vdev_queue_aggregate()
812 ASSERT3U(dio->io_type, ==, ZIO_TYPE_READ); in vdev_queue_aggregate()
813 ASSERT3U(dio->io_offset, >, next_offset); in vdev_queue_aggregate()
815 dio->io_offset - next_offset, B_TRUE); in vdev_queue_aggregate()
818 if (dio->io_abd && in vdev_queue_aggregate()
819 (dio->io_size != abd_get_size(dio->io_abd))) { in vdev_queue_aggregate()
821 ASSERT3U(abd_get_size(dio->io_abd), >, dio->io_size); in vdev_queue_aggregate()
822 abd = abd_get_offset_size(dio->io_abd, 0, dio->io_size); in vdev_queue_aggregate()
825 if (dio->io_flags & ZIO_FLAG_NODATA) { in vdev_queue_aggregate()
827 ASSERT3U(dio->io_type, ==, ZIO_TYPE_WRITE); in vdev_queue_aggregate()
828 ASSERT3P(dio->io_abd, ==, NULL); in vdev_queue_aggregate()
830 abd_get_zeros(dio->io_size), B_TRUE); in vdev_queue_aggregate()
838 abd_gang_add(aio->io_abd, dio->io_abd, in vdev_queue_aggregate()
842 next_offset = dio->io_offset + dio->io_size; in vdev_queue_aggregate()
843 } while (dio != last); in vdev_queue_aggregate()
852 while ((dio = zio_walk_parents(aio, &zl)) != NULL) { in vdev_queue_aggregate()
853 ASSERT3U(dio->io_type, ==, aio->io_type); in vdev_queue_aggregate()
855 zio_vdev_io_bypass(dio); in vdev_queue_aggregate()
856 zio_execute(dio); in vdev_queue_aggregate()