On Wed, Mar 15, 2017 at 10:02:46AM +0800, Zhang Chen wrote: > > > On 03/14/2017 07:24 PM, Wei Liu wrote: > > On Mon, Mar 06, 2017 at 10:59:25AM +0800, Zhang Chen wrote: > > > We use kernel colo proxy's way to get the checkpoint event > > > from qemu colo-compare. > > > Qemu colo-compare need add a API to support this(I will add this in qemu). > > > Qemu side patch: > > > https://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg07265.html > > > > > > Signed-off-by: Zhang Chen <zhangchen.f...@cn.fujitsu.com> > > Acked-by: Wei Liu <wei.l...@citrix.com> > > > > But see below. > > > > > @@ -289,8 +393,19 @@ int colo_proxy_checkpoint(libxl__colo_proxy_state > > > *cps, > > > * event. > > > */ > > > if (cps->is_userspace_proxy) { > > > - usleep(timeout_us); > > > - return 0; > > > + ret = colo_userspace_proxy_recv(cps, recvbuff, timeout_us); > > > + if (ret <= 0) { > > > + ret = 0; > > > + goto out1; > > > + } > > > + > > > + if (!strcmp(recvbuff, "DO_CHECKPOINT")) { > > > + ret = 1; > > > + } else { > > > + LOGD(ERROR, ao->domid, "receive qemu colo-compare checkpoint > > > error"); > > > + ret = 0; > > > + } > > > + goto out1; > > > } > > > size = colo_proxy_recv(cps, &buff, timeout_us); > > > @@ -318,4 +433,7 @@ int colo_proxy_checkpoint(libxl__colo_proxy_state > > > *cps, > > > out: > > > free(buff); > > > return ret; > > > + > > > +out1: > > Perhaps try to come up with a better name than out1? Subsequent patch is > > welcome. > > > > How about change 'out1' to 'out_userspace_proxy' ? > If OK, I will send a patch for it. >
How about the following patch instead? Compile test only. In general I would like code to stick with coding style. --->8--- From 0a87defaad529c02babe24055d5782b74d3a38e3 Mon Sep 17 00:00:00 2001 From: Wei Liu <wei.l...@citrix.com> Date: Wed, 15 Mar 2017 10:50:19 +0000 Subject: [PATCH] libxl/colo: unified exit path for colo_proxy_checkpoint Slightly refactor the code to have only one exit path for the said function. Signed-off-by: Wei Liu <wei.l...@citrix.com> Cc: zhangchen.f...@cn.fujitsu.com --- tools/libxl/libxl_colo_proxy.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/tools/libxl/libxl_colo_proxy.c b/tools/libxl/libxl_colo_proxy.c index c3d55104ea..5475f7ea32 100644 --- a/tools/libxl/libxl_colo_proxy.c +++ b/tools/libxl/libxl_colo_proxy.c @@ -375,7 +375,7 @@ typedef struct colo_msg { int colo_proxy_checkpoint(libxl__colo_proxy_state *cps, unsigned int timeout_us) { - uint8_t *buff; + uint8_t *buff = NULL; int64_t size; struct nlmsghdr *h; struct colo_msg *m; @@ -396,7 +396,7 @@ int colo_proxy_checkpoint(libxl__colo_proxy_state *cps, ret = colo_userspace_proxy_recv(cps, recvbuff, timeout_us); if (ret <= 0) { ret = 0; - goto out1; + goto out; } if (!strcmp(recvbuff, "DO_CHECKPOINT")) { @@ -405,14 +405,16 @@ int colo_proxy_checkpoint(libxl__colo_proxy_state *cps, LOGD(ERROR, ao->domid, "receive qemu colo-compare checkpoint error"); ret = 0; } - goto out1; + goto out; } size = colo_proxy_recv(cps, &buff, timeout_us); /* timeout, return no checkpoint message. */ - if (size <= 0) - return 0; + if (size <= 0) { + ret = 0; + goto out; + } h = (struct nlmsghdr *) buff; @@ -433,7 +435,4 @@ int colo_proxy_checkpoint(libxl__colo_proxy_state *cps, out: free(buff); return ret; - -out1: - return ret; } -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel