Lines Matching refs:dr
1011 dio_request_t *dr = kmem_zalloc(sizeof (dio_request_t) + in vdev_classic_dio_alloc() local
1013 atomic_set(&dr->dr_ref, 0); in vdev_classic_dio_alloc()
1014 dr->dr_bio_count = bio_count; in vdev_classic_dio_alloc()
1015 dr->dr_error = 0; in vdev_classic_dio_alloc()
1017 for (int i = 0; i < dr->dr_bio_count; i++) in vdev_classic_dio_alloc()
1018 dr->dr_bio[i] = NULL; in vdev_classic_dio_alloc()
1020 return (dr); in vdev_classic_dio_alloc()
1024 vdev_classic_dio_free(dio_request_t *dr) in vdev_classic_dio_free() argument
1028 for (i = 0; i < dr->dr_bio_count; i++) in vdev_classic_dio_free()
1029 if (dr->dr_bio[i]) in vdev_classic_dio_free()
1030 bio_put(dr->dr_bio[i]); in vdev_classic_dio_free()
1032 kmem_free(dr, sizeof (dio_request_t) + in vdev_classic_dio_free()
1033 sizeof (struct bio *) * dr->dr_bio_count); in vdev_classic_dio_free()
1037 vdev_classic_dio_get(dio_request_t *dr) in vdev_classic_dio_get() argument
1039 atomic_inc(&dr->dr_ref); in vdev_classic_dio_get()
1043 vdev_classic_dio_put(dio_request_t *dr) in vdev_classic_dio_put() argument
1045 int rc = atomic_dec_return(&dr->dr_ref); in vdev_classic_dio_put()
1052 zio_t *zio = dr->dr_zio; in vdev_classic_dio_put()
1053 int error = dr->dr_error; in vdev_classic_dio_put()
1055 vdev_classic_dio_free(dr); in vdev_classic_dio_put()
1070 dio_request_t *dr = bio->bi_private; in BIO_END_IO_PROTO() local
1072 if (dr->dr_error == 0) { in BIO_END_IO_PROTO()
1074 dr->dr_error = BIO_END_IO_ERROR(bio); in BIO_END_IO_PROTO()
1077 dr->dr_error = -(error); in BIO_END_IO_PROTO()
1079 dr->dr_error = EIO; in BIO_END_IO_PROTO()
1084 vdev_classic_dio_put(dr); in BIO_END_IO_PROTO()
1111 dio_request_t *dr; in vdev_classic_physio() local
1133 dr = vdev_classic_dio_alloc(bio_count); in vdev_classic_physio()
1141 dr->dr_zio = zio; in vdev_classic_physio()
1157 for (int i = 0; i <= dr->dr_bio_count; i++) { in vdev_classic_physio()
1167 if (dr->dr_bio_count == i) { in vdev_classic_physio()
1168 vdev_classic_dio_free(dr); in vdev_classic_physio()
1174 dr->dr_bio[i] = vdev_bio_alloc(bdev, GFP_NOIO, nr_vecs); in vdev_classic_physio()
1175 if (unlikely(dr->dr_bio[i] == NULL)) { in vdev_classic_physio()
1176 vdev_classic_dio_free(dr); in vdev_classic_physio()
1181 vdev_classic_dio_get(dr); in vdev_classic_physio()
1183 BIO_BI_SECTOR(dr->dr_bio[i]) = bio_offset >> 9; in vdev_classic_physio()
1184 dr->dr_bio[i]->bi_end_io = vdev_classic_physio_completion; in vdev_classic_physio()
1185 dr->dr_bio[i]->bi_private = dr; in vdev_classic_physio()
1186 bio_set_op_attrs(dr->dr_bio[i], rw, flags); in vdev_classic_physio()
1189 bio_size = abd_bio_map_off(dr->dr_bio[i], zio->io_abd, in vdev_classic_physio()
1193 abd_offset += BIO_BI_SIZE(dr->dr_bio[i]); in vdev_classic_physio()
1194 bio_offset += BIO_BI_SIZE(dr->dr_bio[i]); in vdev_classic_physio()
1198 vdev_classic_dio_get(dr); in vdev_classic_physio()
1200 if (dr->dr_bio_count > 1) in vdev_classic_physio()
1204 for (int i = 0; i < dr->dr_bio_count; i++) { in vdev_classic_physio()
1205 if (dr->dr_bio[i]) in vdev_classic_physio()
1206 vdev_submit_bio(dr->dr_bio[i]); in vdev_classic_physio()
1209 if (dr->dr_bio_count > 1) in vdev_classic_physio()
1212 vdev_classic_dio_put(dr); in vdev_classic_physio()