All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Alexandr Moshkov <dtalexundeer@yandex-team.ru>
Cc: qemu-devel@nongnu.org, Raphael Norwitz <raphael@enfabrica.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Stefano Garzarella <sgarzare@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>,
	Fabiano Rosas <farosas@suse.de>, Eric Blake <eblake@redhat.com>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [PATCH 1/2] vhost: support inflight save/load
Date: Tue, 21 Oct 2025 15:29:12 -0400	[thread overview]
Message-ID: <aPffCBqvNKmOE-CG@x1.local> (raw)
In-Reply-To: <20251020054413.2614932-2-dtalexundeer@yandex-team.ru>

On Mon, Oct 20, 2025 at 10:44:14AM +0500, Alexandr Moshkov wrote:
> vhost_dev_load_inflight and vhost_dev_save_inflight have been deleted
> by:
> 
> abe9ff2 ("vhost: Remove unused vhost_dev_{load|save}_inflight")
> 
> So, now they are needed for future commit.
> Return them, and their helper vhost_dev_resize_inflight.
> 
> Signed-off-by: Alexandr Moshkov <dtalexundeer@yandex-team.ru>
> ---
>  hw/virtio/vhost.c         | 56 +++++++++++++++++++++++++++++++++++++++
>  include/hw/virtio/vhost.h |  2 ++
>  2 files changed, 58 insertions(+)
> 
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index 266a11514a..16ce9a6037 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -2013,6 +2013,62 @@ int vhost_dev_get_inflight(struct vhost_dev *dev, uint16_t queue_size,
>      return 0;
>  }
>  
> +static int vhost_dev_resize_inflight(struct vhost_inflight *inflight,
> +                                     uint64_t new_size)
> +{
> +    Error *err = NULL;
> +    int fd = -1;
> +    void *addr = qemu_memfd_alloc("vhost-inflight", new_size,
> +                                  F_SEAL_GROW | F_SEAL_SHRINK | F_SEAL_SEAL,
> +                                  &fd, &err);
> +    if (err) {
> +        error_report_err(err);
> +        return -ENOMEM;
> +    }
> +
> +    vhost_dev_free_inflight(inflight);
> +    inflight->offset = 0;
> +    inflight->addr = addr;
> +    inflight->fd = fd;
> +    inflight->size = new_size;
> +
> +    return 0;
> +}
> +
> +void vhost_dev_save_inflight(struct vhost_inflight *inflight, QEMUFile *f)
> +{
> +    if (inflight->addr) {
> +        qemu_put_be64(f, inflight->size);
> +        qemu_put_be16(f, inflight->queue_size);
> +        qemu_put_buffer(f, inflight->addr, inflight->size);
> +    } else {
> +        qemu_put_be64(f, 0);
> +    }

Can we use VMSD (extra fields, or subsections) to describe any new data for
migration?

In general, we want to avoid using qemufile API as much as possible in the
future.  Hard-coded VMStateInfo is not suggested.

Thanks,

> +}
> +
> +int vhost_dev_load_inflight(struct vhost_inflight *inflight, QEMUFile *f)
> +{
> +    uint64_t size;
> +
> +    size = qemu_get_be64(f);
> +    if (!size) {
> +        return 0;
> +    }
> +
> +    if (inflight->size != size) {
> +        int ret = vhost_dev_resize_inflight(inflight, size);
> +        if (ret < 0) {
> +            return ret;
> +        }
> +    }
> +
> +    inflight->queue_size = qemu_get_be16(f);
> +
> +    qemu_get_buffer(f, inflight->addr, size);
> +
> +    return 0;
> +}
> +
>  static int vhost_dev_set_vring_enable(struct vhost_dev *hdev, int enable)
>  {
>      if (!hdev->vhost_ops->vhost_set_vring_enable) {
> diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
> index 08bbb4dfe9..da1f0c2361 100644
> --- a/include/hw/virtio/vhost.h
> +++ b/include/hw/virtio/vhost.h
> @@ -402,6 +402,8 @@ int vhost_virtqueue_stop(struct vhost_dev *dev, struct VirtIODevice *vdev,
>  
>  void vhost_dev_reset_inflight(struct vhost_inflight *inflight);
>  void vhost_dev_free_inflight(struct vhost_inflight *inflight);
> +void vhost_dev_save_inflight(struct vhost_inflight *inflight, QEMUFile *f);
> +int vhost_dev_load_inflight(struct vhost_inflight *inflight, QEMUFile *f);
>  int vhost_dev_prepare_inflight(struct vhost_dev *hdev, VirtIODevice *vdev);
>  int vhost_dev_set_inflight(struct vhost_dev *dev,
>                             struct vhost_inflight *inflight);
> -- 
> 2.34.1
> 

-- 
Peter Xu



  reply	other threads:[~2025-10-21 19:30 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-20  5:44 [PATCH 0/2] vhost-user-blk: support inflight migration Alexandr Moshkov
2025-10-20  5:44 ` [PATCH 1/2] vhost: support inflight save/load Alexandr Moshkov
2025-10-21 19:29   ` Peter Xu [this message]
2025-10-23  6:46     ` Alexandr Moshkov
2025-10-20  5:44 ` [PATCH 2/2] vhost-user-blk: support inflight migration Alexandr Moshkov
2025-10-20  9:55   ` Markus Armbruster
2025-10-20 10:34     ` Alexandr Moshkov
2025-10-20 11:47       ` Markus Armbruster
2025-10-23 19:24         ` Peter Xu
2025-10-24  8:42           ` Alexandr Moshkov
2025-10-23 14:29   ` Lei Yang
2025-10-24  8:37     ` Alexandr Moshkov
2025-10-25 14:19       ` Lei Yang
2025-10-20  9:55 ` [PATCH 0/2] " Markus Armbruster
2025-10-20 10:16   ` Alexandr Moshkov
2025-10-21 18:54 ` Raphael Norwitz
2025-10-22  7:59   ` Alexandr Moshkov
2025-10-22 21:33     ` Raphael Norwitz
2025-10-23  6:44       ` Alexandr Moshkov
2025-10-23 17:53         ` Raphael Norwitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aPffCBqvNKmOE-CG@x1.local \
    --to=peterx@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dtalexundeer@yandex-team.ru \
    --cc=eblake@redhat.com \
    --cc=farosas@suse.de \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=raphael@enfabrica.net \
    --cc=sgarzare@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.