On Fri, Mar 21, 2025 at 2:42 PM Marc-André Lureau <
marcandre.lur...@redhat.com> wrote:

> Hi
>
> On Fri, Mar 21, 2025 at 7:40 AM <yong.hu...@smartx.com> wrote:
> >
> > From: Hyman Huang <yong.hu...@smartx.com>
> >
> > Our goal is to migrate VMs that are configured with qemu-vdagent-typed
> > chardev while allowing the agent to continue working without having
> > to restart the service in guest.
> >
>
> I sent a more complete series last week: "[PATCH for-10.1 00/10]
> Support vdagent migration"
>
> https://patchew.org/QEMU/20250311155932.1472092-1-marcandre.lur...@redhat.com/


Thanks for your reminder, indeed, it migrates the qemu clipboard content
as well, more complete.

Thanks for the work, we'll pick your patchset and try it.


>
>
>
> > Let's justify which fields should be taken into account for struct
> > VDAgentChardev.
> >
> > struct VDAgentChardev {
> >     Chardev parent;
> >
> >     /* config */
> >     bool mouse;
> >     bool clipboard;
> >
> >     /* guest vdagent */
> >     uint32_t caps;
> >     VDIChunkHeader chunk;
> >     uint32_t chunksize;
> >     uint8_t *msgbuf;
> >     uint32_t msgsize;
> >     uint8_t *xbuf;
> >     uint32_t xoff, xsize;
> >     Buffer outbuf;
> >
> >     /* mouse */
> >     DeviceState mouse_dev;
> >     uint32_t mouse_x;
> >     uint32_t mouse_y;
> >     uint32_t mouse_btn;
> >     uint32_t mouse_display;
> >     QemuInputHandlerState *mouse_hs;
> >
> >     /* clipboard */
> >     QemuClipboardPeer cbpeer;
> >     uint32_t last_serial[QEMU_CLIPBOARD_SELECTION__COUNT];
> >     uint32_t cbpending[QEMU_CLIPBOARD_SELECTION__COUNT];
> > };
> >
> > parent:
> > No dynamic information is generated. skip migrating.
> >
> > mouse, clipboard:
> > The mouse and clipboard should be set up identically on both sides.
> > Skip migrating.
> >
> > caps:
> > Store the negotiated caps between the client and the guest.
> > Should migrate.
> >
> > chunk, ... outbuf:
> > The spice agent protocol's message transportation between the client
> > and the guest is implemented using all of these fields, however the
> > message loss can be tolerated by guests because the issue may occur
> > in the real world as well.
> > Could skip migrating.
>
> It's part of the host/guest state, data will be lost and it's likely
> the communication will break if it's not migrated.
>
> >
> > mouse_dev, ... mouse_hs:
> > The mouse state can be reset after a live migration since the agent
> > working inside the guest does not heavily depend on them.
> > Could skip migrating
>
> same
>
> > cbpeer:
> > Since the cbpeer would lose the data it references to if the qemu
> > clipboard data was not migrated, this field can also be initialized
> > after live migration.
> > Could skip migrating
> >
>
> We should migrate the clipboard content too, to avoid having to
> request it again, or have a noticeable effect.
>
> > last_serial, cbpending:
> > It is necessary for the agent to function after live migration.
> > Should migrate.
> >
> > For the last_serial, saving & loading its value to make ensure the
> > client receives the most recent clipboard data from the guest after
> > live migration.
> >
> > For the cbpending, saving & loading its value aims to inform the
> > guest that the clipboard has been released and is now empty in
> > case that the guest acts strangely while supposing that the
> > requested data can be properly retrieved.
> >
> > To summarize, all we need to do is migrate the caps, last_serial
> > and cbpendings fields of the struct VDAgentChardev,
> >
> > Please review, thanks
> >
> > Yong
> >
> > Hyman Huang (3):
> >   vdagent: Wrap vdagent_register_to_qemu_clipboard function
> >   vdagent: Set up mouse and clipboard after live migration
> >   vdagent: Drop blocker to support migration
> >
> >  ui/trace-events |   1 +
> >  ui/vdagent.c    | 102 +++++++++++++++++++++++++++++++++++++++---------
> >  2 files changed, 85 insertions(+), 18 deletions(-)
> >
> > --
> > 2.27.0
> >
>
>

-- 
Best regards

Reply via email to