Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
---
hw/usb/redirect.c | 59 ++++++++++++++++++++++++++---------------------
1 file changed, 33 insertions(+), 26 deletions(-)
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index dfd9e8bb50c..f4196b944d5 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -2267,8 +2267,9 @@ static int usbredir_post_load(void *priv, int version_id)
}
/* For usbredirparser migration */
-static int usbredir_put_parser(QEMUFile *f, void *priv, size_t unused,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool usbredir_save_parser(QEMUFile *f, void *priv, size_t unused,
+ const VMStateField *field,
+ JSONWriter *vmdesc, Error **errp)
{
USBRedirDevice *dev = priv;
uint8_t *data;
@@ -2276,7 +2277,7 @@ static int usbredir_put_parser(QEMUFile *f, void *priv,
size_t unused,
if (dev->parser == NULL) {
qemu_put_be32(f, 0);
- return 0;
+ return true;
}
usbredirparser_serialize(dev->parser, &data, &len);
@@ -2290,11 +2291,11 @@ static int usbredir_put_parser(QEMUFile *f, void *priv,
size_t unused,
free(data);
- return 0;
+ return true;
}
-static int usbredir_get_parser(QEMUFile *f, void *priv, size_t unused,
- const VMStateField *field)
+static bool usbredir_load_parser(QEMUFile *f, void *priv, size_t unused,
+ const VMStateField *field, Error **errp)
{
USBRedirDevice *dev = priv;
uint8_t *data;
@@ -2302,7 +2303,7 @@ static int usbredir_get_parser(QEMUFile *f, void *priv,
size_t unused,
len = qemu_get_be32(f);
if (len == 0) {
- return 0;
+ return true;
}
/*
@@ -2326,19 +2327,25 @@ static int usbredir_get_parser(QEMUFile *f, void *priv,
size_t unused,
g_free(data);
- return ret;
+ if (ret) {
+ error_setg(errp, "usbredirparser_unserialize failed");
+ return false;
+ }
+
+ return true;
}
static const VMStateInfo usbredir_parser_vmstate_info = {
.name = "usb-redir-parser",
- .put = usbredir_put_parser,
- .get = usbredir_get_parser,
+ .save = usbredir_save_parser,
+ .load = usbredir_load_parser,
};
/* For buffered packets (iso/irq) queue migration */
-static int usbredir_put_bufpq(QEMUFile *f, void *priv, size_t unused,
- const VMStateField *field, JSONWriter *vmdesc)
+static bool usbredir_save_bufpq(QEMUFile *f, void *priv, size_t unused,
+ const VMStateField *field,
+ JSONWriter *vmdesc, Error **errp)
{
struct endp_data *endp = priv;
USBRedirDevice *dev = endp->dev;
@@ -2357,11 +2364,11 @@ static int usbredir_put_bufpq(QEMUFile *f, void *priv,
size_t unused,
}
assert(i == endp->bufpq_size);
- return 0;
+ return true;
}
-static int usbredir_get_bufpq(QEMUFile *f, void *priv, size_t unused,
- const VMStateField *field)
+static bool usbredir_load_bufpq(QEMUFile *f, void *priv, size_t unused,
+ const VMStateField *field, Error **errp)
{
struct endp_data *endp = priv;
USBRedirDevice *dev = endp->dev;
@@ -2385,13 +2392,13 @@ static int usbredir_get_bufpq(QEMUFile *f, void *priv,
size_t unused,
DPRINTF("get_bufpq %d/%d len %d status %d\n", i + 1, endp->bufpq_size,
bufp->len, bufp->status);
}
- return 0;
+ return true;
}
static const VMStateInfo usbredir_ep_bufpq_vmstate_info = {
.name = "usb-redir-bufpq",
- .put = usbredir_put_bufpq,
- .get = usbredir_get_bufpq,
+ .save = usbredir_save_bufpq,
+ .load = usbredir_load_bufpq,
};
@@ -2468,9 +2475,9 @@ static const VMStateDescription usbredir_ep_vmstate = {
/* For PacketIdQueue migration */
-static int usbredir_put_packet_id_q(QEMUFile *f, void *priv, size_t unused,
+static bool usbredir_save_packet_id_q(QEMUFile *f, void *priv, size_t unused,
const VMStateField *field,
- JSONWriter *vmdesc)
+ JSONWriter *vmdesc, Error **errp)
{
struct PacketIdQueue *q = priv;
USBRedirDevice *dev = q->dev;
@@ -2485,11 +2492,11 @@ static int usbredir_put_packet_id_q(QEMUFile *f, void
*priv, size_t unused,
}
assert(remain == 0);
- return 0;
+ return true;
}
-static int usbredir_get_packet_id_q(QEMUFile *f, void *priv, size_t unused,
- const VMStateField *field)
+static bool usbredir_load_packet_id_q(QEMUFile *f, void *priv, size_t unused,
+ const VMStateField *field, Error **errp)
{
struct PacketIdQueue *q = priv;
USBRedirDevice *dev = q->dev;
@@ -2503,13 +2510,13 @@ static int usbredir_get_packet_id_q(QEMUFile *f, void
*priv, size_t unused,
packet_id_queue_add(q, id);
}
assert(q->size == size);
- return 0;
+ return true;
}
static const VMStateInfo usbredir_ep_packet_id_q_vmstate_info = {
.name = "usb-redir-packet-id-q",
- .put = usbredir_put_packet_id_q,
- .get = usbredir_get_packet_id_q,
+ .save = usbredir_save_packet_id_q,
+ .load = usbredir_load_packet_id_q,
};
static const VMStateDescription usbredir_ep_packet_id_queue_vmstate = {
--
2.43.0