[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 1/2] vhost: dirty log should be per backend type
From: |
Jason Wang |
Subject: |
Re: [PATCH v4 1/2] vhost: dirty log should be per backend type |
Date: |
Mon, 18 Mar 2024 11:20:39 +0800 |
On Sat, Mar 16, 2024 at 2:33 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
>
>
>
> On 3/14/2024 8:50 PM, Jason Wang wrote:
> > On Fri, Mar 15, 2024 at 5:39 AM Si-Wei Liu <si-wei.liu@oracle.com> wrote:
> >> There could be a mix of both vhost-user and vhost-kernel clients
> >> in the same QEMU process, where separate vhost loggers for the
> >> specific vhost type have to be used. Make the vhost logger per
> >> backend type, and have them properly reference counted.
> > It's better to describe what's the advantage of doing this.
> Yes, I can add that to the log. Although it's a niche use case, it was
> actually a long standing limitation / bug that vhost-user and
> vhost-kernel loggers can't co-exist per QEMU process, but today it's
> just silent failure that may be ended up with. This bug fix removes that
> implicit limitation in the code.
Ok.
> >
> >> Suggested-by: Michael S. Tsirkin <mst@redhat.com>
> >> Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
> >>
> >> ---
> >> v3->v4:
> >> - remove checking NULL return value from vhost_log_get
> >>
> >> v2->v3:
> >> - remove non-effective assertion that never be reached
> >> - do not return NULL from vhost_log_get()
> >> - add neccessary assertions to vhost_log_get()
> >> ---
> >> hw/virtio/vhost.c | 45 +++++++++++++++++++++++++++++++++------------
> >> 1 file changed, 33 insertions(+), 12 deletions(-)
> >>
> >> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> >> index 2c9ac79..612f4db 100644
> >> --- a/hw/virtio/vhost.c
> >> +++ b/hw/virtio/vhost.c
> >> @@ -43,8 +43,8 @@
> >> do { } while (0)
> >> #endif
> >>
> >> -static struct vhost_log *vhost_log;
> >> -static struct vhost_log *vhost_log_shm;
> >> +static struct vhost_log *vhost_log[VHOST_BACKEND_TYPE_MAX];
> >> +static struct vhost_log *vhost_log_shm[VHOST_BACKEND_TYPE_MAX];
> >>
> >> /* Memslots used by backends that support private memslots (without an
> >> fd). */
> >> static unsigned int used_memslots;
> >> @@ -287,6 +287,10 @@ static int vhost_set_backend_type(struct vhost_dev
> >> *dev,
> >> r = -1;
> >> }
> >>
> >> + if (r == 0) {
> >> + assert(dev->vhost_ops->backend_type == backend_type);
> >> + }
> >> +
> > Under which condition could we hit this?
> Just in case some other function inadvertently corrupted this earlier,
> we have to capture discrepancy in the first place... On the other hand,
> it will be helpful for other vhost backend writers to diagnose day-one
> bug in the code. I feel just code comment here will not be
> sufficient/helpful.
See below.
>
> > It seems not good to assert a local logic.
> It seems to me quite a few local asserts are in the same file already,
> vhost_save_backend_state,
For example it has assert for
assert(!dev->started);
which is not the logic of the function itself but require
vhost_dev_start() not to be called before.
But it looks like this patch you assert the code just a few lines
above the assert itself?
dev->vhost_ops = &xxx_ops;
...
assert(dev->vhost_ops->backend_type == backend_type)
?
Thanks
> vhost_load_backend_state,
> vhost_virtqueue_mask, vhost_config_mask, just to name a few. Why local
> assert a problem?
>
> Thanks,
> -Siwei
>
> > Thanks
> >
>
- [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, (continued)
- [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Si-Wei Liu, 2024/03/14
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Jason Wang, 2024/03/15
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Si-Wei Liu, 2024/03/15
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Jason Wang, 2024/03/17
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Si-Wei Liu, 2024/03/18
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Jason Wang, 2024/03/19
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Si-Wei Liu, 2024/03/20
- Re: [PATCH v4 2/2] vhost: Perform memory section dirty scans once per iteration, Jason Wang, 2024/03/20
Re: [PATCH v4 1/2] vhost: dirty log should be per backend type, Jason Wang, 2024/03/14