Lines Matching defs:aiter

483 abd_iter_init(struct abd_iter *aiter, abd_t *abd)
487 memset(aiter, 0, sizeof (struct abd_iter));
488 aiter->iter_abd = abd;
496 abd_iter_at_end(struct abd_iter *aiter)
498 return (aiter->iter_pos == aiter->iter_abd->abd_size);
503 * in use. This can be safely called when the aiter has already exhausted, in
507 abd_iter_advance(struct abd_iter *aiter, size_t amount)
509 ASSERT3P(aiter->iter_mapaddr, ==, NULL);
510 ASSERT0(aiter->iter_mapsize);
513 if (abd_iter_at_end(aiter))
516 aiter->iter_pos += amount;
520 * Map the current chunk into aiter. This can be safely called when the aiter
524 abd_iter_map(struct abd_iter *aiter)
528 ASSERT3P(aiter->iter_mapaddr, ==, NULL);
529 ASSERT0(aiter->iter_mapsize);
532 if (abd_iter_at_end(aiter))
535 abd_t *abd = aiter->iter_abd;
536 size_t offset = aiter->iter_pos;
538 aiter->iter_mapsize = abd->abd_size - offset;
541 aiter->sf = NULL;
545 aiter->iter_mapsize = MIN(PAGE_SIZE - offset,
546 abd->abd_size - aiter->iter_pos);
548 ABD_SCATTER(aiter->iter_abd).abd_chunks[index],
549 &aiter->sf);
554 aiter->iter_mapsize = MIN(PAGE_SIZE - offset,
555 abd->abd_size - aiter->iter_pos);
557 aiter->iter_mapaddr = (char *)paddr + offset;
561 * Unmap the current chunk from aiter. This can be safely called when the aiter
565 abd_iter_unmap(struct abd_iter *aiter)
567 if (!abd_iter_at_end(aiter)) {
568 ASSERT3P(aiter->iter_mapaddr, !=, NULL);
569 ASSERT3U(aiter->iter_mapsize, >, 0);
572 if (abd_is_from_pages(aiter->iter_abd) &&
573 !abd_is_linear_page(aiter->iter_abd)) {
574 ASSERT3P(aiter->sf, !=, NULL);
575 zfs_unmap_page(aiter->sf);
578 aiter->iter_mapaddr = NULL;
579 aiter->iter_mapsize = 0;