[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 45/50] vhost-user: Add VHOST_USER_POSTCOPY_END mes
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 45/50] vhost-user: Add VHOST_USER_POSTCOPY_END message |
Date: |
Tue, 20 Mar 2018 05:17:59 +0200 |
From: "Dr. David Alan Gilbert" <address@hidden>
This message is sent just before the end of postcopy to get the
client to stop using userfault since we wont respond to any more
requests. It should close userfaultfd so that any other pages
get mapped to the backing file automatically by the kernel, since
at this point we know we've received everything.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Peter Xu <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
docs/interop/vhost-user.txt | 12 ++++++++++++
contrib/libvhost-user/libvhost-user.h | 1 +
contrib/libvhost-user/libvhost-user.c | 23 +++++++++++++++++++++++
hw/virtio/vhost-user.c | 1 +
4 files changed, 37 insertions(+)
diff --git a/docs/interop/vhost-user.txt b/docs/interop/vhost-user.txt
index e295ef1..c058c40 100644
--- a/docs/interop/vhost-user.txt
+++ b/docs/interop/vhost-user.txt
@@ -729,6 +729,18 @@ Master message types
This is always sent sometime after a VHOST_USER_POSTCOPY_ADVISE, and
thus only when VHOST_USER_PROTOCOL_F_PAGEFAULT is supported.
+ * VHOST_USER_POSTCOPY_END
+ Id: 30
+ Slave payload: u64
+
+ Master advises that postcopy migration has now completed. The
+ slave must disable the userfaultfd. The response is an acknowledgement
+ only.
+ When VHOST_USER_PROTOCOL_F_PAGEFAULT is supported, this message
+ is sent at the end of the migration, after VHOST_USER_POSTCOPY_LISTEN
+ was previously sent.
+ The value returned is an error indication; 0 is success.
+
Slave message types
-------------------
diff --git a/contrib/libvhost-user/libvhost-user.h
b/contrib/libvhost-user/libvhost-user.h
index ed505cf..79f7a53 100644
--- a/contrib/libvhost-user/libvhost-user.h
+++ b/contrib/libvhost-user/libvhost-user.h
@@ -87,6 +87,7 @@ typedef enum VhostUserRequest {
VHOST_USER_CLOSE_CRYPTO_SESSION = 27,
VHOST_USER_POSTCOPY_ADVISE = 28,
VHOST_USER_POSTCOPY_LISTEN = 29,
+ VHOST_USER_POSTCOPY_END = 30,
VHOST_USER_MAX
} VhostUserRequest;
diff --git a/contrib/libvhost-user/libvhost-user.c
b/contrib/libvhost-user/libvhost-user.c
index 5feed52..504ff5e 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -99,6 +99,7 @@ vu_request_to_string(unsigned int req)
REQ(VHOST_USER_SET_CONFIG),
REQ(VHOST_USER_POSTCOPY_ADVISE),
REQ(VHOST_USER_POSTCOPY_LISTEN),
+ REQ(VHOST_USER_POSTCOPY_END),
REQ(VHOST_USER_MAX),
};
#undef REQ
@@ -1094,6 +1095,26 @@ vu_set_postcopy_listen(VuDev *dev, VhostUserMsg *vmsg)
vmsg->payload.u64 = 0; /* Success */
return true;
}
+
+static bool
+vu_set_postcopy_end(VuDev *dev, VhostUserMsg *vmsg)
+{
+ DPRINT("%s: Entry\n", __func__);
+ dev->postcopy_listening = false;
+ if (dev->postcopy_ufd > 0) {
+ close(dev->postcopy_ufd);
+ dev->postcopy_ufd = -1;
+ DPRINT("%s: Done close\n", __func__);
+ }
+
+ vmsg->fd_num = 0;
+ vmsg->payload.u64 = 0;
+ vmsg->size = sizeof(vmsg->payload.u64);
+ vmsg->flags = VHOST_USER_VERSION | VHOST_USER_REPLY_MASK;
+ DPRINT("%s: exit\n", __func__);
+ return true;
+}
+
static bool
vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
{
@@ -1169,6 +1190,8 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
return vu_set_postcopy_advise(dev, vmsg);
case VHOST_USER_POSTCOPY_LISTEN:
return vu_set_postcopy_listen(dev, vmsg);
+ case VHOST_USER_POSTCOPY_END:
+ return vu_set_postcopy_end(dev, vmsg);
default:
vmsg_close_fds(vmsg);
vu_panic(dev, "Unhandled request: %d", vmsg->request);
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index a785aef..230f2f9 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -82,6 +82,7 @@ typedef enum VhostUserRequest {
VHOST_USER_CLOSE_CRYPTO_SESSION = 27,
VHOST_USER_POSTCOPY_ADVISE = 28,
VHOST_USER_POSTCOPY_LISTEN = 29,
+ VHOST_USER_POSTCOPY_END = 30,
VHOST_USER_MAX
} VhostUserRequest;
--
MST
- [Qemu-devel] [PULL v2 38/50] vhost+postcopy: Helper to send requests to source for shared pages, (continued)
- [Qemu-devel] [PULL v2 38/50] vhost+postcopy: Helper to send requests to source for shared pages, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 39/50] vhost+postcopy: Resolve client address, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 30/50] postcopy: Allow registering of fd handler, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 40/50] postcopy: helper for waking shared, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 46/50] vhost+postcopy: Wire up POSTCOPY_END notify, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 43/50] vhost+postcopy: Call wakeups, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 44/50] libvhost-user: mprotect & madvises for postcopy, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 35/50] libvhost-user+postcopy: Register new regions with the ufd, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 48/50] postcopy: Allow shared memory, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 42/50] vhost+postcopy: Add vhost waker, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 45/50] vhost-user: Add VHOST_USER_POSTCOPY_END message,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v2 50/50] postcopy shared docs, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 41/50] postcopy: postcopy_notify_shared_wake, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 47/50] vhost: Huge page align and merge, Michael S. Tsirkin, 2018/03/19
- [Qemu-devel] [PULL v2 49/50] libvhost-user: Claim support for postcopy, Michael S. Tsirkin, 2018/03/19
- Re: [Qemu-devel] [PULL v2 00/50] virtio, vhost, pci, pc: features, cleanups, Peter Maydell, 2018/03/20
- Re: [Qemu-devel] [PULL v2 00/50] virtio, vhost, pci, pc: features, cleanups, Michael S. Tsirkin, 2018/03/20
- Re: [Qemu-devel] [PULL v2 00/50] virtio, vhost, pci, pc: features, cleanups, Michael S. Tsirkin, 2018/03/20
- Re: [Qemu-devel] [PULL v2 00/50] virtio, vhost, pci, pc: features, cleanups, Peter Maydell, 2018/03/20
- Re: [Qemu-devel] [PULL v2 00/50] virtio, vhost, pci, pc: features, cleanups, Michael S. Tsirkin, 2018/03/20
- Re: [Qemu-devel] [PULL v2 00/50] virtio, vhost, pci, pc: features, cleanups, Peter Maydell, 2018/03/20