All of lore.kernel.org
 help / color / mirror / Atom feed
From: Coiby Xu <coiby.xu@gmail.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, bharatlkmlkvm@gmail.com, stefanha@redhat.com
Subject: [PATCH v10 0/7] vhost-user block device backend implementation
Date: Fri, 18 Sep 2020 16:09:05 +0800	[thread overview]
Message-ID: <20200918080912.321299-1-coiby.xu@gmail.com> (raw)

v10
 - Use a linked list of VuFdWatch objects to keep kick info [Stefan]
 - Merge improvements and fixes from Stefan
 - Rename libvhost-user's vu_message_read to vu_message_read_default [Kevin]
 - When shutting down the client, wait for the coroutine of processing
   vhost-user messages to be finished [Kevin]
 - Allocate struct req_data on the heap [Kevin]
 - Improve coding of qtest case [Thomas]
 - Fix several memory leaks detected by ASAN

v9
 - move logical block size check function to a utility function
 - fix issues regarding license, coding style, memory deallocation, etc.

v8
 - re-try connecting to socket server to fix asan error
 - fix license naming issue

v7
 - fix docker-test-debug@fedora errors by freeing malloced memory

v6
 - add missing license header and include guard
 - vhost-user server only serve one client one time
 - fix a bug in custom vu_message_read
 - using qemu-storage-daemon to start vhost-user-blk-server
 - a bug fix to pass docker-test-clang@ubuntu

v5:
 * re-use vu_kick_cb in libvhost-user
 * keeping processing VhostUserMsg in the same coroutine until there is
   detachment/attachment of AIOContext
 * Spawn separate coroutine for each VuVirtqElement
 * Other changes including relocating vhost-user-blk-server.c, coding
   style etc.

v4:
 * add object properties in class_init
 * relocate vhost-user-blk-test
 * other changes including using SocketAddress, coding style, etc.

v3:
 * separate generic vhost-user-server code from vhost-user-blk-server
   code
 * re-write vu_message_read and kick hander function as coroutines to
   directly call blk_co_preadv, blk_co_pwritev, etc.
 * add aio_context notifier functions to support multi-threading model
 * other fixes regarding coding style, warning report, etc.

v2:
 * Only enable this feature for Linux because eventfd is a Linux-specific
   feature


This patch series is an implementation of vhost-user block device
backend server, thanks to Stefan and Kevin's guidance.

Vhost-user block device backend server is a UserCreatable object and can be
started using object_add,

 (qemu) object_add vhost-user-blk-server,id=ID,unix-socket=/tmp/vhost-user-blk_vhost.socket,node-name=DRIVE_NAME,writable=off,logical-block-size=512
 (qemu) object_del ID

or appending the "-object" option when starting QEMU,

  $ -object vhost-user-blk-server,id=disk,unix-socket=/tmp/vhost-user-blk_vhost.socket,node-name=DRIVE_NAME,writable=off,logical-block-size=512

Then vhost-user client can connect to the server backend.
For example, QEMU could act as a client,

  $ -m 256 -object memory-backend-memfd,id=mem,size=256M,share=on -numa node,memdev=mem -chardev socket,id=char1,path=/tmp/vhost-user-blk_vhost.socket -device vhost-user-blk-pci,id=blk0,chardev=char1

And guest OS could access this vhost-user block device after mounting it.

Coiby Xu (7):
  libvhost-user: Allow vu_message_read to be replaced
  libvhost-user: remove watch for kick_fd when de-initialize vu-dev
  util/vhost-user-server: generic vhost user server
  block: move logical block size check function to a common utility
    function
  block/export: vhost-user block device backend server
  test: new qTest case to test the vhost-user-blk-server
  MAINTAINERS: Add vhost-user block device backend server maintainer

 MAINTAINERS                                |   8 +
 block/export/vhost-user-blk-server.c       | 661 ++++++++++++++++++
 block/export/vhost-user-blk-server.h       |  36 +
 block/meson.build                          |   1 +
 contrib/libvhost-user/libvhost-user-glib.c |   2 +-
 contrib/libvhost-user/libvhost-user.c      |  15 +-
 contrib/libvhost-user/libvhost-user.h      |  21 +
 hw/core/qdev-properties.c                  |  31 +-
 softmmu/vl.c                               |   4 +
 tests/qtest/libqos/libqtest.h              |  17 +
 tests/qtest/libqos/meson.build             |   1 +
 tests/qtest/libqos/vhost-user-blk.c        | 129 ++++
 tests/qtest/libqos/vhost-user-blk.h        |  48 ++
 tests/qtest/libqtest.c                     |  36 +-
 tests/qtest/meson.build                    |   4 +-
 tests/qtest/vhost-user-blk-test.c          | 751 +++++++++++++++++++++
 tests/vhost-user-bridge.c                  |   2 +
 tools/virtiofsd/fuse_virtio.c              |   4 +-
 util/block-helpers.c                       |  46 ++
 util/block-helpers.h                       |  19 +
 util/meson.build                           |   2 +
 util/vhost-user-server.c                   | 428 ++++++++++++
 util/vhost-user-server.h                   |  65 ++
 23 files changed, 2292 insertions(+), 39 deletions(-)
 create mode 100644 block/export/vhost-user-blk-server.c
 create mode 100644 block/export/vhost-user-blk-server.h
 create mode 100644 tests/qtest/libqos/vhost-user-blk.c
 create mode 100644 tests/qtest/libqos/vhost-user-blk.h
 create mode 100644 tests/qtest/vhost-user-blk-test.c
 create mode 100644 util/block-helpers.c
 create mode 100644 util/block-helpers.h
 create mode 100644 util/vhost-user-server.c
 create mode 100644 util/vhost-user-server.h

--
2.28.0



             reply	other threads:[~2020-09-18  8:11 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-18  8:09 Coiby Xu [this message]
2020-09-18  8:09 ` [PATCH v10 1/7] libvhost-user: Allow vu_message_read to be replaced Coiby Xu
2020-09-18 10:14   ` Stefan Hajnoczi
2020-09-18  8:09 ` [PATCH v10 2/7] libvhost-user: remove watch for kick_fd when de-initialize vu-dev Coiby Xu
2020-09-18 10:28   ` Stefan Hajnoczi
2020-09-18  8:09 ` [PATCH v10 3/7] util/vhost-user-server: generic vhost user server Coiby Xu
2020-09-18  8:09 ` [PATCH v10 4/7] block: move logical block size check function to a common utility function Coiby Xu
2020-09-18 17:56   ` Eduardo Habkost
2020-09-18  8:09 ` [PATCH v10 5/7] block/export: vhost-user block device backend server Coiby Xu
2020-09-18  9:44   ` Stefan Hajnoczi
2020-09-18  8:09 ` [PATCH v10 6/7] test: new qTest case to test the vhost-user-blk-server Coiby Xu
2020-09-23 12:36   ` Stefan Hajnoczi
2020-10-10  7:59     ` Coiby Xu
2020-09-18  8:09 ` [PATCH v10 7/7] MAINTAINERS: Add vhost-user block device backend server maintainer Coiby Xu
2020-09-23 12:37   ` Stefan Hajnoczi
2020-09-21 15:20 ` [PATCH v10 0/7] vhost-user block device backend implementation Stefan Hajnoczi
2020-09-22 16:06 ` Stefan Hajnoczi
2020-09-23 12:39 ` Stefan Hajnoczi
2020-10-09 10:18 ` Stefan Hajnoczi
2020-10-10  8:45   ` Coiby Xu

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=20200918080912.321299-1-coiby.xu@gmail.com \
    --to=coiby.xu@gmail.com \
    --cc=bharatlkmlkvm@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@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.