* [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression @ 2017-08-29 14:48 Marc-André Lureau 2017-08-29 14:48 ` [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Marc-André Lureau @ 2017-08-29 14:48 UTC (permalink / raw) To: qemu-devel; +Cc: victork, mst, Marc-André Lureau Hi, libvhost-user doesn't support resuming with the same trick vubr had since commit 523b018dde3b7650fe5401d0499b30cf2f117515. The following two patches fix that regression. Thanks Marc-André Lureau (2): libvhost-user: support resuming vq->last_avail_idx based on used_idx vhost-user-bridge: fix resume regression (since 2.9) contrib/libvhost-user/libvhost-user.h | 5 +++++ contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ tests/vhost-user-bridge.c | 7 +++++++ 3 files changed, 25 insertions(+) -- 2.14.1.146.gd35faa819 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 14:48 [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Marc-André Lureau @ 2017-08-29 14:48 ` Marc-André Lureau 2017-08-29 15:01 ` Michael S. Tsirkin 2017-08-29 14:48 ` [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau 2017-08-29 15:02 ` [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin 2 siblings, 1 reply; 12+ messages in thread From: Marc-André Lureau @ 2017-08-29 14:48 UTC (permalink / raw) To: qemu-devel; +Cc: victork, mst, Marc-André Lureau This is the same workaround as commit 523b018dde3b765, which was lost with libvhost-user transition in commit e10e798c85c2331. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- contrib/libvhost-user/libvhost-user.h | 5 +++++ contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h index 53ef222c0b..aca71717c1 100644 --- a/contrib/libvhost-user/libvhost-user.h +++ b/contrib/libvhost-user/libvhost-user.h @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, int *do_reply); typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); +typedef bool (*vu_queue_resume_to_used_cb) (VuDev *dev, int qidx); typedef struct VuDevIface { /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ @@ -148,6 +149,10 @@ typedef struct VuDevIface { vu_process_msg_cb process_msg; /* tells when queues can be processed */ vu_queue_set_started_cb queue_set_started; + /* If the queue must be resumed to vring.used->idx. */ + /* This can help to support resuming on unmanaged exit/crash when + * the slave/driver processes elements in order. */ + vu_queue_resume_to_used_cb queue_resume_to_used; } VuDevIface; typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c index 35fa0c5e56..36439caed6 100644 --- a/contrib/libvhost-user/libvhost-user.c +++ b/contrib/libvhost-user/libvhost-user.c @@ -521,6 +521,19 @@ vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg) vq->used_idx = vq->vring.used->idx; + if (vq->last_avail_idx != vq->used_idx) { + bool resume = dev->iface->queue_resume_to_used && + dev->iface->queue_resume_to_used(dev, index); + + DPRINT("Last avail index != used index: %u != %u%s\n", + vq->last_avail_idx, vq->used_idx, + resume ? ", resuming" : ""); + + if (resume) { + vq->shadow_avail_idx = vq->last_avail_idx = vq->used_idx; + } + } + return false; } -- 2.14.1.146.gd35faa819 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 14:48 ` [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau @ 2017-08-29 15:01 ` Michael S. Tsirkin 2017-08-29 15:04 ` Marc-André Lureau 0 siblings, 1 reply; 12+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:01 UTC (permalink / raw) To: Marc-André Lureau; +Cc: qemu-devel, victork On Tue, Aug 29, 2017 at 04:48:04PM +0200, Marc-André Lureau wrote: > This is the same workaround as commit 523b018dde3b765, which was lost > with libvhost-user transition in commit e10e798c85c2331. > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > contrib/libvhost-user/libvhost-user.h | 5 +++++ > contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h > index 53ef222c0b..aca71717c1 100644 > --- a/contrib/libvhost-user/libvhost-user.h > +++ b/contrib/libvhost-user/libvhost-user.h > @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); > typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, > int *do_reply); > typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); > +typedef bool (*vu_queue_resume_to_used_cb) (VuDev *dev, int qidx); > > typedef struct VuDevIface { > /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ > @@ -148,6 +149,10 @@ typedef struct VuDevIface { > vu_process_msg_cb process_msg; > /* tells when queues can be processed */ > vu_queue_set_started_cb queue_set_started; > + /* If the queue must be resumed to vring.used->idx. */ > + /* This can help to support resuming on unmanaged exit/crash when > + * the slave/driver processes elements in order. */ > + vu_queue_resume_to_used_cb queue_resume_to_used; > } VuDevIface; > > typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); Let's consider: this is only safe if queue is processed in order. So I think that would be a better name for the field. > diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c > index 35fa0c5e56..36439caed6 100644 > --- a/contrib/libvhost-user/libvhost-user.c > +++ b/contrib/libvhost-user/libvhost-user.c > @@ -521,6 +521,19 @@ vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg) > > vq->used_idx = vq->vring.used->idx; > > + if (vq->last_avail_idx != vq->used_idx) { > + bool resume = dev->iface->queue_resume_to_used && > + dev->iface->queue_resume_to_used(dev, index); > + > + DPRINT("Last avail index != used index: %u != %u%s\n", > + vq->last_avail_idx, vq->used_idx, > + resume ? ", resuming" : ""); > + > + if (resume) { > + vq->shadow_avail_idx = vq->last_avail_idx = vq->used_idx; > + } > + } > + > return false; > } > > -- > 2.14.1.146.gd35faa819 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 15:01 ` Michael S. Tsirkin @ 2017-08-29 15:04 ` Marc-André Lureau 2017-08-29 15:09 ` Michael S. Tsirkin 0 siblings, 1 reply; 12+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:04 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Victor Kaplansky, QEMU Hi On Tue, Aug 29, 2017 at 5:01 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > On Tue, Aug 29, 2017 at 04:48:04PM +0200, Marc-André Lureau wrote: >> This is the same workaround as commit 523b018dde3b765, which was lost >> with libvhost-user transition in commit e10e798c85c2331. >> >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> >> --- >> contrib/libvhost-user/libvhost-user.h | 5 +++++ >> contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ >> 2 files changed, 18 insertions(+) >> >> diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h >> index 53ef222c0b..aca71717c1 100644 >> --- a/contrib/libvhost-user/libvhost-user.h >> +++ b/contrib/libvhost-user/libvhost-user.h >> @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); >> typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, >> int *do_reply); >> typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); >> +typedef bool (*vu_queue_resume_to_used_cb) (VuDev *dev, int qidx); >> >> typedef struct VuDevIface { >> /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ >> @@ -148,6 +149,10 @@ typedef struct VuDevIface { >> vu_process_msg_cb process_msg; >> /* tells when queues can be processed */ >> vu_queue_set_started_cb queue_set_started; >> + /* If the queue must be resumed to vring.used->idx. */ >> + /* This can help to support resuming on unmanaged exit/crash when >> + * the slave/driver processes elements in order. */ >> + vu_queue_resume_to_used_cb queue_resume_to_used; >> } VuDevIface; >> >> typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); > > Let's consider: this is only safe if queue is processed in order. > So I think that would be a better name for the field. > That's what the comment say already :) Which name do you suggest? vu_queue_is_processed_in_order? Does that imply it should always resume? > >> diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c >> index 35fa0c5e56..36439caed6 100644 >> --- a/contrib/libvhost-user/libvhost-user.c >> +++ b/contrib/libvhost-user/libvhost-user.c >> @@ -521,6 +521,19 @@ vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg) >> >> vq->used_idx = vq->vring.used->idx; >> >> + if (vq->last_avail_idx != vq->used_idx) { >> + bool resume = dev->iface->queue_resume_to_used && >> + dev->iface->queue_resume_to_used(dev, index); >> + >> + DPRINT("Last avail index != used index: %u != %u%s\n", >> + vq->last_avail_idx, vq->used_idx, >> + resume ? ", resuming" : ""); >> + >> + if (resume) { >> + vq->shadow_avail_idx = vq->last_avail_idx = vq->used_idx; >> + } >> + } >> + >> return false; >> } >> >> -- >> 2.14.1.146.gd35faa819 > -- Marc-André Lureau ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 15:04 ` Marc-André Lureau @ 2017-08-29 15:09 ` Michael S. Tsirkin 2017-08-29 15:18 ` Marc-André Lureau 0 siblings, 1 reply; 12+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:09 UTC (permalink / raw) To: Marc-André Lureau; +Cc: Victor Kaplansky, QEMU On Tue, Aug 29, 2017 at 05:04:34PM +0200, Marc-André Lureau wrote: > Hi > > On Tue, Aug 29, 2017 at 5:01 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > > On Tue, Aug 29, 2017 at 04:48:04PM +0200, Marc-André Lureau wrote: > >> This is the same workaround as commit 523b018dde3b765, which was lost > >> with libvhost-user transition in commit e10e798c85c2331. > >> > >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > >> --- > >> contrib/libvhost-user/libvhost-user.h | 5 +++++ > >> contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ > >> 2 files changed, 18 insertions(+) > >> > >> diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h > >> index 53ef222c0b..aca71717c1 100644 > >> --- a/contrib/libvhost-user/libvhost-user.h > >> +++ b/contrib/libvhost-user/libvhost-user.h > >> @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); > >> typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, > >> int *do_reply); > >> typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); > >> +typedef bool (*vu_queue_resume_to_used_cb) (VuDev *dev, int qidx); > >> > >> typedef struct VuDevIface { > >> /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ > >> @@ -148,6 +149,10 @@ typedef struct VuDevIface { > >> vu_process_msg_cb process_msg; > >> /* tells when queues can be processed */ > >> vu_queue_set_started_cb queue_set_started; > >> + /* If the queue must be resumed to vring.used->idx. */ > >> + /* This can help to support resuming on unmanaged exit/crash when > >> + * the slave/driver processes elements in order. */ > >> + vu_queue_resume_to_used_cb queue_resume_to_used; > >> } VuDevIface; > >> > >> typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); > > > > Let's consider: this is only safe if queue is processed in order. > > So I think that would be a better name for the field. > > > That's what the comment say already :) > > Which name do you suggest? vu_queue_is_processed_in_order? Something like this. > Does that > imply it should always resume? Not sure I understand the question. > > > >> diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c > >> index 35fa0c5e56..36439caed6 100644 > >> --- a/contrib/libvhost-user/libvhost-user.c > >> +++ b/contrib/libvhost-user/libvhost-user.c > >> @@ -521,6 +521,19 @@ vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg) > >> > >> vq->used_idx = vq->vring.used->idx; > >> > >> + if (vq->last_avail_idx != vq->used_idx) { > >> + bool resume = dev->iface->queue_resume_to_used && > >> + dev->iface->queue_resume_to_used(dev, index); > >> + > >> + DPRINT("Last avail index != used index: %u != %u%s\n", > >> + vq->last_avail_idx, vq->used_idx, > >> + resume ? ", resuming" : ""); > >> + > >> + if (resume) { > >> + vq->shadow_avail_idx = vq->last_avail_idx = vq->used_idx; > >> + } > >> + } > >> + > >> return false; > >> } > >> > >> -- > >> 2.14.1.146.gd35faa819 > > > > > > -- > Marc-André Lureau ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 15:09 ` Michael S. Tsirkin @ 2017-08-29 15:18 ` Marc-André Lureau 2017-08-29 15:20 ` Michael S. Tsirkin 0 siblings, 1 reply; 12+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:18 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Victor Kaplansky, QEMU Hi On Tue, Aug 29, 2017 at 5:09 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > On Tue, Aug 29, 2017 at 05:04:34PM +0200, Marc-André Lureau wrote: >> Hi >> >> On Tue, Aug 29, 2017 at 5:01 PM, Michael S. Tsirkin <mst@redhat.com> wrote: >> > On Tue, Aug 29, 2017 at 04:48:04PM +0200, Marc-André Lureau wrote: >> >> This is the same workaround as commit 523b018dde3b765, which was lost >> >> with libvhost-user transition in commit e10e798c85c2331. >> >> >> >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> >> >> --- >> >> contrib/libvhost-user/libvhost-user.h | 5 +++++ >> >> contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ >> >> 2 files changed, 18 insertions(+) >> >> >> >> diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h >> >> index 53ef222c0b..aca71717c1 100644 >> >> --- a/contrib/libvhost-user/libvhost-user.h >> >> +++ b/contrib/libvhost-user/libvhost-user.h >> >> @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); >> >> typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, >> >> int *do_reply); >> >> typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); >> >> +typedef bool (*vu_queue_resume_to_used_cb) (VuDev *dev, int qidx); >> >> >> >> typedef struct VuDevIface { >> >> /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ >> >> @@ -148,6 +149,10 @@ typedef struct VuDevIface { >> >> vu_process_msg_cb process_msg; >> >> /* tells when queues can be processed */ >> >> vu_queue_set_started_cb queue_set_started; >> >> + /* If the queue must be resumed to vring.used->idx. */ >> >> + /* This can help to support resuming on unmanaged exit/crash when >> >> + * the slave/driver processes elements in order. */ >> >> + vu_queue_resume_to_used_cb queue_resume_to_used; >> >> } VuDevIface; >> >> >> >> typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); >> > >> > Let's consider: this is only safe if queue is processed in order. >> > So I think that would be a better name for the field. >> > >> That's what the comment say already :) >> >> Which name do you suggest? vu_queue_is_processed_in_order? > > Something like this. > >> Does that >> imply it should always resume? > > Not sure I understand the question. If a "queue_is_processed_in_order", does that imply libvhost-user should always resume it based on used_idx? I think it does, but the correlation is less obvious than explicitly saying "resume_to_used". -- Marc-André Lureau ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx 2017-08-29 15:18 ` Marc-André Lureau @ 2017-08-29 15:20 ` Michael S. Tsirkin 0 siblings, 0 replies; 12+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:20 UTC (permalink / raw) To: Marc-André Lureau; +Cc: Victor Kaplansky, QEMU On Tue, Aug 29, 2017 at 05:18:11PM +0200, Marc-André Lureau wrote: > Hi > > On Tue, Aug 29, 2017 at 5:09 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > > On Tue, Aug 29, 2017 at 05:04:34PM +0200, Marc-André Lureau wrote: > >> Hi > >> > >> On Tue, Aug 29, 2017 at 5:01 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > >> > On Tue, Aug 29, 2017 at 04:48:04PM +0200, Marc-André Lureau wrote: > >> >> This is the same workaround as commit 523b018dde3b765, which was lost > >> >> with libvhost-user transition in commit e10e798c85c2331. > >> >> > >> >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > >> >> --- > >> >> contrib/libvhost-user/libvhost-user.h | 5 +++++ > >> >> contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ > >> >> 2 files changed, 18 insertions(+) > >> >> > >> >> diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h > >> >> index 53ef222c0b..aca71717c1 100644 > >> >> --- a/contrib/libvhost-user/libvhost-user.h > >> >> +++ b/contrib/libvhost-user/libvhost-user.h > >> >> @@ -132,6 +132,7 @@ typedef void (*vu_set_features_cb) (VuDev *dev, uint64_t features); > >> >> typedef int (*vu_process_msg_cb) (VuDev *dev, VhostUserMsg *vmsg, > >> >> int *do_reply); > >> >> typedef void (*vu_queue_set_started_cb) (VuDev *dev, int qidx, bool started); > >> >> +typedef bool (*vu_queue_resume_to_used_cb) (VuDev *dev, int qidx); > >> >> > >> >> typedef struct VuDevIface { > >> >> /* called by VHOST_USER_GET_FEATURES to get the features bitmask */ > >> >> @@ -148,6 +149,10 @@ typedef struct VuDevIface { > >> >> vu_process_msg_cb process_msg; > >> >> /* tells when queues can be processed */ > >> >> vu_queue_set_started_cb queue_set_started; > >> >> + /* If the queue must be resumed to vring.used->idx. */ > >> >> + /* This can help to support resuming on unmanaged exit/crash when > >> >> + * the slave/driver processes elements in order. */ > >> >> + vu_queue_resume_to_used_cb queue_resume_to_used; > >> >> } VuDevIface; > >> >> > >> >> typedef void (*vu_queue_handler_cb) (VuDev *dev, int qidx); > >> > > >> > Let's consider: this is only safe if queue is processed in order. > >> > So I think that would be a better name for the field. > >> > > >> That's what the comment say already :) > >> > >> Which name do you suggest? vu_queue_is_processed_in_order? > > > > Something like this. > > > >> Does that > >> imply it should always resume? > > > > Not sure I understand the question. > > If a "queue_is_processed_in_order", does that imply libvhost-user > should always resume it based on used_idx? I think it does, but the > correlation is less obvious than explicitly saying "resume_to_used". Just add a comment then. You do not want low level details like used index in all backends. > > -- > Marc-André Lureau ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) 2017-08-29 14:48 [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Marc-André Lureau 2017-08-29 14:48 ` [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau @ 2017-08-29 14:48 ` Marc-André Lureau 2017-08-29 15:02 ` Michael S. Tsirkin 2017-08-29 15:02 ` [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin 2 siblings, 1 reply; 12+ messages in thread From: Marc-André Lureau @ 2017-08-29 14:48 UTC (permalink / raw) To: qemu-devel; +Cc: victork, mst, Marc-André Lureau Commit e10e798c85c2331 switched to libvhost-user which lacked support for resuming the avail_idx based on used_idx. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1485867 Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- tests/vhost-user-bridge.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c index 1e5b5ca3da..dca48512ba 100644 --- a/tests/vhost-user-bridge.c +++ b/tests/vhost-user-bridge.c @@ -466,11 +466,18 @@ vubr_panic(VuDev *dev, const char *msg) vubr->quit = 1; } +static bool +vubr_queue_resume_to_used(VuDev *dev, int qidx) +{ + return true; +} + static const VuDevIface vuiface = { .get_features = vubr_get_features, .set_features = vubr_set_features, .process_msg = vubr_process_msg, .queue_set_started = vubr_queue_set_started, + .queue_resume_to_used = vubr_queue_resume_to_used, }; static void -- 2.14.1.146.gd35faa819 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) 2017-08-29 14:48 ` [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau @ 2017-08-29 15:02 ` Michael S. Tsirkin 2017-08-29 15:22 ` Marc-André Lureau 0 siblings, 1 reply; 12+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:02 UTC (permalink / raw) To: Marc-André Lureau; +Cc: qemu-devel, victork On Tue, Aug 29, 2017 at 04:48:05PM +0200, Marc-André Lureau wrote: > Commit e10e798c85c2331 switched to libvhost-user which lacked support > for resuming the avail_idx based on used_idx. > > Fixes: > https://bugzilla.redhat.com/show_bug.cgi?id=1485867 > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Can we add a test for reconnect to catch the regression? > --- > tests/vhost-user-bridge.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c > index 1e5b5ca3da..dca48512ba 100644 > --- a/tests/vhost-user-bridge.c > +++ b/tests/vhost-user-bridge.c > @@ -466,11 +466,18 @@ vubr_panic(VuDev *dev, const char *msg) > vubr->quit = 1; > } > > +static bool > +vubr_queue_resume_to_used(VuDev *dev, int qidx) > +{ > + return true; > +} > + > static const VuDevIface vuiface = { > .get_features = vubr_get_features, > .set_features = vubr_set_features, > .process_msg = vubr_process_msg, > .queue_set_started = vubr_queue_set_started, > + .queue_resume_to_used = vubr_queue_resume_to_used, > }; > > static void > -- > 2.14.1.146.gd35faa819 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) 2017-08-29 15:02 ` Michael S. Tsirkin @ 2017-08-29 15:22 ` Marc-André Lureau 2017-08-29 15:27 ` Michael S. Tsirkin 0 siblings, 1 reply; 12+ messages in thread From: Marc-André Lureau @ 2017-08-29 15:22 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Victor Kaplansky, QEMU Hi On Tue, Aug 29, 2017 at 5:02 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > On Tue, Aug 29, 2017 at 04:48:05PM +0200, Marc-André Lureau wrote: >> Commit e10e798c85c2331 switched to libvhost-user which lacked support >> for resuming the avail_idx based on used_idx. >> >> Fixes: >> https://bugzilla.redhat.com/show_bug.cgi?id=1485867 >> >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > > Can we add a test for reconnect to catch the regression? There is no automated tests for vhost-user-bridge yet. We could probably make one based on "[PATCH v2 0/5] tests/pxe-test: add testcase using vhost-user-bridge" series. We could also add seperate libvhost-user tests, that's not existent yet, partly because libvhost-user was born as a test itself ;). > >> --- >> tests/vhost-user-bridge.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c >> index 1e5b5ca3da..dca48512ba 100644 >> --- a/tests/vhost-user-bridge.c >> +++ b/tests/vhost-user-bridge.c >> @@ -466,11 +466,18 @@ vubr_panic(VuDev *dev, const char *msg) >> vubr->quit = 1; >> } >> >> +static bool >> +vubr_queue_resume_to_used(VuDev *dev, int qidx) >> +{ >> + return true; >> +} >> + >> static const VuDevIface vuiface = { >> .get_features = vubr_get_features, >> .set_features = vubr_set_features, >> .process_msg = vubr_process_msg, >> .queue_set_started = vubr_queue_set_started, >> + .queue_resume_to_used = vubr_queue_resume_to_used, >> }; >> >> static void >> -- >> 2.14.1.146.gd35faa819 > -- Marc-André Lureau ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) 2017-08-29 15:22 ` Marc-André Lureau @ 2017-08-29 15:27 ` Michael S. Tsirkin 0 siblings, 0 replies; 12+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:27 UTC (permalink / raw) To: Marc-André Lureau; +Cc: Victor Kaplansky, QEMU On Tue, Aug 29, 2017 at 05:22:28PM +0200, Marc-André Lureau wrote: > Hi > > On Tue, Aug 29, 2017 at 5:02 PM, Michael S. Tsirkin <mst@redhat.com> wrote: > > On Tue, Aug 29, 2017 at 04:48:05PM +0200, Marc-André Lureau wrote: > >> Commit e10e798c85c2331 switched to libvhost-user which lacked support > >> for resuming the avail_idx based on used_idx. > >> > >> Fixes: > >> https://bugzilla.redhat.com/show_bug.cgi?id=1485867 > >> > >> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > > > > Can we add a test for reconnect to catch the regression? > > There is no automated tests for vhost-user-bridge yet. We could > probably make one based on "[PATCH v2 0/5] tests/pxe-test: add > testcase using vhost-user-bridge" series. Exactly. > We could also add seperate libvhost-user tests, that's not existent > yet, partly because libvhost-user was born as a test itself ;). > > > > >> --- > >> tests/vhost-user-bridge.c | 7 +++++++ > >> 1 file changed, 7 insertions(+) > >> > >> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c > >> index 1e5b5ca3da..dca48512ba 100644 > >> --- a/tests/vhost-user-bridge.c > >> +++ b/tests/vhost-user-bridge.c > >> @@ -466,11 +466,18 @@ vubr_panic(VuDev *dev, const char *msg) > >> vubr->quit = 1; > >> } > >> > >> +static bool > >> +vubr_queue_resume_to_used(VuDev *dev, int qidx) > >> +{ > >> + return true; > >> +} > >> + > >> static const VuDevIface vuiface = { > >> .get_features = vubr_get_features, > >> .set_features = vubr_set_features, > >> .process_msg = vubr_process_msg, > >> .queue_set_started = vubr_queue_set_started, > >> + .queue_resume_to_used = vubr_queue_resume_to_used, > >> }; > >> > >> static void > >> -- > >> 2.14.1.146.gd35faa819 > > > > > > -- > Marc-André Lureau ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression 2017-08-29 14:48 [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Marc-André Lureau 2017-08-29 14:48 ` [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau 2017-08-29 14:48 ` [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau @ 2017-08-29 15:02 ` Michael S. Tsirkin 2 siblings, 0 replies; 12+ messages in thread From: Michael S. Tsirkin @ 2017-08-29 15:02 UTC (permalink / raw) To: Marc-André Lureau; +Cc: qemu-devel, victork On Tue, Aug 29, 2017 at 04:48:03PM +0200, Marc-André Lureau wrote: > Hi, > > libvhost-user doesn't support resuming with the same trick vubr had > since commit 523b018dde3b7650fe5401d0499b30cf2f117515. The following > two patches fix that regression. > > Thanks Copy stable maybe? > Marc-André Lureau (2): > libvhost-user: support resuming vq->last_avail_idx based on used_idx > vhost-user-bridge: fix resume regression (since 2.9) > > contrib/libvhost-user/libvhost-user.h | 5 +++++ > contrib/libvhost-user/libvhost-user.c | 13 +++++++++++++ > tests/vhost-user-bridge.c | 7 +++++++ > 3 files changed, 25 insertions(+) > > -- > 2.14.1.146.gd35faa819 ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-08-29 15:27 UTC | newest] Thread overview: 12+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-08-29 14:48 [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Marc-André Lureau 2017-08-29 14:48 ` [Qemu-devel] [PATCH 1/2] libvhost-user: support resuming vq->last_avail_idx based on used_idx Marc-André Lureau 2017-08-29 15:01 ` Michael S. Tsirkin 2017-08-29 15:04 ` Marc-André Lureau 2017-08-29 15:09 ` Michael S. Tsirkin 2017-08-29 15:18 ` Marc-André Lureau 2017-08-29 15:20 ` Michael S. Tsirkin 2017-08-29 14:48 ` [Qemu-devel] [PATCH 2/2] vhost-user-bridge: fix resume regression (since 2.9) Marc-André Lureau 2017-08-29 15:02 ` Michael S. Tsirkin 2017-08-29 15:22 ` Marc-André Lureau 2017-08-29 15:27 ` Michael S. Tsirkin 2017-08-29 15:02 ` [Qemu-devel] [PATCH 0/2] vhost-user-bridge reconnect regression Michael S. Tsirkin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).