Lines Matching refs:dr

1014 	dio_request_t *dr = kmem_zalloc(sizeof (dio_request_t) +  in vdev_classic_dio_alloc()  local
1016 atomic_set(&dr->dr_ref, 0); in vdev_classic_dio_alloc()
1017 dr->dr_bio_count = bio_count; in vdev_classic_dio_alloc()
1018 dr->dr_error = 0; in vdev_classic_dio_alloc()
1020 for (int i = 0; i < dr->dr_bio_count; i++) in vdev_classic_dio_alloc()
1021 dr->dr_bio[i] = NULL; in vdev_classic_dio_alloc()
1023 return (dr); in vdev_classic_dio_alloc()
1027 vdev_classic_dio_free(dio_request_t *dr) in vdev_classic_dio_free() argument
1031 for (i = 0; i < dr->dr_bio_count; i++) in vdev_classic_dio_free()
1032 if (dr->dr_bio[i]) in vdev_classic_dio_free()
1033 bio_put(dr->dr_bio[i]); in vdev_classic_dio_free()
1035 kmem_free(dr, sizeof (dio_request_t) + in vdev_classic_dio_free()
1036 sizeof (struct bio *) * dr->dr_bio_count); in vdev_classic_dio_free()
1040 vdev_classic_dio_get(dio_request_t *dr) in vdev_classic_dio_get() argument
1042 atomic_inc(&dr->dr_ref); in vdev_classic_dio_get()
1046 vdev_classic_dio_put(dio_request_t *dr) in vdev_classic_dio_put() argument
1048 int rc = atomic_dec_return(&dr->dr_ref); in vdev_classic_dio_put()
1055 zio_t *zio = dr->dr_zio; in vdev_classic_dio_put()
1056 int error = dr->dr_error; in vdev_classic_dio_put()
1058 vdev_classic_dio_free(dr); in vdev_classic_dio_put()
1073 dio_request_t *dr = bio->bi_private; in BIO_END_IO_PROTO() local
1075 if (dr->dr_error == 0) { in BIO_END_IO_PROTO()
1077 dr->dr_error = BIO_END_IO_ERROR(bio); in BIO_END_IO_PROTO()
1080 dr->dr_error = -(error); in BIO_END_IO_PROTO()
1082 dr->dr_error = EIO; in BIO_END_IO_PROTO()
1087 vdev_classic_dio_put(dr); in BIO_END_IO_PROTO()
1114 dio_request_t *dr; in vdev_classic_physio() local
1136 dr = vdev_classic_dio_alloc(bio_count); in vdev_classic_physio()
1144 dr->dr_zio = zio; in vdev_classic_physio()
1160 for (int i = 0; i <= dr->dr_bio_count; i++) { in vdev_classic_physio()
1170 if (dr->dr_bio_count == i) { in vdev_classic_physio()
1171 vdev_classic_dio_free(dr); in vdev_classic_physio()
1177 dr->dr_bio[i] = vdev_bio_alloc(bdev, GFP_NOIO, nr_vecs); in vdev_classic_physio()
1178 if (unlikely(dr->dr_bio[i] == NULL)) { in vdev_classic_physio()
1179 vdev_classic_dio_free(dr); in vdev_classic_physio()
1184 vdev_classic_dio_get(dr); in vdev_classic_physio()
1186 BIO_BI_SECTOR(dr->dr_bio[i]) = bio_offset >> 9; in vdev_classic_physio()
1187 dr->dr_bio[i]->bi_end_io = vdev_classic_physio_completion; in vdev_classic_physio()
1188 dr->dr_bio[i]->bi_private = dr; in vdev_classic_physio()
1189 bio_set_op_attrs(dr->dr_bio[i], rw, flags); in vdev_classic_physio()
1192 bio_size = abd_bio_map_off(dr->dr_bio[i], zio->io_abd, in vdev_classic_physio()
1196 abd_offset += BIO_BI_SIZE(dr->dr_bio[i]); in vdev_classic_physio()
1197 bio_offset += BIO_BI_SIZE(dr->dr_bio[i]); in vdev_classic_physio()
1201 vdev_classic_dio_get(dr); in vdev_classic_physio()
1203 if (dr->dr_bio_count > 1) in vdev_classic_physio()
1207 for (int i = 0; i < dr->dr_bio_count; i++) { in vdev_classic_physio()
1208 if (dr->dr_bio[i]) in vdev_classic_physio()
1209 vdev_submit_bio(dr->dr_bio[i]); in vdev_classic_physio()
1212 if (dr->dr_bio_count > 1) in vdev_classic_physio()
1215 vdev_classic_dio_put(dr); in vdev_classic_physio()