Lines Matching full:p

106 static int multifd_uadk_send_setup(MultiFDSendParams *p, Error **errp)  in multifd_uadk_send_setup()  argument
117 p->compress_data = wd; in multifd_uadk_send_setup()
118 assert(p->iov == NULL); in multifd_uadk_send_setup()
125 p->iov = g_new0(struct iovec, page_count + 2); in multifd_uadk_send_setup()
129 static void multifd_uadk_send_cleanup(MultiFDSendParams *p, Error **errp) in multifd_uadk_send_cleanup() argument
131 struct wd_data *wd = p->compress_data; in multifd_uadk_send_cleanup()
134 p->compress_data = NULL; in multifd_uadk_send_cleanup()
135 g_free(p->iov); in multifd_uadk_send_cleanup()
136 p->iov = NULL; in multifd_uadk_send_cleanup()
139 static inline void prepare_next_iov(MultiFDSendParams *p, void *base, in prepare_next_iov() argument
142 p->iov[p->iovs_num].iov_base = (uint8_t *)base; in prepare_next_iov()
143 p->iov[p->iovs_num].iov_len = len; in prepare_next_iov()
144 p->next_packet_size += len; in prepare_next_iov()
145 p->iovs_num++; in prepare_next_iov()
148 static int multifd_uadk_send_prepare(MultiFDSendParams *p, Error **errp) in multifd_uadk_send_prepare() argument
150 struct wd_data *uadk_data = p->compress_data; in multifd_uadk_send_prepare()
155 MultiFDPages_t *pages = &p->data->u.ram; in multifd_uadk_send_prepare()
157 if (!multifd_send_prepare_common(p)) { in multifd_uadk_send_prepare()
163 prepare_next_iov(p, uadk_data->buf_hdr, hdr_size); in multifd_uadk_send_prepare()
179 p->id, ret, creq.status); in multifd_uadk_send_prepare()
184 prepare_next_iov(p, buf, creq.dst_len); in multifd_uadk_send_prepare()
196 prepare_next_iov(p, pages->block->host + pages->offset[i], in multifd_uadk_send_prepare()
202 p->flags |= MULTIFD_FLAG_UADK; in multifd_uadk_send_prepare()
203 multifd_send_fill_packet(p); in multifd_uadk_send_prepare()
207 static int multifd_uadk_recv_setup(MultiFDRecvParams *p, Error **errp) in multifd_uadk_recv_setup() argument
217 p->compress_data = wd; in multifd_uadk_recv_setup()
221 static void multifd_uadk_recv_cleanup(MultiFDRecvParams *p) in multifd_uadk_recv_cleanup() argument
223 struct wd_data *wd = p->compress_data; in multifd_uadk_recv_cleanup()
226 p->compress_data = NULL; in multifd_uadk_recv_cleanup()
229 static int multifd_uadk_recv(MultiFDRecvParams *p, Error **errp) in multifd_uadk_recv() argument
231 struct wd_data *uadk_data = p->compress_data; in multifd_uadk_recv()
232 uint32_t in_size = p->next_packet_size; in multifd_uadk_recv()
233 uint32_t flags = p->flags & MULTIFD_FLAG_COMPRESSION_MASK; in multifd_uadk_recv()
234 uint32_t hdr_len = p->normal_num * sizeof(uint32_t); in multifd_uadk_recv()
242 p->id, flags, MULTIFD_FLAG_ZLIB); in multifd_uadk_recv()
246 multifd_recv_zero_page_process(p); in multifd_uadk_recv()
247 if (!p->normal_num) { in multifd_uadk_recv()
254 ret = qio_channel_read_all(p->c, (void *) uadk_data->buf_hdr, in multifd_uadk_recv()
260 for (int i = 0; i < p->normal_num; i++) { in multifd_uadk_recv()
268 ret = qio_channel_read_all(p->c, (void *)buf, data_len, errp); in multifd_uadk_recv()
273 for (int i = 0; i < p->normal_num; i++) { in multifd_uadk_recv()
278 .dst = p->host + p->normal[i], in multifd_uadk_recv()
283 memcpy(p->host + p->normal[i], buf, page_size); in multifd_uadk_recv()
290 p->id); in multifd_uadk_recv()
297 p->id, ret, creq.status); in multifd_uadk_recv()
301 error_setg(errp, "multifd %u: decompressed length error", p->id); in multifd_uadk_recv()