* [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ]
@ 2016-11-23 18:52 Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 1/5] slirp: VMState conversion; tcpcb Dr. David Alan Gilbert (git)
` (6 more replies)
0 siblings, 7 replies; 13+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2016-11-23 18:52 UTC (permalink / raw)
To: qemu-devel, samuel.thibault; +Cc: quintela, amit.shah
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Hi,
This is an update to my previous series that included VMSTATE_WITH_TMP.
I've not bothered including the VMSTATE_WITH_TMP set this time; but it's
still dependent on it, so we'll wait until it's in first.
My main change in this version is that I've commoned the fhost/lhost unions
in struct socket, and that's made the 'socket level' code a lot simpler
and should make it a lot easier to add IPv6 support to it.
Dave
Dr. David Alan Gilbert (10):
slirp: VMState conversion; tcpcb
slirp: VMStatify sbuf
slirp: Common lhost/fhost union
slirp: VMStatify socket level
slirp: VMStatify remaining except for loop
slirp/sbuf.h | 4
slirp/slirp.c | 459 +++++++++++++++++++++++++-----------------------------
slirp/socket.h | 24 +-
slirp/tcp_var.h | 6
5 files changed, 231 insertions(+), 263 deletions(-)
--
2.9.3
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v2 1/5] slirp: VMState conversion; tcpcb
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
@ 2016-11-23 18:52 ` Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 2/5] slirp: VMStatify sbuf Dr. David Alan Gilbert (git)
` (5 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2016-11-23 18:52 UTC (permalink / raw)
To: qemu-devel, samuel.thibault; +Cc: quintela, amit.shah
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Convert the migration of the struct tcpcb to use a VMStateDescription,
the rest of it will come later.
Mostly mechanical, except for conversion of some 'char' to uint8_t
to ensure portability.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
slirp/slirp.c | 149 ++++++++++++++++++++------------------------------------
slirp/tcp_var.h | 6 +--
2 files changed, 57 insertions(+), 98 deletions(-)
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 6e2b4e5..6276315 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -1129,53 +1129,62 @@ void slirp_socket_recv(Slirp *slirp, struct in_addr guest_addr, int guest_port,
tcp_output(sototcpcb(so));
}
-static void slirp_tcp_save(QEMUFile *f, struct tcpcb *tp)
+static int slirp_tcp_post_load(void *opaque, int version)
{
- int i;
+ tcp_template((struct tcpcb *)opaque);
- qemu_put_sbe16(f, tp->t_state);
- for (i = 0; i < TCPT_NTIMERS; i++)
- qemu_put_sbe16(f, tp->t_timer[i]);
- qemu_put_sbe16(f, tp->t_rxtshift);
- qemu_put_sbe16(f, tp->t_rxtcur);
- qemu_put_sbe16(f, tp->t_dupacks);
- qemu_put_be16(f, tp->t_maxseg);
- qemu_put_sbyte(f, tp->t_force);
- qemu_put_be16(f, tp->t_flags);
- qemu_put_be32(f, tp->snd_una);
- qemu_put_be32(f, tp->snd_nxt);
- qemu_put_be32(f, tp->snd_up);
- qemu_put_be32(f, tp->snd_wl1);
- qemu_put_be32(f, tp->snd_wl2);
- qemu_put_be32(f, tp->iss);
- qemu_put_be32(f, tp->snd_wnd);
- qemu_put_be32(f, tp->rcv_wnd);
- qemu_put_be32(f, tp->rcv_nxt);
- qemu_put_be32(f, tp->rcv_up);
- qemu_put_be32(f, tp->irs);
- qemu_put_be32(f, tp->rcv_adv);
- qemu_put_be32(f, tp->snd_max);
- qemu_put_be32(f, tp->snd_cwnd);
- qemu_put_be32(f, tp->snd_ssthresh);
- qemu_put_sbe16(f, tp->t_idle);
- qemu_put_sbe16(f, tp->t_rtt);
- qemu_put_be32(f, tp->t_rtseq);
- qemu_put_sbe16(f, tp->t_srtt);
- qemu_put_sbe16(f, tp->t_rttvar);
- qemu_put_be16(f, tp->t_rttmin);
- qemu_put_be32(f, tp->max_sndwnd);
- qemu_put_byte(f, tp->t_oobflags);
- qemu_put_byte(f, tp->t_iobc);
- qemu_put_sbe16(f, tp->t_softerror);
- qemu_put_byte(f, tp->snd_scale);
- qemu_put_byte(f, tp->rcv_scale);
- qemu_put_byte(f, tp->request_r_scale);
- qemu_put_byte(f, tp->requested_s_scale);
- qemu_put_be32(f, tp->ts_recent);
- qemu_put_be32(f, tp->ts_recent_age);
- qemu_put_be32(f, tp->last_ack_sent);
+ return 0;
}
+static const VMStateDescription vmstate_slirp_tcp = {
+ .name = "slirp-tcp",
+ .version_id = 0,
+ .post_load = slirp_tcp_post_load,
+ .fields = (VMStateField[]) {
+ VMSTATE_INT16(t_state, struct tcpcb),
+ VMSTATE_INT16_ARRAY(t_timer, struct tcpcb, TCPT_NTIMERS),
+ VMSTATE_INT16(t_rxtshift, struct tcpcb),
+ VMSTATE_INT16(t_rxtcur, struct tcpcb),
+ VMSTATE_INT16(t_dupacks, struct tcpcb),
+ VMSTATE_UINT16(t_maxseg, struct tcpcb),
+ VMSTATE_UINT8(t_force, struct tcpcb),
+ VMSTATE_UINT16(t_flags, struct tcpcb),
+ VMSTATE_UINT32(snd_una, struct tcpcb),
+ VMSTATE_UINT32(snd_nxt, struct tcpcb),
+ VMSTATE_UINT32(snd_up, struct tcpcb),
+ VMSTATE_UINT32(snd_wl1, struct tcpcb),
+ VMSTATE_UINT32(snd_wl2, struct tcpcb),
+ VMSTATE_UINT32(iss, struct tcpcb),
+ VMSTATE_UINT32(snd_wnd, struct tcpcb),
+ VMSTATE_UINT32(rcv_wnd, struct tcpcb),
+ VMSTATE_UINT32(rcv_nxt, struct tcpcb),
+ VMSTATE_UINT32(rcv_up, struct tcpcb),
+ VMSTATE_UINT32(irs, struct tcpcb),
+ VMSTATE_UINT32(rcv_adv, struct tcpcb),
+ VMSTATE_UINT32(snd_max, struct tcpcb),
+ VMSTATE_UINT32(snd_cwnd, struct tcpcb),
+ VMSTATE_UINT32(snd_ssthresh, struct tcpcb),
+ VMSTATE_INT16(t_idle, struct tcpcb),
+ VMSTATE_INT16(t_rtt, struct tcpcb),
+ VMSTATE_UINT32(t_rtseq, struct tcpcb),
+ VMSTATE_INT16(t_srtt, struct tcpcb),
+ VMSTATE_INT16(t_rttvar, struct tcpcb),
+ VMSTATE_UINT16(t_rttmin, struct tcpcb),
+ VMSTATE_UINT32(max_sndwnd, struct tcpcb),
+ VMSTATE_UINT8(t_oobflags, struct tcpcb),
+ VMSTATE_UINT8(t_iobc, struct tcpcb),
+ VMSTATE_INT16(t_softerror, struct tcpcb),
+ VMSTATE_UINT8(snd_scale, struct tcpcb),
+ VMSTATE_UINT8(rcv_scale, struct tcpcb),
+ VMSTATE_UINT8(request_r_scale, struct tcpcb),
+ VMSTATE_UINT8(requested_s_scale, struct tcpcb),
+ VMSTATE_UINT32(ts_recent, struct tcpcb),
+ VMSTATE_UINT32(ts_recent_age, struct tcpcb),
+ VMSTATE_UINT32(last_ack_sent, struct tcpcb),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
static void slirp_sbuf_save(QEMUFile *f, struct sbuf *sbuf)
{
uint32_t off;
@@ -1218,7 +1227,7 @@ static void slirp_socket_save(QEMUFile *f, struct socket *so)
qemu_put_be32(f, so->so_state);
slirp_sbuf_save(f, &so->so_rcv);
slirp_sbuf_save(f, &so->so_snd);
- slirp_tcp_save(f, so->so_tcpcb);
+ vmstate_save_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
}
static void slirp_bootp_save(QEMUFile *f, Slirp *slirp)
@@ -1254,54 +1263,6 @@ static void slirp_state_save(QEMUFile *f, void *opaque)
slirp_bootp_save(f, slirp);
}
-static void slirp_tcp_load(QEMUFile *f, struct tcpcb *tp)
-{
- int i;
-
- tp->t_state = qemu_get_sbe16(f);
- for (i = 0; i < TCPT_NTIMERS; i++)
- tp->t_timer[i] = qemu_get_sbe16(f);
- tp->t_rxtshift = qemu_get_sbe16(f);
- tp->t_rxtcur = qemu_get_sbe16(f);
- tp->t_dupacks = qemu_get_sbe16(f);
- tp->t_maxseg = qemu_get_be16(f);
- tp->t_force = qemu_get_sbyte(f);
- tp->t_flags = qemu_get_be16(f);
- tp->snd_una = qemu_get_be32(f);
- tp->snd_nxt = qemu_get_be32(f);
- tp->snd_up = qemu_get_be32(f);
- tp->snd_wl1 = qemu_get_be32(f);
- tp->snd_wl2 = qemu_get_be32(f);
- tp->iss = qemu_get_be32(f);
- tp->snd_wnd = qemu_get_be32(f);
- tp->rcv_wnd = qemu_get_be32(f);
- tp->rcv_nxt = qemu_get_be32(f);
- tp->rcv_up = qemu_get_be32(f);
- tp->irs = qemu_get_be32(f);
- tp->rcv_adv = qemu_get_be32(f);
- tp->snd_max = qemu_get_be32(f);
- tp->snd_cwnd = qemu_get_be32(f);
- tp->snd_ssthresh = qemu_get_be32(f);
- tp->t_idle = qemu_get_sbe16(f);
- tp->t_rtt = qemu_get_sbe16(f);
- tp->t_rtseq = qemu_get_be32(f);
- tp->t_srtt = qemu_get_sbe16(f);
- tp->t_rttvar = qemu_get_sbe16(f);
- tp->t_rttmin = qemu_get_be16(f);
- tp->max_sndwnd = qemu_get_be32(f);
- tp->t_oobflags = qemu_get_byte(f);
- tp->t_iobc = qemu_get_byte(f);
- tp->t_softerror = qemu_get_sbe16(f);
- tp->snd_scale = qemu_get_byte(f);
- tp->rcv_scale = qemu_get_byte(f);
- tp->request_r_scale = qemu_get_byte(f);
- tp->requested_s_scale = qemu_get_byte(f);
- tp->ts_recent = qemu_get_be32(f);
- tp->ts_recent_age = qemu_get_be32(f);
- tp->last_ack_sent = qemu_get_be32(f);
- tcp_template(tp);
-}
-
static int slirp_sbuf_load(QEMUFile *f, struct sbuf *sbuf)
{
uint32_t off, sb_cc, sb_datalen;
@@ -1367,9 +1328,7 @@ static int slirp_socket_load(QEMUFile *f, struct socket *so, int version_id)
return -ENOMEM;
if (slirp_sbuf_load(f, &so->so_snd) < 0)
return -ENOMEM;
- slirp_tcp_load(f, so->so_tcpcb);
-
- return 0;
+ return vmstate_load_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
}
static void slirp_bootp_load(QEMUFile *f, Slirp *slirp)
diff --git a/slirp/tcp_var.h b/slirp/tcp_var.h
index 0f8f187..895ef6d 100644
--- a/slirp/tcp_var.h
+++ b/slirp/tcp_var.h
@@ -48,7 +48,7 @@ struct tcpcb {
short t_rxtcur; /* current retransmit value */
short t_dupacks; /* consecutive dup acks recd */
u_short t_maxseg; /* maximum segment size */
- char t_force; /* 1 if forcing out a byte */
+ uint8_t t_force; /* 1 if forcing out a byte */
u_short t_flags;
#define TF_ACKNOW 0x0001 /* ack peer immediately */
#define TF_DELACK 0x0002 /* ack, but try to delay it */
@@ -109,8 +109,8 @@ struct tcpcb {
uint32_t max_sndwnd; /* largest window peer has offered */
/* out-of-band data */
- char t_oobflags; /* have some */
- char t_iobc; /* input character */
+ uint8_t t_oobflags; /* have some */
+ uint8_t t_iobc; /* input character */
#define TCPOOB_HAVEDATA 0x01
#define TCPOOB_HADDATA 0x02
short t_softerror; /* possible error not yet reported */
--
2.9.3
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v2 2/5] slirp: VMStatify sbuf
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 1/5] slirp: VMState conversion; tcpcb Dr. David Alan Gilbert (git)
@ 2016-11-23 18:52 ` Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 3/5] slirp: Common lhost/fhost union Dr. David Alan Gilbert (git)
` (4 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2016-11-23 18:52 UTC (permalink / raw)
To: qemu-devel, samuel.thibault; +Cc: quintela, amit.shah
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Convert the sbuf structure to a VMStateDescription.
Note this uses the VMSTATE_WITH_TMP mechanism to calculate
and reload the offsets based on the pointers.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
slirp/sbuf.h | 4 +-
slirp/slirp.c | 116 ++++++++++++++++++++++++++++++++++++++--------------------
2 files changed, 78 insertions(+), 42 deletions(-)
diff --git a/slirp/sbuf.h b/slirp/sbuf.h
index efcec39..a722ecb 100644
--- a/slirp/sbuf.h
+++ b/slirp/sbuf.h
@@ -12,8 +12,8 @@
#define sbspace(sb) ((sb)->sb_datalen - (sb)->sb_cc)
struct sbuf {
- u_int sb_cc; /* actual chars in buffer */
- u_int sb_datalen; /* Length of data */
+ uint32_t sb_cc; /* actual chars in buffer */
+ uint32_t sb_datalen; /* Length of data */
char *sb_wptr; /* write pointer. points to where the next
* bytes should be written in the sbuf */
char *sb_rptr; /* read pointer. points to where the next
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 6276315..2f7802e 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -1185,19 +1185,72 @@ static const VMStateDescription vmstate_slirp_tcp = {
}
};
-static void slirp_sbuf_save(QEMUFile *f, struct sbuf *sbuf)
+/* The sbuf has a pair of pointers that are migrated as offsets;
+ * we calculate the offsets and restore the pointers using
+ * pre_save/post_load on a tmp structure.
+ */
+struct sbuf_tmp {
+ struct sbuf *parent;
+ uint32_t roff, woff;
+};
+
+static void sbuf_tmp_pre_save(void *opaque)
+{
+ struct sbuf_tmp *tmp = opaque;
+ tmp->woff = tmp->parent->sb_wptr - tmp->parent->sb_data;
+ tmp->roff = tmp->parent->sb_rptr - tmp->parent->sb_data;
+}
+
+static int sbuf_tmp_post_load(void *opaque, int version)
{
- uint32_t off;
-
- qemu_put_be32(f, sbuf->sb_cc);
- qemu_put_be32(f, sbuf->sb_datalen);
- off = (uint32_t)(sbuf->sb_wptr - sbuf->sb_data);
- qemu_put_sbe32(f, off);
- off = (uint32_t)(sbuf->sb_rptr - sbuf->sb_data);
- qemu_put_sbe32(f, off);
- qemu_put_buffer(f, (unsigned char*)sbuf->sb_data, sbuf->sb_datalen);
+ struct sbuf_tmp *tmp = opaque;
+ uint32_t requested_len = tmp->parent->sb_datalen;
+
+ /* Allocate the buffer space used by the field after the tmp */
+ sbreserve(tmp->parent, tmp->parent->sb_datalen);
+
+ if (tmp->parent->sb_datalen != requested_len) {
+ return -ENOMEM;
+ }
+ if (tmp->woff >= requested_len ||
+ tmp->roff >= requested_len) {
+ error_report("invalid sbuf offsets r/w=%u/%u len=%u",
+ tmp->roff, tmp->woff, requested_len);
+ return -EINVAL;
+ }
+
+ tmp->parent->sb_wptr = tmp->parent->sb_data + tmp->woff;
+ tmp->parent->sb_rptr = tmp->parent->sb_data + tmp->roff;
+
+ return 0;
}
+
+static const VMStateDescription vmstate_slirp_sbuf_tmp = {
+ .name = "slirp-sbuf-tmp",
+ .post_load = sbuf_tmp_post_load,
+ .pre_save = sbuf_tmp_pre_save,
+ .version_id = 0,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT32(woff, struct sbuf_tmp),
+ VMSTATE_UINT32(roff, struct sbuf_tmp),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
+static const VMStateDescription vmstate_slirp_sbuf = {
+ .name = "slirp-sbuf",
+ .version_id = 0,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT32(sb_cc, struct sbuf),
+ VMSTATE_UINT32(sb_datalen, struct sbuf),
+ VMSTATE_WITH_TMP(struct sbuf, struct sbuf_tmp, vmstate_slirp_sbuf_tmp),
+ VMSTATE_VBUFFER_UINT32(sb_data, struct sbuf, 0, NULL, 0, sb_datalen),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
+
static void slirp_socket_save(QEMUFile *f, struct socket *so)
{
qemu_put_be32(f, so->so_urgc);
@@ -1225,8 +1278,9 @@ static void slirp_socket_save(QEMUFile *f, struct socket *so)
qemu_put_byte(f, so->so_emu);
qemu_put_byte(f, so->so_type);
qemu_put_be32(f, so->so_state);
- slirp_sbuf_save(f, &so->so_rcv);
- slirp_sbuf_save(f, &so->so_snd);
+ /* TODO: Build vmstate at this level */
+ vmstate_save_state(f, &vmstate_slirp_sbuf, &so->so_rcv, 0);
+ vmstate_save_state(f, &vmstate_slirp_sbuf, &so->so_snd, 0);
vmstate_save_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
}
@@ -1263,31 +1317,9 @@ static void slirp_state_save(QEMUFile *f, void *opaque)
slirp_bootp_save(f, slirp);
}
-static int slirp_sbuf_load(QEMUFile *f, struct sbuf *sbuf)
-{
- uint32_t off, sb_cc, sb_datalen;
-
- sb_cc = qemu_get_be32(f);
- sb_datalen = qemu_get_be32(f);
-
- sbreserve(sbuf, sb_datalen);
-
- if (sbuf->sb_datalen != sb_datalen)
- return -ENOMEM;
-
- sbuf->sb_cc = sb_cc;
-
- off = qemu_get_sbe32(f);
- sbuf->sb_wptr = sbuf->sb_data + off;
- off = qemu_get_sbe32(f);
- sbuf->sb_rptr = sbuf->sb_data + off;
- qemu_get_buffer(f, (unsigned char*)sbuf->sb_data, sbuf->sb_datalen);
-
- return 0;
-}
-
static int slirp_socket_load(QEMUFile *f, struct socket *so, int version_id)
{
+ int ret = 0;
if (tcp_attach(so) < 0)
return -ENOMEM;
@@ -1324,11 +1356,15 @@ static int slirp_socket_load(QEMUFile *f, struct socket *so, int version_id)
so->so_emu = qemu_get_byte(f);
so->so_type = qemu_get_byte(f);
so->so_state = qemu_get_be32(f);
- if (slirp_sbuf_load(f, &so->so_rcv) < 0)
- return -ENOMEM;
- if (slirp_sbuf_load(f, &so->so_snd) < 0)
- return -ENOMEM;
- return vmstate_load_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
+ /* TODO: VMState at this level */
+ ret = vmstate_load_state(f, &vmstate_slirp_sbuf, &so->so_rcv, 0);
+ if (!ret) {
+ ret = vmstate_load_state(f, &vmstate_slirp_sbuf, &so->so_snd, 0);
+ }
+ if (!ret) {
+ ret = vmstate_load_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
+ }
+ return ret;
}
static void slirp_bootp_load(QEMUFile *f, Slirp *slirp)
--
2.9.3
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v2 3/5] slirp: Common lhost/fhost union
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 1/5] slirp: VMState conversion; tcpcb Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 2/5] slirp: VMStatify sbuf Dr. David Alan Gilbert (git)
@ 2016-11-23 18:52 ` Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level Dr. David Alan Gilbert (git)
` (3 subsequent siblings)
6 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2016-11-23 18:52 UTC (permalink / raw)
To: qemu-devel, samuel.thibault; +Cc: quintela, amit.shah
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
The socket structure has a pair of unions for lhost and fhost
addresses; the unions are identical so split them out into
a separate union declaration.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
slirp/socket.h | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/slirp/socket.h b/slirp/socket.h
index 8feed2a..c1be77e 100644
--- a/slirp/socket.h
+++ b/slirp/socket.h
@@ -15,6 +15,12 @@
* Our socket structure
*/
+union slirp_sockaddr {
+ struct sockaddr_storage ss;
+ struct sockaddr_in sin;
+ struct sockaddr_in6 sin6;
+};
+
struct socket {
struct socket *so_next,*so_prev; /* For a linked list of sockets */
@@ -31,22 +37,14 @@ struct socket {
struct tcpiphdr *so_ti; /* Pointer to the original ti within
* so_mconn, for non-blocking connections */
int so_urgc;
- union { /* foreign host */
- struct sockaddr_storage ss;
- struct sockaddr_in sin;
- struct sockaddr_in6 sin6;
- } fhost;
+ union slirp_sockaddr fhost; /* Foreign host */
#define so_faddr fhost.sin.sin_addr
#define so_fport fhost.sin.sin_port
#define so_faddr6 fhost.sin6.sin6_addr
#define so_fport6 fhost.sin6.sin6_port
#define so_ffamily fhost.ss.ss_family
- union { /* local host */
- struct sockaddr_storage ss;
- struct sockaddr_in sin;
- struct sockaddr_in6 sin6;
- } lhost;
+ union slirp_sockaddr lhost; /* Local host */
#define so_laddr lhost.sin.sin_addr
#define so_lport lhost.sin.sin_port
#define so_laddr6 lhost.sin6.sin6_addr
--
2.9.3
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
` (2 preceding siblings ...)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 3/5] slirp: Common lhost/fhost union Dr. David Alan Gilbert (git)
@ 2016-11-23 18:52 ` Dr. David Alan Gilbert (git)
2016-11-27 15:13 ` Samuel Thibault
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 5/5] slirp: VMStatify remaining except for loop Dr. David Alan Gilbert (git)
` (2 subsequent siblings)
6 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2016-11-23 18:52 UTC (permalink / raw)
To: qemu-devel, samuel.thibault; +Cc: quintela, amit.shah
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Working up the stack, this replaces the slirp_socket_load/save
with VMState definitions.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
slirp/slirp.c | 146 ++++++++++++++++++++++++++-------------------------------
slirp/socket.h | 6 +--
2 files changed, 69 insertions(+), 83 deletions(-)
diff --git a/slirp/slirp.c b/slirp/slirp.c
index 2f7802e..c631338 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -1250,40 +1250,75 @@ static const VMStateDescription vmstate_slirp_sbuf = {
}
};
+static bool slirp_older_than_v4(void *opaque, int version_id)
+{
+ return version_id < 4;
+}
-static void slirp_socket_save(QEMUFile *f, struct socket *so)
+static bool slirp_family_inet(void *opaque, int version_id)
{
- qemu_put_be32(f, so->so_urgc);
- qemu_put_be16(f, so->so_ffamily);
- switch (so->so_ffamily) {
- case AF_INET:
- qemu_put_be32(f, so->so_faddr.s_addr);
- qemu_put_be16(f, so->so_fport);
- break;
- default:
- error_report("so_ffamily unknown, unable to save so_faddr and"
- " so_fport");
- }
- qemu_put_be16(f, so->so_lfamily);
- switch (so->so_lfamily) {
- case AF_INET:
- qemu_put_be32(f, so->so_laddr.s_addr);
- qemu_put_be16(f, so->so_lport);
- break;
- default:
- error_report("so_ffamily unknown, unable to save so_laddr and"
- " so_lport");
+ union slirp_sockaddr *ssa = (union slirp_sockaddr *)opaque;
+ return ssa->ss.ss_family == AF_INET;
+}
+
+static int slirp_socket_pre_load(void *opaque)
+{
+ struct socket *so = opaque;
+ if (tcp_attach(so) < 0) {
+ return -ENOMEM;
}
- qemu_put_byte(f, so->so_iptos);
- qemu_put_byte(f, so->so_emu);
- qemu_put_byte(f, so->so_type);
- qemu_put_be32(f, so->so_state);
- /* TODO: Build vmstate at this level */
- vmstate_save_state(f, &vmstate_slirp_sbuf, &so->so_rcv, 0);
- vmstate_save_state(f, &vmstate_slirp_sbuf, &so->so_snd, 0);
- vmstate_save_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
+ /* Older versions don't load these fields */
+ so->so_ffamily = AF_INET;
+ so->so_lfamily = AF_INET;
+ return 0;
}
+static const VMStateDescription vmstate_slirp_socket_addr = {
+ .name = "slirp-socket-addr",
+ .version_id = 4,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
+ VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
+ slirp_family_inet),
+ VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
+ slirp_family_inet),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
+static const VMStateDescription vmstate_slirp_socket = {
+ .name = "slirp-socket",
+ .version_id = 4,
+ .pre_load = slirp_socket_pre_load,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT32(so_urgc, struct socket),
+ /* Pre-v4 versions */
+ VMSTATE_UINT32_TEST(so_faddr.s_addr, struct socket,
+ slirp_older_than_v4),
+ VMSTATE_UINT32_TEST(so_laddr.s_addr, struct socket,
+ slirp_older_than_v4),
+ VMSTATE_UINT16_TEST(so_fport, struct socket, slirp_older_than_v4),
+ VMSTATE_UINT16_TEST(so_lport, struct socket, slirp_older_than_v4),
+ /* v4 and newer */
+ VMSTATE_STRUCT(fhost, struct socket, 4, vmstate_slirp_socket_addr,
+ union slirp_sockaddr),
+ VMSTATE_STRUCT(lhost, struct socket, 4, vmstate_slirp_socket_addr,
+ union slirp_sockaddr),
+
+ VMSTATE_UINT8(so_iptos, struct socket),
+ VMSTATE_UINT8(so_emu, struct socket),
+ VMSTATE_UINT8(so_type, struct socket),
+ VMSTATE_INT32(so_state, struct socket),
+ VMSTATE_STRUCT(so_rcv, struct socket, 0, vmstate_slirp_sbuf,
+ struct sbuf),
+ VMSTATE_STRUCT(so_snd, struct socket, 0, vmstate_slirp_sbuf,
+ struct sbuf),
+ VMSTATE_STRUCT_POINTER(so_tcpcb, struct socket, vmstate_slirp_tcp,
+ struct tcpcb),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
static void slirp_bootp_save(QEMUFile *f, Slirp *slirp)
{
int i;
@@ -1308,7 +1343,7 @@ static void slirp_state_save(QEMUFile *f, void *opaque)
continue;
qemu_put_byte(f, 42);
- slirp_socket_save(f, so);
+ vmstate_save_state(f, &vmstate_slirp_socket, so, NULL);
}
qemu_put_byte(f, 0);
@@ -1317,55 +1352,6 @@ static void slirp_state_save(QEMUFile *f, void *opaque)
slirp_bootp_save(f, slirp);
}
-static int slirp_socket_load(QEMUFile *f, struct socket *so, int version_id)
-{
- int ret = 0;
- if (tcp_attach(so) < 0)
- return -ENOMEM;
-
- so->so_urgc = qemu_get_be32(f);
- if (version_id <= 3) {
- so->so_ffamily = AF_INET;
- so->so_faddr.s_addr = qemu_get_be32(f);
- so->so_laddr.s_addr = qemu_get_be32(f);
- so->so_fport = qemu_get_be16(f);
- so->so_lport = qemu_get_be16(f);
- } else {
- so->so_ffamily = qemu_get_be16(f);
- switch (so->so_ffamily) {
- case AF_INET:
- so->so_faddr.s_addr = qemu_get_be32(f);
- so->so_fport = qemu_get_be16(f);
- break;
- default:
- error_report(
- "so_ffamily unknown, unable to restore so_faddr and so_lport");
- }
- so->so_lfamily = qemu_get_be16(f);
- switch (so->so_lfamily) {
- case AF_INET:
- so->so_laddr.s_addr = qemu_get_be32(f);
- so->so_lport = qemu_get_be16(f);
- break;
- default:
- error_report(
- "so_ffamily unknown, unable to restore so_laddr and so_lport");
- }
- }
- so->so_iptos = qemu_get_byte(f);
- so->so_emu = qemu_get_byte(f);
- so->so_type = qemu_get_byte(f);
- so->so_state = qemu_get_be32(f);
- /* TODO: VMState at this level */
- ret = vmstate_load_state(f, &vmstate_slirp_sbuf, &so->so_rcv, 0);
- if (!ret) {
- ret = vmstate_load_state(f, &vmstate_slirp_sbuf, &so->so_snd, 0);
- }
- if (!ret) {
- ret = vmstate_load_state(f, &vmstate_slirp_tcp, so->so_tcpcb, 0);
- }
- return ret;
-}
static void slirp_bootp_load(QEMUFile *f, Slirp *slirp)
{
@@ -1389,7 +1375,7 @@ static int slirp_state_load(QEMUFile *f, void *opaque, int version_id)
if (!so)
return -ENOMEM;
- ret = slirp_socket_load(f, so, version_id);
+ ret = vmstate_load_state(f, &vmstate_slirp_socket, so, version_id);
if (ret < 0)
return ret;
diff --git a/slirp/socket.h b/slirp/socket.h
index c1be77e..2f224bc 100644
--- a/slirp/socket.h
+++ b/slirp/socket.h
@@ -36,7 +36,7 @@ struct socket {
* PING reply's */
struct tcpiphdr *so_ti; /* Pointer to the original ti within
* so_mconn, for non-blocking connections */
- int so_urgc;
+ uint32_t so_urgc;
union slirp_sockaddr fhost; /* Foreign host */
#define so_faddr fhost.sin.sin_addr
#define so_fport fhost.sin.sin_port
@@ -54,8 +54,8 @@ struct socket {
uint8_t so_iptos; /* Type of service */
uint8_t so_emu; /* Is the socket emulated? */
- u_char so_type; /* Type of socket, UDP or TCP */
- int so_state; /* internal state flags SS_*, below */
+ uint8_t so_type; /* Type of socket, UDP or TCP */
+ int32_t so_state; /* internal state flags SS_*, below */
struct tcpcb *so_tcpcb; /* pointer to TCP protocol control block */
u_int so_expire; /* When the socket will expire */
--
2.9.3
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v2 5/5] slirp: VMStatify remaining except for loop
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
` (3 preceding siblings ...)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level Dr. David Alan Gilbert (git)
@ 2016-11-23 18:52 ` Dr. David Alan Gilbert (git)
2016-11-29 8:31 ` [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] no-reply
2016-11-29 13:33 ` no-reply
6 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2016-11-23 18:52 UTC (permalink / raw)
To: qemu-devel, samuel.thibault; +Cc: quintela, amit.shah
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
This converts the remaining components, except for the top level
loop, to VMState.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
slirp/slirp.c | 48 +++++++++++++++++++-----------------------------
1 file changed, 19 insertions(+), 29 deletions(-)
diff --git a/slirp/slirp.c b/slirp/slirp.c
index c631338..5f95d75 100644
--- a/slirp/slirp.c
+++ b/slirp/slirp.c
@@ -1319,15 +1319,25 @@ static const VMStateDescription vmstate_slirp_socket = {
}
};
-static void slirp_bootp_save(QEMUFile *f, Slirp *slirp)
-{
- int i;
+static const VMStateDescription vmstate_slirp_bootp_client = {
+ .name = "slirp_bootpclient",
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT16(allocated, BOOTPClient),
+ VMSTATE_BUFFER(macaddr, BOOTPClient),
+ VMSTATE_END_OF_LIST()
+ }
+};
- for (i = 0; i < NB_BOOTP_CLIENTS; i++) {
- qemu_put_be16(f, slirp->bootp_clients[i].allocated);
- qemu_put_buffer(f, slirp->bootp_clients[i].macaddr, 6);
+static const VMStateDescription vmstate_slirp = {
+ .name = "slirp",
+ .version_id = 4,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT16_V(ip_id, Slirp, 2),
+ VMSTATE_STRUCT_ARRAY(bootp_clients, Slirp, NB_BOOTP_CLIENTS, 3,
+ vmstate_slirp_bootp_client, BOOTPClient),
+ VMSTATE_END_OF_LIST()
}
-}
+};
static void slirp_state_save(QEMUFile *f, void *opaque)
{
@@ -1347,22 +1357,10 @@ static void slirp_state_save(QEMUFile *f, void *opaque)
}
qemu_put_byte(f, 0);
- qemu_put_be16(f, slirp->ip_id);
-
- slirp_bootp_save(f, slirp);
+ vmstate_save_state(f, &vmstate_slirp, slirp, NULL);
}
-static void slirp_bootp_load(QEMUFile *f, Slirp *slirp)
-{
- int i;
-
- for (i = 0; i < NB_BOOTP_CLIENTS; i++) {
- slirp->bootp_clients[i].allocated = qemu_get_be16(f);
- qemu_get_buffer(f, slirp->bootp_clients[i].macaddr, 6);
- }
-}
-
static int slirp_state_load(QEMUFile *f, void *opaque, int version_id)
{
Slirp *slirp = opaque;
@@ -1397,13 +1395,5 @@ static int slirp_state_load(QEMUFile *f, void *opaque, int version_id)
so->extra = (void *)ex_ptr->ex_exec;
}
- if (version_id >= 2) {
- slirp->ip_id = qemu_get_be16(f);
- }
-
- if (version_id >= 3) {
- slirp_bootp_load(f, slirp);
- }
-
- return 0;
+ return vmstate_load_state(f, &vmstate_slirp, slirp, version_id);
}
--
2.9.3
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level Dr. David Alan Gilbert (git)
@ 2016-11-27 15:13 ` Samuel Thibault
2016-11-27 15:28 ` Samuel Thibault
0 siblings, 1 reply; 13+ messages in thread
From: Samuel Thibault @ 2016-11-27 15:13 UTC (permalink / raw)
To: Dr. David Alan Gilbert (git); +Cc: qemu-devel, quintela, amit.shah
Hello,
Dr. David Alan Gilbert (git), on Wed 23 Nov 2016 18:52:57 +0000, wrote:
> +static const VMStateDescription vmstate_slirp_socket_addr = {
> + .name = "slirp-socket-addr",
> + .version_id = 4,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
> + VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
> + slirp_family_inet),
> + VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
> + slirp_family_inet),
> + VMSTATE_END_OF_LIST()
> + }
> +};
How will we be able to add the IPv6 case here?
Samuel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level
2016-11-27 15:13 ` Samuel Thibault
@ 2016-11-27 15:28 ` Samuel Thibault
2016-11-28 9:08 ` Dr. David Alan Gilbert
0 siblings, 1 reply; 13+ messages in thread
From: Samuel Thibault @ 2016-11-27 15:28 UTC (permalink / raw)
To: Dr. David Alan Gilbert (git); +Cc: qemu-devel, quintela, amit.shah
Samuel Thibault, on Sun 27 Nov 2016 16:13:46 +0100, wrote:
> Dr. David Alan Gilbert (git), on Wed 23 Nov 2016 18:52:57 +0000, wrote:
> > +static const VMStateDescription vmstate_slirp_socket_addr = {
> > + .name = "slirp-socket-addr",
> > + .version_id = 4,
> > + .fields = (VMStateField[]) {
> > + VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
> > + VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
> > + slirp_family_inet),
> > + VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
> > + slirp_family_inet),
> > + VMSTATE_END_OF_LIST()
> > + }
> > +};
>
> How will we be able to add the IPv6 case here?
Reading again your previous post, it seemed it'd be in
slirp_family_inet, but I don't immediately see how.
Applying your patch for 2.9 would thus make porting the code to IPv6
more difficult than how it is now, so I'm quite reluctant :)
Could you perhaps simply add the IPv6 case in your patch series already?
It shouldn't be much work for you who actually know how the VMSTATE
machinery is supposed to work (I guess the amount of people who care
about slirp *and* know about VMSTATE is extremely small), and a proof of
concept for the portability to non-ipv4 addresse spaces.
Samuel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level
2016-11-27 15:28 ` Samuel Thibault
@ 2016-11-28 9:08 ` Dr. David Alan Gilbert
2016-11-28 10:48 ` Samuel Thibault
0 siblings, 1 reply; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2016-11-28 9:08 UTC (permalink / raw)
To: Samuel Thibault; +Cc: qemu-devel, quintela, amit.shah
* Samuel Thibault (samuel.thibault@gnu.org) wrote:
> Samuel Thibault, on Sun 27 Nov 2016 16:13:46 +0100, wrote:
> > Dr. David Alan Gilbert (git), on Wed 23 Nov 2016 18:52:57 +0000, wrote:
> > > +static const VMStateDescription vmstate_slirp_socket_addr = {
> > > + .name = "slirp-socket-addr",
> > > + .version_id = 4,
> > > + .fields = (VMStateField[]) {
> > > + VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
> > > + VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
> > > + slirp_family_inet),
> > > + VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
> > > + slirp_family_inet),
> > > + VMSTATE_END_OF_LIST()
> > > + }
> > > +};
> >
> > How will we be able to add the IPv6 case here?
>
> Reading again your previous post, it seemed it'd be in
> slirp_family_inet, but I don't immediately see how.
>
> Applying your patch for 2.9 would thus make porting the code to IPv6
> more difficult than how it is now, so I'm quite reluctant :)
>
> Could you perhaps simply add the IPv6 case in your patch series already?
> It shouldn't be much work for you who actually know how the VMSTATE
> machinery is supposed to work (I guess the amount of people who care
> about slirp *and* know about VMSTATE is extremely small), and a proof of
> concept for the portability to non-ipv4 addresse spaces.
The number of people who care about slirp, IPv6, VMState is even smaller :-)
Hmm, I don't really know IPv6 but I'm thinking this code will become something like
the following (says he not knowing whether a scope-id or a flowinfo
is something that needs migrating) (untested):
static const VMStateDescription vmstate_slirp_socket_addr = {
.name = "slirp-socket-addr",
.version_id = 4,
.fields = (VMStateField[]) {
VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
slirp_family_inet),
VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
slirp_family_inet),
VMSTATE_BUFFER_TEST(sin6.sin6_addr, union slirp_sockaddr,
slirp_family_inet6),
VMSTATE_UINT16_TEST(sin6.sin6_port, union slirp_sockaddr,
slirp_family_inet6),
VMSTATE_UINT32_TEST(sin6.sin6_flowinfo, union slirp_sockaddr,
slirp_family_inet6),
VMSTATE_UINT32_TEST(sin6.sin6_scope_id, union slirp_sockaddr,
slirp_family_inet6),
VMSTATE_END_OF_LIST()
}
};
So to me that looks pretty clean, we need to add another slirp_family_inet6
test function, but then we just add the extra fields for the IPv6 stuff.
Can you suggest an IPv6 command line for testing that ?
Dave
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level
2016-11-28 9:08 ` Dr. David Alan Gilbert
@ 2016-11-28 10:48 ` Samuel Thibault
2016-11-30 11:54 ` Dr. David Alan Gilbert
0 siblings, 1 reply; 13+ messages in thread
From: Samuel Thibault @ 2016-11-28 10:48 UTC (permalink / raw)
To: Dr. David Alan Gilbert; +Cc: qemu-devel, quintela, amit.shah
Hello,
Dr. David Alan Gilbert, on Mon 28 Nov 2016 09:08:16 +0000, wrote:
> Hmm, I don't really know IPv6 but I'm thinking this code will become something like
> the following (says he not knowing whether a scope-id or a flowinfo
> is something that needs migrating) (untested):
>
>
> static const VMStateDescription vmstate_slirp_socket_addr = {
> .name = "slirp-socket-addr",
> .version_id = 4,
> .fields = (VMStateField[]) {
> VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
> VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
> slirp_family_inet),
> VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
> slirp_family_inet),
>
> VMSTATE_BUFFER_TEST(sin6.sin6_addr, union slirp_sockaddr,
> slirp_family_inet6),
> VMSTATE_UINT16_TEST(sin6.sin6_port, union slirp_sockaddr,
> slirp_family_inet6),
> VMSTATE_UINT32_TEST(sin6.sin6_flowinfo, union slirp_sockaddr,
> slirp_family_inet6),
> VMSTATE_UINT32_TEST(sin6.sin6_scope_id, union slirp_sockaddr,
> slirp_family_inet6),
>
> VMSTATE_END_OF_LIST()
> }
> };
Ok, that looks good :)
> So to me that looks pretty clean, we need to add another slirp_family_inet6
> test function, but then we just add the extra fields for the IPv6 stuff.
Yes, now I see.
> Can you suggest an IPv6 command line for testing that ?
Well, it doesn't exist yet, that's the problem. And applying your patch
would have made it to exist even harder, so that's why I was afraid.
I would say that your patch should contain these IPv6 lines, but as
comments since they are untested, for the person who will at some point
want to implement the IPv6 case here.
Samuel
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ]
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
` (4 preceding siblings ...)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 5/5] slirp: VMStatify remaining except for loop Dr. David Alan Gilbert (git)
@ 2016-11-29 8:31 ` no-reply
2016-11-29 13:33 ` no-reply
6 siblings, 0 replies; 13+ messages in thread
From: no-reply @ 2016-11-29 8:31 UTC (permalink / raw)
To: dgilbert; +Cc: famz, qemu-devel, samuel.thibault, amit.shah, quintela
Hi,
Your series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Subject: [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ]
Type: series
Message-id: 20161123185258.771-1-dgilbert@redhat.com
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=16
make docker-test-quick@centos6
make docker-test-mingw@fedora
make docker-test-build@min-glib
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
061e104 slirp: VMStatify remaining except for loop
135c6f1 slirp: VMStatify socket level
6ac402d slirp: Common lhost/fhost union
c896e4c slirp: VMStatify sbuf
1be2227 slirp: VMState conversion; tcpcb
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into 'dtc'...
Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
BUILD centos6
make[1]: Entering directory `/var/tmp/patchew-tester-tmp-11md39u7/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
ccache-3.1.6-2.el6.x86_64
epel-release-6-8.noarch
gcc-4.4.7-17.el6.x86_64
git-1.7.1-4.el6_7.1.x86_64
glib2-devel-2.28.8-5.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
make-3.81-23.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
tar-1.23-15.el6_8.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=libfdt-devel ccache tar git make gcc g++ zlib-devel glib2-devel SDL-devel pixman-devel epel-release
HOSTNAME=5925680360d7
TERM=xterm
MAKEFLAGS= -j16
HISTSIZE=1000
J=16
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install/share/qemu
binary directory /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install/etc
local state directory /var/tmp/qemu-build/install/var
Manual directory /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
pixman system
SDL support yes (1.2.14)
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
COLO support yes
RDMA support no
TCG interpreter no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
GlusterFS support no
Archipelago support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
GEN qapi-event.h
GEN qmp-introspect.h
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN config-all-devices.mak
GEN trace/generated-tracers.h
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN qmp-introspect.c
GEN qapi-types.c
GEN qapi-visit.c
GEN qapi-event.c
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qfloat.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
GEN trace/generated-tracers.c
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/fifo8.o
CC util/acl.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset-add-fd.o
CC stubs/fdset-find-fd.o
CC stubs/fdset-get-fd.o
CC stubs/fdset-remove-fd.o
CC stubs/gdbstub.o
CC stubs/get-fd.o
CC stubs/get-next-serial.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/mon-is-qmp.o
CC stubs/monitor-init.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/replay-user.o
CC stubs/reset.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/vm-stop.o
CC stubs/uuid.o
CC stubs/vmstate.o
CC stubs/cpus.o
CC stubs/kvm.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/vhost.o
CC stubs/iohandler.o
CC stubs/smbios_type_38.o
CC stubs/ipmi.o
CC contrib/ivshmem-client/ivshmem-client.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/migration-colo.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC qemu-nbd.o
CC async.o
CC thread-pool.o
CC block.o
CC blockjob.o
CC main-loop.o
CC iohandler.o
CC qemu-timer.o
CC aio-posix.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw_bsd.o
CC block/vdi.o
CC block/qcow.o
CC block/vmdk.o
CC block/cloop.o
CC block/vpc.o
CC block/bochs.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed-gencb.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/vhdx.o
CC block/qed-check.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/qapi.o
CC block/block-backend.o
CC block/snapshot.o
CC block/raw-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/backup.o
CC block/write-threshold.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/secret.o
CC crypto/tlssession.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/afsplit.o
CC crypto/ivgen-plain64.o
CC crypto/block.o
CC crypto/xts.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel-buffer.o
CC io/channel.o
CC io/channel-command.o
CC io/channel-tls.o
CC io/channel-file.o
CC io/channel-util.o
CC io/channel-watch.o
CC io/channel-socket.o
CC io/channel-websock.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-bridge-helper.o
CC qemu-io.o
CC blockdev.o
CC blockdev-nbd.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC qemu-char.o
CC page_cache.o
CC accel.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC tpm.o
CC vl.o
CC device_tree.o
GEN qmp-marshal.c
CC qmp.o
CC hmp.o
CC audio/audio.o
CC cpus-common.o
CC audio/mixeng.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-random.o
CC backends/rng-egd.o
CC backends/testdev.o
CC backends/msmouse.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/ich9.o
CC hw/acpi/pcihp.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/memory_hotplug_acpi_table.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/ipmi.o
CC hw/acpi/aml-build.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/pcspk.o
CC hw/audio/hda-codec.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/onenand.o
CC hw/block/ecc.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/imx_serial.o
CC hw/char/debugcon.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/null-machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/i8257.o
CC hw/dma/pl330.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/virtio-input.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/intc.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/arm_l2x0.o
CC hw/misc/a9scu.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/arm11scu.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pci_expander_bridge.o
/tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
/tmp/qemu-test/src/hw/nvram/fw_cfg.c:329: warning: ‘read’ may be used uninitialized in this function
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-host/piix.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pci-stub.o
CC hw/pci/pcie_port.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/megasas.o
CC hw/scsi/esp.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/sdhci.o
CC hw/sd/core.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios.o
CC hw/ssi/ssi.o
CC hw/ssi/pl022.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/a9gtimer.o
CC hw/timer/hpet.o
CC hw/timer/ds1338.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/imx_epit.o
CC hw/timer/pl031.o
CC hw/timer/imx_gpt.o
CC hw/timer/twl92230.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_passthrough.o
CC hw/tpm/tpm_util.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/libhw.o
CC hw/usb/bus.o
CC hw/usb/desc.o
CC hw/usb/hcd-uhci.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/dev-mtp.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-bus.o
CC hw/watchdog/watchdog.o
CC hw/virtio/virtio-mmio.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_i6300esb.o
CC migration/migration.o
CC migration/socket.o
CC migration/exec.o
CC migration/fd.o
CC migration/tls.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/qemu-file.o
CC migration/xbzrle.o
CC migration/qemu-file-channel.o
CC migration/postcopy-ram.o
CC migration/block.o
CC migration/qjson.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/l2tpv3.o
CC net/eth.o
CC net/tap.o
CC net/vhost-user.o
CC net/tap-linux.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-char.o
CC replay/replay-snapshot.o
CC replay/replay-input.o
CC slirp/cksum.o
CC slirp/if.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/slirp.o
CC slirp/dhcpv6.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
/tmp/qemu-test/src/slirp/slirp.c:1247: warning: implicit declaration of function ‘VMSTATE_WITH_TMP’
/tmp/qemu-test/src/slirp/slirp.c:1247: error: expected expression before ‘struct’
make: *** [slirp/slirp.o] Error 1
make: *** Waiting for unfinished jobs....
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory `/var/tmp/patchew-tester-tmp-11md39u7/src'
make: *** [docker-run-test-quick@centos6] Error 2
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ]
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
` (5 preceding siblings ...)
2016-11-29 8:31 ` [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] no-reply
@ 2016-11-29 13:33 ` no-reply
6 siblings, 0 replies; 13+ messages in thread
From: no-reply @ 2016-11-29 13:33 UTC (permalink / raw)
To: dgilbert; +Cc: famz, qemu-devel, samuel.thibault, amit.shah, quintela
Hi,
Your series seems to have some coding style problems. See output below for
more information:
Subject: [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ]
Type: series
Message-id: 20161123185258.771-1-dgilbert@redhat.com
=== TEST SCRIPT BEGIN ===
#!/bin/bash
BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0
# Useful git options
git config --local diff.renamelimit 0
git config --local diff.renames True
commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
failed=1
echo
fi
n=$((n+1))
done
exit $failed
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
061e104 slirp: VMStatify remaining except for loop
135c6f1 slirp: VMStatify socket level
6ac402d slirp: Common lhost/fhost union
c896e4c slirp: VMStatify sbuf
1be2227 slirp: VMState conversion; tcpcb
=== OUTPUT BEGIN ===
Checking PATCH 1/5: slirp: VMState conversion; tcpcb...
ERROR: code indent should never use tabs
#210: FILE: slirp/tcp_var.h:51:
+^Iuint8_t t_force;^I^I/* 1 if forcing out a byte */$
ERROR: code indent should never use tabs
#220: FILE: slirp/tcp_var.h:112:
+^Iuint8_t^It_oobflags;^I^I/* have some */$
ERROR: code indent should never use tabs
#221: FILE: slirp/tcp_var.h:113:
+^Iuint8_t^It_iobc;^I^I^I/* input character */$
total: 3 errors, 0 warnings, 195 lines checked
Your patch has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 2/5: slirp: VMStatify sbuf...
ERROR: code indent should never use tabs
#25: FILE: slirp/sbuf.h:15:
+^Iuint32_t sb_cc;^I^I/* actual chars in buffer */$
ERROR: code indent should never use tabs
#26: FILE: slirp/sbuf.h:16:
+^Iuint32_t sb_datalen;^I/* Length of data */$
total: 2 errors, 0 warnings, 155 lines checked
Your patch has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 3/5: slirp: Common lhost/fhost union...
Checking PATCH 4/5: slirp: VMStatify socket level...
Checking PATCH 5/5: slirp: VMStatify remaining except for loop...
=== OUTPUT END ===
Test command exited with code: 1
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level
2016-11-28 10:48 ` Samuel Thibault
@ 2016-11-30 11:54 ` Dr. David Alan Gilbert
0 siblings, 0 replies; 13+ messages in thread
From: Dr. David Alan Gilbert @ 2016-11-30 11:54 UTC (permalink / raw)
To: Samuel Thibault; +Cc: qemu-devel, quintela, amit.shah
* Samuel Thibault (samuel.thibault@gnu.org) wrote:
> Hello,
>
> Dr. David Alan Gilbert, on Mon 28 Nov 2016 09:08:16 +0000, wrote:
> > Hmm, I don't really know IPv6 but I'm thinking this code will become something like
> > the following (says he not knowing whether a scope-id or a flowinfo
> > is something that needs migrating) (untested):
> >
> >
> > static const VMStateDescription vmstate_slirp_socket_addr = {
> > .name = "slirp-socket-addr",
> > .version_id = 4,
> > .fields = (VMStateField[]) {
> > VMSTATE_UINT16(ss.ss_family, union slirp_sockaddr),
> > VMSTATE_UINT32_TEST(sin.sin_addr.s_addr, union slirp_sockaddr,
> > slirp_family_inet),
> > VMSTATE_UINT16_TEST(sin.sin_port, union slirp_sockaddr,
> > slirp_family_inet),
> >
> > VMSTATE_BUFFER_TEST(sin6.sin6_addr, union slirp_sockaddr,
> > slirp_family_inet6),
> > VMSTATE_UINT16_TEST(sin6.sin6_port, union slirp_sockaddr,
> > slirp_family_inet6),
> > VMSTATE_UINT32_TEST(sin6.sin6_flowinfo, union slirp_sockaddr,
> > slirp_family_inet6),
> > VMSTATE_UINT32_TEST(sin6.sin6_scope_id, union slirp_sockaddr,
> > slirp_family_inet6),
> >
> > VMSTATE_END_OF_LIST()
> > }
> > };
>
> Ok, that looks good :)
>
> > So to me that looks pretty clean, we need to add another slirp_family_inet6
> > test function, but then we just add the extra fields for the IPv6 stuff.
>
> Yes, now I see.
>
> > Can you suggest an IPv6 command line for testing that ?
>
> Well, it doesn't exist yet, that's the problem. And applying your patch
> would have made it to exist even harder, so that's why I was afraid.
>
> I would say that your patch should contain these IPv6 lines, but as
> comments since they are untested, for the person who will at some point
> want to implement the IPv6 case here.
OK, yes I can just add them as a comment and let someone who fixes
the rest of the IPv6 code turn it on.
Dave
> Samuel
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2016-11-30 11:54 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-23 18:52 [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 1/5] slirp: VMState conversion; tcpcb Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 2/5] slirp: VMStatify sbuf Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 3/5] slirp: Common lhost/fhost union Dr. David Alan Gilbert (git)
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 4/5] slirp: VMStatify socket level Dr. David Alan Gilbert (git)
2016-11-27 15:13 ` Samuel Thibault
2016-11-27 15:28 ` Samuel Thibault
2016-11-28 9:08 ` Dr. David Alan Gilbert
2016-11-28 10:48 ` Samuel Thibault
2016-11-30 11:54 ` Dr. David Alan Gilbert
2016-11-23 18:52 ` [Qemu-devel] [PATCH v2 5/5] slirp: VMStatify remaining except for loop Dr. David Alan Gilbert (git)
2016-11-29 8:31 ` [Qemu-devel] [PATCH v2 0/5] SLIRP VMStatification [ for 2.9 ] no-reply
2016-11-29 13:33 ` no-reply
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.