| @@ -797,28 +797,30 @@ dmu_read_uio(objset_t *os, uint64_t obje | | | @@ -797,28 +797,30 @@ dmu_read_uio(objset_t *os, uint64_t obje |
797 | dmu_buf_t **dbp; | | 797 | dmu_buf_t **dbp; |
798 | int numbufs, i, err; | | 798 | int numbufs, i, err; |
799 | xuio_t *xuio = NULL; | | 799 | xuio_t *xuio = NULL; |
800 | | | 800 | |
801 | /* | | 801 | /* |
802 | * NB: we could do this block-at-a-time, but it's nice | | 802 | * NB: we could do this block-at-a-time, but it's nice |
803 | * to be reading in parallel. | | 803 | * to be reading in parallel. |
804 | */ | | 804 | */ |
805 | err = dmu_buf_hold_array(os, object, uio->uio_loffset, size, TRUE, FTAG, | | 805 | err = dmu_buf_hold_array(os, object, uio->uio_loffset, size, TRUE, FTAG, |
806 | &numbufs, &dbp); | | 806 | &numbufs, &dbp); |
807 | if (err) | | 807 | if (err) |
808 | return (err); | | 808 | return (err); |
809 | | | 809 | |
| | | 810 | #ifndef __NetBSD__ /* XXX xuio */ |
810 | if (uio->uio_extflg == UIO_XUIO) | | 811 | if (uio->uio_extflg == UIO_XUIO) |
811 | xuio = (xuio_t *)uio; | | 812 | xuio = (xuio_t *)uio; |
| | | 813 | #endif |
812 | | | 814 | |
813 | for (i = 0; i < numbufs; i++) { | | 815 | for (i = 0; i < numbufs; i++) { |
814 | int tocpy; | | 816 | int tocpy; |
815 | int bufoff; | | 817 | int bufoff; |
816 | dmu_buf_t *db = dbp[i]; | | 818 | dmu_buf_t *db = dbp[i]; |
817 | | | 819 | |
818 | ASSERT(size > 0); | | 820 | ASSERT(size > 0); |
819 | | | 821 | |
820 | bufoff = uio->uio_loffset - db->db_offset; | | 822 | bufoff = uio->uio_loffset - db->db_offset; |
821 | tocpy = (int)MIN(db->db_size - bufoff, size); | | 823 | tocpy = (int)MIN(db->db_size - bufoff, size); |
822 | | | 824 | |
823 | if (xuio) { | | 825 | if (xuio) { |
824 | dmu_buf_impl_t *dbi = (dmu_buf_impl_t *)db; | | 826 | dmu_buf_impl_t *dbi = (dmu_buf_impl_t *)db; |