Re: [PATCH v1 1/2] colo-compare: Fix incorrect data type conversion

2020-09-13 Thread Derek Su
Hi, Chen

Got it, thank you :)

Regards,
Derek

Zhang, Chen 於 2020年9月14日 週一,上午4:02寫道:

>
>
>
>
> > -Original Message-
>
> > From: Derek Su 
>
> > Sent: Saturday, September 12, 2020 3:05 AM
>
> > To: qemu-devel@nongnu.org
>
> > Cc: Zhang, Chen ; lizhij...@cn.fujitsu.com;
>
> > jasow...@redhat.com; Derek Su 
>
> > Subject: [PATCH v1 1/2] colo-compare: Fix incorrect data type conversion
>
> >
>
> > Fix data type conversion of compare_timeout. The incorrect conversion
>
> > results in a random compare_timeout value and unexpected stalls in packet
>
> > comparison.
>
> >
>
>
>
> This bug already found on our internal test too. Just waiting to send.
>
> Good catch! But this patch not fixed the root cause.
>
> Change the compare_timeout from uint32_t to uint64_t is better.
>
> I will send a patch for this and tag reported by you.
>
>
>
> Thanks
>
> Zhang Chen
>
>
>
>
>
> > Signed-off-by: Derek Su 
>
> > ---
>
> >  net/colo-compare.c | 5 +++--
>
> >  1 file changed, 3 insertions(+), 2 deletions(-)
>
> >
>
> > diff --git a/net/colo-compare.c b/net/colo-compare.c index
>
> > 2c20de1537..c4de86ef34 100644
>
> > --- a/net/colo-compare.c
>
> > +++ b/net/colo-compare.c
>
> > @@ -619,11 +619,12 @@ static int colo_packet_compare_other(Packet *spkt,
>
> > Packet *ppkt)
>
> > ppkt->size - offset);  }
>
> >
>
> > -static int colo_old_packet_check_one(Packet *pkt, int64_t *check_time)
>
> > +static int colo_old_packet_check_one(Packet *pkt, void *user_data)
>
> >  {
>
> >  int64_t now = qemu_clock_get_ms(QEMU_CLOCK_HOST);
>
> > +uint32_t check_time = *(uint32_t *)user_data;
>
> >
>
> > -if ((now - pkt->creation_ms) > (*check_time)) {
>
> > +if ((now - pkt->creation_ms) > check_time) {
>
> >  trace_colo_old_packet_check_found(pkt->creation_ms);
>
> >  return 0;
>
> >  } else {
>
> > --
>
> > 2.25.1
>
>
>
> --

Best regards,

Derek Su
QNAP Systems, Inc.
Email: dere...@qnap.com
Tel: (+886)-2-2393-5152 ext. 15017
Address: 13F., No.56, Sec. 1, Xinsheng S. Rd., Zhongzheng Dist., Taipei
City, Taiwan


RE: [PATCH v1 1/2] colo-compare: Fix incorrect data type conversion

2020-09-13 Thread Zhang, Chen



> -Original Message-
> From: Derek Su 
> Sent: Saturday, September 12, 2020 3:05 AM
> To: qemu-devel@nongnu.org
> Cc: Zhang, Chen ; lizhij...@cn.fujitsu.com;
> jasow...@redhat.com; Derek Su 
> Subject: [PATCH v1 1/2] colo-compare: Fix incorrect data type conversion
> 
> Fix data type conversion of compare_timeout. The incorrect conversion
> results in a random compare_timeout value and unexpected stalls in packet
> comparison.
> 

This bug already found on our internal test too. Just waiting to send.
Good catch! But this patch not fixed the root cause.
Change the compare_timeout from uint32_t to uint64_t is better.
I will send a patch for this and tag reported by you.

Thanks
Zhang Chen


> Signed-off-by: Derek Su 
> ---
>  net/colo-compare.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/net/colo-compare.c b/net/colo-compare.c index
> 2c20de1537..c4de86ef34 100644
> --- a/net/colo-compare.c
> +++ b/net/colo-compare.c
> @@ -619,11 +619,12 @@ static int colo_packet_compare_other(Packet *spkt,
> Packet *ppkt)
> ppkt->size - offset);  }
> 
> -static int colo_old_packet_check_one(Packet *pkt, int64_t *check_time)
> +static int colo_old_packet_check_one(Packet *pkt, void *user_data)
>  {
>  int64_t now = qemu_clock_get_ms(QEMU_CLOCK_HOST);
> +uint32_t check_time = *(uint32_t *)user_data;
> 
> -if ((now - pkt->creation_ms) > (*check_time)) {
> +if ((now - pkt->creation_ms) > check_time) {
>  trace_colo_old_packet_check_found(pkt->creation_ms);
>  return 0;
>  } else {
> --
> 2.25.1




[PATCH v1 1/2] colo-compare: Fix incorrect data type conversion

2020-09-11 Thread Derek Su
Fix data type conversion of compare_timeout. The incorrect
conversion results in a random compare_timeout value and
unexpected stalls in packet comparison.

Signed-off-by: Derek Su 
---
 net/colo-compare.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/net/colo-compare.c b/net/colo-compare.c
index 2c20de1537..c4de86ef34 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -619,11 +619,12 @@ static int colo_packet_compare_other(Packet *spkt, Packet 
*ppkt)
ppkt->size - offset);
 }
 
-static int colo_old_packet_check_one(Packet *pkt, int64_t *check_time)
+static int colo_old_packet_check_one(Packet *pkt, void *user_data)
 {
 int64_t now = qemu_clock_get_ms(QEMU_CLOCK_HOST);
+uint32_t check_time = *(uint32_t *)user_data;
 
-if ((now - pkt->creation_ms) > (*check_time)) {
+if ((now - pkt->creation_ms) > check_time) {
 trace_colo_old_packet_check_found(pkt->creation_ms);
 return 0;
 } else {
-- 
2.25.1