Lines Matching defs:sabd
334 abd_alloc_sametype(abd_t *sabd, size_t size)
336 boolean_t is_metadata = (sabd->abd_flags & ABD_FLAG_META) != 0;
337 if (abd_is_linear(sabd) &&
338 !abd_is_linear_page(sabd)) {
509 * point to offset off of sabd. It shares the underlying buffer data with sabd.
510 * Use abd_free() to free. sabd must not be freed while any derived ABDs exist.
513 abd_get_offset_impl(abd_t *abd, abd_t *sabd, size_t off, size_t size)
515 abd_verify(sabd);
516 ASSERT3U(off + size, <=, sabd->abd_size);
518 if (abd_is_linear(sabd)) {
538 if (abd_is_from_pages(sabd)) {
543 ABD_LINEAR_BUF(abd) = (char *)ABD_LINEAR_BUF(sabd) + off;
544 } else if (abd_is_gang(sabd)) {
555 for (abd_t *cabd = abd_gang_get_offset(sabd, &off);
557 cabd = list_next(&ABD_GANG(sabd).abd_gang_chain, cabd)) {
567 abd = abd_get_offset_scatter(abd, sabd, off, size);
573 abd->abd_parent = sabd;
574 (void) zfs_refcount_add_many(&sabd->abd_children, abd->abd_size, abd);
584 * if sabd is scatter and size is more than 2 pages) a new abd_t may need to
589 abd_get_offset_struct(abd_t *abd, abd_t *sabd, size_t off, size_t size)
593 result = abd_get_offset_impl(abd, sabd, off, size);
600 abd_get_offset(abd_t *sabd, size_t off)
602 size_t size = sabd->abd_size > off ? sabd->abd_size - off : 0;
604 return (abd_get_offset_impl(NULL, sabd, off, size));
608 abd_get_offset_size(abd_t *sabd, size_t off, size_t size)
610 ASSERT3U(off + size, <=, sabd->abd_size);
611 return (abd_get_offset_impl(NULL, sabd, off, size));
935 abd_iterate_func2(abd_t *dabd, abd_t *sabd, size_t doff, size_t soff,
946 abd_verify(sabd);
949 ASSERT3U(soff + size, <=, sabd->abd_size);
952 c_sabd = abd_init_abd_iter(sabd, &saiter, soff);
956 IMPLY(abd_is_gang(sabd), c_sabd != NULL);
979 abd_advance_abd_iter(sabd, c_sabd, &saiter, len);
994 * Copy from sabd to dabd starting from soff and doff.
997 abd_copy_off(abd_t *dabd, abd_t *sabd, size_t doff, size_t soff, size_t size)
999 (void) abd_iterate_func2(dabd, sabd, doff, soff, size,
1014 abd_cmp(abd_t *dabd, abd_t *sabd)
1016 ASSERT3U(dabd->abd_size, ==, sabd->abd_size);
1017 return (abd_iterate_func2(dabd, sabd, 0, 0, dabd->abd_size,