From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51382) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZK8o6-0004bz-Eg for qemu-devel@nongnu.org; Tue, 28 Jul 2015 13:36:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZK8o3-0000uT-IL for qemu-devel@nongnu.org; Tue, 28 Jul 2015 13:36:50 -0400 Received: from mail-qg0-x22b.google.com ([2607:f8b0:400d:c04::22b]:34290) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZK8o3-0000uM-EN for qemu-devel@nongnu.org; Tue, 28 Jul 2015 13:36:47 -0400 Received: by qgeu79 with SMTP id u79so79733919qge.1 for ; Tue, 28 Jul 2015 10:36:47 -0700 (PDT) Sender: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 28 Jul 2015 19:36:34 +0200 Message-Id: <1438105003-29501-1-git-send-email-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v2 0/9] vhost-user: add migration log support (for 2.5) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: haifeng.lin@huawei.com, mst@redhat.com, thibaut.collet@6wind.com, jasowang@redhat.com, pbonzini@redhat.com, =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Hi, The following series implement shareable log for vhost-user to support memory tracking during live migration. On qemu-side, the solution is fairly straightfoward since vhost already supports the dirty log, only vhost-user couldn't access the log memory until then. The series is based on top of "protocol feature negotiation" series proposed earlier by Michael S. Tsirkin. The last patch provides some documentation on what the backend is supposed to do to handle logging properly. I tested this solution against a modified "vapp": https://github.com/elmarco/vapp branch "log" Since RFC: - moved memfd support in its own .c, include the linux asm/unistd.h headers for syscall nr. Unfortunately, linux/fcntl.h can't be included (type conflicts with glibc), furthermore, we may want to have code compiling on other platforms without having ifdef all over. - fix keeping the LOG_BASE call before swapping the logs: I introduced an extra vararg to vhost_call to give optional extra details to the backend for that - adjusted vhost-user migration doc about atomicity of changes The development branch I used is: https://github.com/elmarco/qemu branch "vhost-user" More comments welcome! Marc-André Lureau (9): configure: probe for memfd posix: add linux-only memfd fallback osdep: add memfd helpers vhost: alloc shareable log vhost: document log resizing vhost: use variable arguments for vhost_call() vhost-user: start and end the va_list vhost-user: send log shm fd along with log_base vhost-user: document migration log configure | 19 ++++++ docs/specs/vhost-user.txt | 42 +++++++++++++ hw/virtio/vhost-backend.c | 4 +- hw/virtio/vhost-user.c | 52 +++++++++++----- hw/virtio/vhost.c | 45 +++++++++++--- include/hw/virtio/vhost-backend.h | 6 +- include/hw/virtio/vhost.h | 3 +- include/qemu/memfd.h | 24 ++++++++ util/Makefile.objs | 2 +- util/memfd.c | 126 ++++++++++++++++++++++++++++++++++++++ 10 files changed, 292 insertions(+), 31 deletions(-) create mode 100644 include/qemu/memfd.h create mode 100644 util/memfd.c -- 2.4.3