Lines Matching refs:rrd

1828 	struct receive_record_arg *rrd;
2446 /* note: rrd is NULL when reading the begin record's payload */
2447 if (ra->rrd != NULL) {
2448 ra->rrd->payload = buf;
2449 ra->rrd->payload_size = len;
2450 ra->rrd->bytes_read = ra->bytes_read;
2597 switch (ra->rrd->header.drr_type) {
2600 struct drr_object *drro = &ra->rrd->header.drr_u.drr_object;
2628 struct drr_write *drrw = &ra->rrd->header.drr_u.drr_write;
2651 ra->rrd->write_buf = abuf;
2659 &ra->rrd->header.drr_u.drr_write_byref;
2668 &ra->rrd->header.drr_u.drr_write_embedded;
2693 struct drr_end *drre = &ra->rrd->header.drr_u.drr_end;
2700 struct drr_spill *drrs = &ra->rrd->header.drr_u.drr_spill;
2718 struct receive_record_arg *rrd)
2723 ASSERT3U(rrd->bytes_read, >=, rwa->bytes_read);
2724 rwa->bytes_read = rrd->bytes_read;
2726 switch (rrd->header.drr_type) {
2729 struct drr_object *drro = &rrd->header.drr_u.drr_object;
2730 err = receive_object(rwa, drro, rrd->payload);
2731 kmem_free(rrd->payload, rrd->payload_size);
2732 rrd->payload = NULL;
2738 &rrd->header.drr_u.drr_freeobjects;
2743 struct drr_write *drrw = &rrd->header.drr_u.drr_write;
2744 err = receive_write(rwa, drrw, rrd->write_buf);
2747 dmu_return_arcbuf(rrd->write_buf);
2748 rrd->write_buf = NULL;
2749 rrd->payload = NULL;
2755 &rrd->header.drr_u.drr_write_byref;
2761 &rrd->header.drr_u.drr_write_embedded;
2762 err = receive_write_embedded(rwa, drrwe, rrd->payload);
2763 kmem_free(rrd->payload, rrd->payload_size);
2764 rrd->payload = NULL;
2769 struct drr_free *drrf = &rrd->header.drr_u.drr_free;
2774 struct drr_spill *drrs = &rrd->header.drr_u.drr_spill;
2775 err = receive_spill(rwa, drrs, rrd->payload);
2776 kmem_free(rrd->payload, rrd->payload_size);
2777 rrd->payload = NULL;
2793 struct receive_record_arg *rrd;
2794 for (rrd = bqueue_dequeue(&rwa->q); !rrd->eos_marker;
2795 rrd = bqueue_dequeue(&rwa->q)) {
2802 rwa->err = receive_process_record(rwa, rrd);
2803 } else if (rrd->write_buf != NULL) {
2804 dmu_return_arcbuf(rrd->write_buf);
2805 rrd->write_buf = NULL;
2806 rrd->payload = NULL;
2807 } else if (rrd->payload != NULL) {
2808 kmem_free(rrd->payload, rrd->payload_size);
2809 rrd->payload = NULL;
2811 kmem_free(rrd, sizeof (*rrd));
2813 kmem_free(rrd, sizeof (*rrd));
2972 * non-zero. In that case, the writer thread will free the rrd we just
2974 * first loop and ra.rrd was never allocated, or it's later, and ra.rrd
2977 * we free ra.rrd and exit.
2985 ASSERT3P(ra.rrd, ==, NULL);
2986 ra.rrd = ra.next_rrd;
2991 if (ra.rrd->header.drr_type == DRR_END || err != 0) {
2992 kmem_free(ra.rrd, sizeof (*ra.rrd));
2993 ra.rrd = NULL;
2997 bqueue_enqueue(&rwa.q, ra.rrd,
2998 sizeof (struct receive_record_arg) + ra.rrd->payload_size);
2999 ra.rrd = NULL;