Message ID | 20200925134229.246169-2-stefanha@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | block/export: add BlockExportOptions->iothread member | expand |
On 25/09/20 15:42, Stefan Hajnoczi wrote: > Don't compile contrib/libvhost-user/libvhost-user.c again. Instead build > the static library once and then reuse it throughout QEMU. > > Also switch from CONFIG_LINUX to CONFIG_VHOST_USER, which is what the > vhost-user tools (vhost-user-gpu, etc) do. > > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Looks good. Unrelated to this patch, probably the contrib/libvhost-user directory should be moved under tools. Paolo > --- > block/export/export.c | 8 ++++---- > block/export/meson.build | 2 +- > contrib/libvhost-user/meson.build | 1 + > meson.build | 6 +++++- > tests/qtest/meson.build | 2 +- > util/meson.build | 4 +++- > 6 files changed, 15 insertions(+), 8 deletions(-) > > diff --git a/block/export/export.c b/block/export/export.c > index bd7cac241f..550897e236 100644 > --- a/block/export/export.c > +++ b/block/export/export.c > @@ -17,17 +17,17 @@ > #include "sysemu/block-backend.h" > #include "block/export.h" > #include "block/nbd.h" > -#if CONFIG_LINUX > -#include "block/export/vhost-user-blk-server.h" > -#endif > #include "qapi/error.h" > #include "qapi/qapi-commands-block-export.h" > #include "qapi/qapi-events-block-export.h" > #include "qemu/id.h" > +#ifdef CONFIG_VHOST_USER > +#include "vhost-user-blk-server.h" > +#endif > > static const BlockExportDriver *blk_exp_drivers[] = { > &blk_exp_nbd, > -#if CONFIG_LINUX > +#ifdef CONFIG_VHOST_USER > &blk_exp_vhost_user_blk, > #endif > }; > diff --git a/block/export/meson.build b/block/export/meson.build > index ef3a9576f7..469a7aa0f5 100644 > --- a/block/export/meson.build > +++ b/block/export/meson.build > @@ -1,2 +1,2 @@ > block_ss.add(files('export.c')) > -block_ss.add(when: 'CONFIG_LINUX', if_true: files('vhost-user-blk-server.c', '../../contrib/libvhost-user/libvhost-user.c')) > +block_ss.add(when: 'CONFIG_VHOST_USER', if_true: files('vhost-user-blk-server.c')) > diff --git a/contrib/libvhost-user/meson.build b/contrib/libvhost-user/meson.build > index e68dd1a581..a261e7665f 100644 > --- a/contrib/libvhost-user/meson.build > +++ b/contrib/libvhost-user/meson.build > @@ -1,3 +1,4 @@ > libvhost_user = static_library('vhost-user', > files('libvhost-user.c', 'libvhost-user-glib.c'), > build_by_default: false) > +vhost_user = declare_dependency(link_with: libvhost_user) > diff --git a/meson.build b/meson.build > index 4c6c7310fa..eb84b97ebb 100644 > --- a/meson.build > +++ b/meson.build > @@ -788,6 +788,11 @@ trace_events_subdirs += [ > 'util', > ] > > +vhost_user = not_found > +if 'CONFIG_VHOST_USER' in config_host > + subdir('contrib/libvhost-user') > +endif > + > subdir('qapi') > subdir('qobject') > subdir('stubs') > @@ -1169,7 +1174,6 @@ if have_tools > install: true) > > if 'CONFIG_VHOST_USER' in config_host > - subdir('contrib/libvhost-user') > subdir('contrib/vhost-user-blk') > subdir('contrib/vhost-user-gpu') > subdir('contrib/vhost-user-input') > diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build > index c72821b09a..aa8d0985e1 100644 > --- a/tests/qtest/meson.build > +++ b/tests/qtest/meson.build > @@ -191,7 +191,7 @@ qos_test_ss.add( > ) > qos_test_ss.add(when: 'CONFIG_VIRTFS', if_true: files('virtio-9p-test.c')) > qos_test_ss.add(when: 'CONFIG_VHOST_USER', if_true: files('vhost-user-test.c')) > -qos_test_ss.add(when: 'CONFIG_LINUX', if_true: files('vhost-user-blk-test.c')) > +qos_test_ss.add(when: 'CONFIG_VHOST_USER', if_true: files('vhost-user-blk-test.c')) > > extra_qtest_deps = { > 'bios-tables-test': [io], > diff --git a/util/meson.build b/util/meson.build > index 2296e81b34..9b2a7a5de9 100644 > --- a/util/meson.build > +++ b/util/meson.build > @@ -66,7 +66,9 @@ if have_block > util_ss.add(files('main-loop.c')) > util_ss.add(files('nvdimm-utils.c')) > util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 'qemu-coroutine-io.c')) > - util_ss.add(when: 'CONFIG_LINUX', if_true: files('vhost-user-server.c')) > + util_ss.add(when: 'CONFIG_VHOST_USER', if_true: [ > + files('vhost-user-server.c'), vhost_user > + ]) > util_ss.add(files('block-helpers.c')) > util_ss.add(files('qemu-coroutine-sleep.c')) > util_ss.add(files('qemu-co-shared-resource.c')) >
diff --git a/block/export/export.c b/block/export/export.c index bd7cac241f..550897e236 100644 --- a/block/export/export.c +++ b/block/export/export.c @@ -17,17 +17,17 @@ #include "sysemu/block-backend.h" #include "block/export.h" #include "block/nbd.h" -#if CONFIG_LINUX -#include "block/export/vhost-user-blk-server.h" -#endif #include "qapi/error.h" #include "qapi/qapi-commands-block-export.h" #include "qapi/qapi-events-block-export.h" #include "qemu/id.h" +#ifdef CONFIG_VHOST_USER +#include "vhost-user-blk-server.h" +#endif static const BlockExportDriver *blk_exp_drivers[] = { &blk_exp_nbd, -#if CONFIG_LINUX +#ifdef CONFIG_VHOST_USER &blk_exp_vhost_user_blk, #endif }; diff --git a/block/export/meson.build b/block/export/meson.build index ef3a9576f7..469a7aa0f5 100644 --- a/block/export/meson.build +++ b/block/export/meson.build @@ -1,2 +1,2 @@ block_ss.add(files('export.c')) -block_ss.add(when: 'CONFIG_LINUX', if_true: files('vhost-user-blk-server.c', '../../contrib/libvhost-user/libvhost-user.c')) +block_ss.add(when: 'CONFIG_VHOST_USER', if_true: files('vhost-user-blk-server.c')) diff --git a/contrib/libvhost-user/meson.build b/contrib/libvhost-user/meson.build index e68dd1a581..a261e7665f 100644 --- a/contrib/libvhost-user/meson.build +++ b/contrib/libvhost-user/meson.build @@ -1,3 +1,4 @@ libvhost_user = static_library('vhost-user', files('libvhost-user.c', 'libvhost-user-glib.c'), build_by_default: false) +vhost_user = declare_dependency(link_with: libvhost_user) diff --git a/meson.build b/meson.build index 4c6c7310fa..eb84b97ebb 100644 --- a/meson.build +++ b/meson.build @@ -788,6 +788,11 @@ trace_events_subdirs += [ 'util', ] +vhost_user = not_found +if 'CONFIG_VHOST_USER' in config_host + subdir('contrib/libvhost-user') +endif + subdir('qapi') subdir('qobject') subdir('stubs') @@ -1169,7 +1174,6 @@ if have_tools install: true) if 'CONFIG_VHOST_USER' in config_host - subdir('contrib/libvhost-user') subdir('contrib/vhost-user-blk') subdir('contrib/vhost-user-gpu') subdir('contrib/vhost-user-input') diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index c72821b09a..aa8d0985e1 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -191,7 +191,7 @@ qos_test_ss.add( ) qos_test_ss.add(when: 'CONFIG_VIRTFS', if_true: files('virtio-9p-test.c')) qos_test_ss.add(when: 'CONFIG_VHOST_USER', if_true: files('vhost-user-test.c')) -qos_test_ss.add(when: 'CONFIG_LINUX', if_true: files('vhost-user-blk-test.c')) +qos_test_ss.add(when: 'CONFIG_VHOST_USER', if_true: files('vhost-user-blk-test.c')) extra_qtest_deps = { 'bios-tables-test': [io], diff --git a/util/meson.build b/util/meson.build index 2296e81b34..9b2a7a5de9 100644 --- a/util/meson.build +++ b/util/meson.build @@ -66,7 +66,9 @@ if have_block util_ss.add(files('main-loop.c')) util_ss.add(files('nvdimm-utils.c')) util_ss.add(files('qemu-coroutine.c', 'qemu-coroutine-lock.c', 'qemu-coroutine-io.c')) - util_ss.add(when: 'CONFIG_LINUX', if_true: files('vhost-user-server.c')) + util_ss.add(when: 'CONFIG_VHOST_USER', if_true: [ + files('vhost-user-server.c'), vhost_user + ]) util_ss.add(files('block-helpers.c')) util_ss.add(files('qemu-coroutine-sleep.c')) util_ss.add(files('qemu-co-shared-resource.c'))
Don't compile contrib/libvhost-user/libvhost-user.c again. Instead build the static library once and then reuse it throughout QEMU. Also switch from CONFIG_LINUX to CONFIG_VHOST_USER, which is what the vhost-user tools (vhost-user-gpu, etc) do. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- block/export/export.c | 8 ++++---- block/export/meson.build | 2 +- contrib/libvhost-user/meson.build | 1 + meson.build | 6 +++++- tests/qtest/meson.build | 2 +- util/meson.build | 4 +++- 6 files changed, 15 insertions(+), 8 deletions(-)