The replication feature is a small amount of code, does not
require any external library and unless used does not add
anything to the guest's attack surface. Since any extra
configure option affects maintainability on the other hand
and is subject to bit rot, I think there is no need to
make it configurable.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
Sending as RFC to start discussion because I know
Dave Gilbert disagrees. :)
Makefile.objs | 2 +-
block/Makefile.objs | 2 +-
configure | 11 -----------
tests/Makefile.include | 2 +-
4 files changed, 3 insertions(+), 14 deletions(-)
diff --git a/Makefile.objs b/Makefile.objs
index 01cef86..d834906 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -15,7 +15,7 @@ block-obj-$(CONFIG_POSIX) += aio-posix.o
block-obj-$(CONFIG_WIN32) += aio-win32.o
block-obj-y += block/
block-obj-y += qemu-io-cmds.o
-block-obj-$(CONFIG_REPLICATION) += replication.o
+block-obj-y += replication.o
block-obj-m = block/
diff --git a/block/Makefile.objs b/block/Makefile.objs
index c6bd14e..fd099a6 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -24,7 +24,7 @@ block-obj-$(CONFIG_LIBSSH2) += ssh.o
block-obj-y += accounting.o dirty-bitmap.o
block-obj-y += write-threshold.o
block-obj-y += backup.o
-block-obj-$(CONFIG_REPLICATION) += replication.o
+block-obj-y += replication.o
block-obj-y += crypto.o
diff --git a/configure b/configure
index 86fd833..0cb124e 100755
--- a/configure
+++ b/configure
@@ -320,7 +320,6 @@ libssh2=""
numa=""
tcmalloc="no"
jemalloc="no"
-replication="yes"
# parse CC options first
for opt do
@@ -1166,10 +1165,6 @@ for opt do
;;
--enable-jemalloc) jemalloc="yes"
;;
- --disable-replication) replication="no"
- ;;
- --enable-replication) replication="yes"
- ;;
*)
echo "ERROR: unknown option $opt"
echo "Try '$0 --help' for more information"
@@ -1402,7 +1397,6 @@ disabled with --disable-FEATURE, default is enabled if available:
numa libnuma support
tcmalloc tcmalloc support
jemalloc jemalloc support
- replication replication support
NOTE: The object files are built at the place where configure is launched
EOF
@@ -5113,7 +5107,6 @@ echo "NUMA host support $numa"
echo "tcmalloc support $tcmalloc"
echo "jemalloc support $jemalloc"
echo "avx2 optimization $avx2_opt"
-echo "replication support $replication"
if test "$sdl_too_old" = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have SDL support"
@@ -5711,10 +5704,6 @@ if test "$have_rtnetlink" = "yes" ; then
echo "CONFIG_RTNETLINK=y" >> $config_host_mak
fi
-if test "$replication" = "yes" ; then
- echo "CONFIG_REPLICATION=y" >> $config_host_mak
-fi
-
if test "$have_af_vsock" = "yes" ; then
echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
fi
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 33b4f88..77dc08f 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -115,7 +115,7 @@ check-unit-y += tests/test-crypto-xts$(EXESUF)
check-unit-y += tests/test-crypto-block$(EXESUF)
gcov-files-test-logging-y = tests/test-logging.c
check-unit-y += tests/test-logging$(EXESUF)
-check-unit-$(CONFIG_REPLICATION) += tests/test-replication$(EXESUF)
+check-unit-y += tests/test-replication$(EXESUF)
check-unit-y += tests/test-bufferiszero$(EXESUF)
gcov-files-check-bufferiszero-y = util/bufferiszero.c
check-unit-y += tests/test-uuid$(EXESUF)
--
2.9.3
* Paolo Bonzini (pbonzini@redhat.com) wrote: > The replication feature is a small amount of code, does not > require any external library and unless used does not add > anything to the guest's attack surface. Since any extra > configure option affects maintainability on the other hand > and is subject to bit rot, I think there is no need to > make it configurable. > > Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> > --- > Sending as RFC to start discussion because I know > Dave Gilbert disagrees. :) Yep! I started thinking about this for two other cases: a) I noticed you'd removed the config for COLO b) I was thinking of adding a config to disable old-school block migration which we've had downstream for ages. I think people like being able to disable features they're not using in their builds; certainly we do downstream and if we do I don't see why others won't - perhaps for different reasons. While it's true block replication probably doesn't add to the guest-visible attack surface, if someone was trying to audit what they were running it would still be something they'd have to check, and which it's easier if compiled out. Dave > Makefile.objs | 2 +- > block/Makefile.objs | 2 +- > configure | 11 ----------- > tests/Makefile.include | 2 +- > 4 files changed, 3 insertions(+), 14 deletions(-) > > diff --git a/Makefile.objs b/Makefile.objs > index 01cef86..d834906 100644 > --- a/Makefile.objs > +++ b/Makefile.objs > @@ -15,7 +15,7 @@ block-obj-$(CONFIG_POSIX) += aio-posix.o > block-obj-$(CONFIG_WIN32) += aio-win32.o > block-obj-y += block/ > block-obj-y += qemu-io-cmds.o > -block-obj-$(CONFIG_REPLICATION) += replication.o > +block-obj-y += replication.o > > block-obj-m = block/ > > diff --git a/block/Makefile.objs b/block/Makefile.objs > index c6bd14e..fd099a6 100644 > --- a/block/Makefile.objs > +++ b/block/Makefile.objs > @@ -24,7 +24,7 @@ block-obj-$(CONFIG_LIBSSH2) += ssh.o > block-obj-y += accounting.o dirty-bitmap.o > block-obj-y += write-threshold.o > block-obj-y += backup.o > -block-obj-$(CONFIG_REPLICATION) += replication.o > +block-obj-y += replication.o > > block-obj-y += crypto.o > > diff --git a/configure b/configure > index 86fd833..0cb124e 100755 > --- a/configure > +++ b/configure > @@ -320,7 +320,6 @@ libssh2="" > numa="" > tcmalloc="no" > jemalloc="no" > -replication="yes" > > # parse CC options first > for opt do > @@ -1166,10 +1165,6 @@ for opt do > ;; > --enable-jemalloc) jemalloc="yes" > ;; > - --disable-replication) replication="no" > - ;; > - --enable-replication) replication="yes" > - ;; > *) > echo "ERROR: unknown option $opt" > echo "Try '$0 --help' for more information" > @@ -1402,7 +1397,6 @@ disabled with --disable-FEATURE, default is enabled if available: > numa libnuma support > tcmalloc tcmalloc support > jemalloc jemalloc support > - replication replication support > > NOTE: The object files are built at the place where configure is launched > EOF > @@ -5113,7 +5107,6 @@ echo "NUMA host support $numa" > echo "tcmalloc support $tcmalloc" > echo "jemalloc support $jemalloc" > echo "avx2 optimization $avx2_opt" > -echo "replication support $replication" > > if test "$sdl_too_old" = "yes"; then > echo "-> Your SDL version is too old - please upgrade to have SDL support" > @@ -5711,10 +5704,6 @@ if test "$have_rtnetlink" = "yes" ; then > echo "CONFIG_RTNETLINK=y" >> $config_host_mak > fi > > -if test "$replication" = "yes" ; then > - echo "CONFIG_REPLICATION=y" >> $config_host_mak > -fi > - > if test "$have_af_vsock" = "yes" ; then > echo "CONFIG_AF_VSOCK=y" >> $config_host_mak > fi > diff --git a/tests/Makefile.include b/tests/Makefile.include > index 33b4f88..77dc08f 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -115,7 +115,7 @@ check-unit-y += tests/test-crypto-xts$(EXESUF) > check-unit-y += tests/test-crypto-block$(EXESUF) > gcov-files-test-logging-y = tests/test-logging.c > check-unit-y += tests/test-logging$(EXESUF) > -check-unit-$(CONFIG_REPLICATION) += tests/test-replication$(EXESUF) > +check-unit-y += tests/test-replication$(EXESUF) > check-unit-y += tests/test-bufferiszero$(EXESUF) > gcov-files-check-bufferiszero-y = util/bufferiszero.c > check-unit-y += tests/test-uuid$(EXESUF) > -- > 2.9.3 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On Thu, Feb 02, 2017 at 07:05:30AM -0800, Paolo Bonzini wrote: > The replication feature is a small amount of code, does not > require any external library and unless used does not add > anything to the guest's attack surface. Since any extra > configure option affects maintainability on the other hand > and is subject to bit rot, I think there is no need to > make it configurable. I think the current state is good: replication is enabled by default but can be compiled out if desired. Downstreams may not be comfortable supporting this feature yet since it's incomplete. It's fair to offer an option to disable it, otherwise downstreams will have to patch this themselves. Stefan
On 03/02/2017 07:00, Stefan Hajnoczi wrote: > On Thu, Feb 02, 2017 at 07:05:30AM -0800, Paolo Bonzini wrote: >> The replication feature is a small amount of code, does not >> require any external library and unless used does not add >> anything to the guest's attack surface. Since any extra >> configure option affects maintainability on the other hand >> and is subject to bit rot, I think there is no need to >> make it configurable. > > I think the current state is good: replication is enabled by default but > can be compiled out if desired. > > Downstreams may not be comfortable supporting this feature yet since > it's incomplete. It's fair to offer an option to disable it, otherwise > downstreams will have to patch this themselves. I understand---I just am not sure where to draw the line because there's plenty of other incomplete features, hence the RFC. For example, record/replay cannot be enabled or disabled on the configure command line. That was the case even in the beginning, where it didn't support either block or character device replay. --enable-coroutine-pool is a relic of when Windows builds needed it, but all other --enable-* options require an external library or at least a specific operating system. See for example this patch: commit 52b53c04faab9f7a9879c8dc014930649a3e698d Author: Fam Zheng <famz@redhat.com> Date: Wed Sep 10 14:17:51 2014 +0800 block: Always compile virtio-blk dataplane Dataplane doesn't depend on linux-aio any more, so we don't need the compiling condition now. Configure options are kept but just print a message. Signed-off-by: Fam Zheng <famz@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 1410329871-28885-4-git-send-email-famz@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> I would actually prefer to remove many of the latter (--enable-vhost-net, --enable-vhost-scsi, --enable-vhost-socket) and just use default-configs. We are already doing it for ivshmem for example: CONFIG_IVSHMEM=$(CONFIG_EVENTFD) Paolo
* Paolo Bonzini (pbonzini@redhat.com) wrote: > > > On 03/02/2017 07:00, Stefan Hajnoczi wrote: > > On Thu, Feb 02, 2017 at 07:05:30AM -0800, Paolo Bonzini wrote: > >> The replication feature is a small amount of code, does not > >> require any external library and unless used does not add > >> anything to the guest's attack surface. Since any extra > >> configure option affects maintainability on the other hand > >> and is subject to bit rot, I think there is no need to > >> make it configurable. > > > > I think the current state is good: replication is enabled by default but > > can be compiled out if desired. > > > > Downstreams may not be comfortable supporting this feature yet since > > it's incomplete. It's fair to offer an option to disable it, otherwise > > downstreams will have to patch this themselves. > > I understand---I just am not sure where to draw the line because there's > plenty of other incomplete features, hence the RFC. For example, > record/replay cannot be enabled or disabled on the configure command > line. That was the case even in the beginning, where it didn't support > either block or character device replay. The line is certainly fuzzy, but I think it's worth making the following type of things configurable: Features that have a large chunk of code - dont lets try and configure tiny things on and off That can be trivially configured - lets not put big chunks of code around making them configurable and that are incomplete or are unused by large chunks of the users Dave > --enable-coroutine-pool is a relic of when Windows builds needed it, but > all other --enable-* options require an external library or at least a > specific operating system. See for example this patch: > > commit 52b53c04faab9f7a9879c8dc014930649a3e698d > Author: Fam Zheng <famz@redhat.com> > Date: Wed Sep 10 14:17:51 2014 +0800 > > block: Always compile virtio-blk dataplane > > Dataplane doesn't depend on linux-aio any more, so we don't need the > compiling condition now. > > Configure options are kept but just print a message. > > Signed-off-by: Fam Zheng <famz@redhat.com> > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > Message-id: 1410329871-28885-4-git-send-email-famz@redhat.com > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> > > > I would actually prefer to remove many of the latter > (--enable-vhost-net, --enable-vhost-scsi, --enable-vhost-socket) and > just use default-configs. We are already doing it for ivshmem for example: > > CONFIG_IVSHMEM=$(CONFIG_EVENTFD) > > Paolo -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
>>> On 2/6/2017 at 4:57 AM, <dgilbert@redhat.com> wrote: > * Paolo Bonzini (pbonzini@redhat.com) wrote: >> >> >> On 03/02/2017 07:00, Stefan Hajnoczi wrote: >> > On Thu, Feb 02, 2017 at 07:05:30AM ‑0800, Paolo Bonzini wrote: >> >> The replication feature is a small amount of code, does not >> >> require any external library and unless used does not add >> >> anything to the guest's attack surface. Since any extra >> >> configure option affects maintainability on the other hand >> >> and is subject to bit rot, I think there is no need to >> >> make it configurable. >> > >> > I think the current state is good: replication is enabled by default but >> > can be compiled out if desired. >> > >> > Downstreams may not be comfortable supporting this feature yet since >> > it's incomplete. It's fair to offer an option to disable it, otherwise >> > downstreams will have to patch this themselves. >> >> I understand‑‑‑I just am not sure where to draw the line because there's >> plenty of other incomplete features, hence the RFC. For example, >> record/replay cannot be enabled or disabled on the configure command >> line. That was the case even in the beginning, where it didn't support >> either block or character device replay. > > The line is certainly fuzzy, but I think it's worth making the following > type of things configurable: > Features that have a large chunk of code > ‑ dont lets try and configure tiny things on and off > That can be trivially configured > ‑ lets not put big chunks of code around making them configurable > and that are incomplete > or are unused by large chunks of the users > > Dave > >> ‑‑enable‑coroutine‑pool is a relic of when Windows builds needed it, but >> all other ‑‑enable‑* options require an external library or at least a >> specific operating system. See for example this patch: >> >> commit 52b53c04faab9f7a9879c8dc014930649a3e698d >> Author: Fam Zheng <famz@redhat.com> >> Date: Wed Sep 10 14:17:51 2014 +0800 >> >> block: Always compile virtio‑blk dataplane >> >> Dataplane doesn't depend on linux‑aio any more, so we don't need the >> compiling condition now. >> >> Configure options are kept but just print a message. >> >> Signed‑off‑by: Fam Zheng <famz@redhat.com> >> Reviewed‑by: Paolo Bonzini <pbonzini@redhat.com> >> Message‑id: 1410329871‑28885‑4‑git‑send‑email‑famz@redhat.com >> Signed‑off‑by: Stefan Hajnoczi <stefanha@redhat.com> >> >> >> I would actually prefer to remove many of the latter >> (‑‑enable‑vhost‑net, ‑‑enable‑vhost‑scsi, ‑‑enable‑vhost‑socket) and >> just use default‑configs. We are already doing it for ivshmem for example: >> >> CONFIG_IVSHMEM=$(CONFIG_EVENTFD) >> >> Paolo > ‑‑ > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK Was there ever a conclusion here? The reason I ask is that I see that currently using --disable-replication fails for me as follows: # ./configure --disable-replication ... # make ... make all-recursive Making all in pixman make[3]: Nothing to be done for 'all'. Making all in demos make[3]: Nothing to be done for 'all'. Making all in test make[3]: Nothing to be done for 'all'. CHK version_gen.h LINK aarch64-softmmu/qemu-system-aarch64 ../migration/colo.o: In function `qmp_query_xen_replication_status': /home/brogers/osr/git/qemu/migration/colo.c:181: undefined reference to `replication_get_error_all' ../migration/colo.o: In function `qmp_xen_set_replication': /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to `replication_stop_all' /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to `replication_stop_all' /home/brogers/osr/git/qemu/migration/colo.c:167: undefined reference to `replication_start_all' ../migration/colo.o: In function `qmp_xen_colo_do_checkpoint': /ho me/brogers/osr/git/qemu/migration/colo.c:196: undefined reference to `replication_do_checkpoint_all' collect2: error: ld returned 1 exit status make[1]: *** [Makefile:208: qemu-system-aarch64] Error 1 make: *** [Makefile:322: subdir-aarch64-softmmu] Error 2 -- Bruce
> > I would actually prefer to remove many of the latter > > (‑‑enable‑vhost‑net, ‑‑enable‑vhost‑scsi, ‑‑enable‑vhost‑socket) and > > just use default‑configs. We are already doing it for ivshmem for > > example: > > Was there ever a conclusion here? The reason I ask is that I see that > currently > using --disable-replication fails for me as follows: No conclusion. I suppose if people are interested in --disable-replication they can submit a patch to fix the bitrot. If 2.9 ships with the option broken, I'll resend the patch for inclusion in 2.10. This should give about one month to fix the option, which should be enough. Paolo > # ./configure --disable-replication > ... > # make > ... > make all-recursive > Making all in pixman > make[3]: Nothing to be done for 'all'. > Making all in demos > make[3]: Nothing to be done for 'all'. > Making all in test > make[3]: Nothing to be done for 'all'. > CHK version_gen.h > LINK aarch64-softmmu/qemu-system-aarch64 > ../migration/colo.o: In function `qmp_query_xen_replication_status': > /home/brogers/osr/git/qemu/migration/colo.c:181: undefined reference to > `replication_get_error_all' > ../migration/colo.o: In function `qmp_xen_set_replication': > /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to > `replication_stop_all' > /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to > `replication_stop_all' > /home/brogers/osr/git/qemu/migration/colo.c:167: undefined reference to > `replication_start_all' > ../migration/colo.o: In function `qmp_xen_colo_do_checkpoint': > /home/brogers/osr/git/qemu/migration/colo.c:196: undefined reference to > `replication_do_checkpoint_all' > collect2: error: ld returned 1 exit status > make[1]: *** [Makefile:208: qemu-system-aarch64] Error 1 > make: *** [Makefile:322: subdir-aarch64-softmmu] Error 2 > > -- > Bruce > > >
* Bruce Rogers (brogers@suse.com) wrote: > >>> On 2/6/2017 at 4:57 AM, <dgilbert@redhat.com> wrote: > > * Paolo Bonzini (pbonzini@redhat.com) wrote: > >> > >> > >> On 03/02/2017 07:00, Stefan Hajnoczi wrote: > >> > On Thu, Feb 02, 2017 at 07:05:30AM ‑0800, Paolo Bonzini wrote: > >> >> The replication feature is a small amount of code, does not > >> >> require any external library and unless used does not add > >> >> anything to the guest's attack surface. Since any extra > >> >> configure option affects maintainability on the other hand > >> >> and is subject to bit rot, I think there is no need to > >> >> make it configurable. > >> > > >> > I think the current state is good: replication is enabled by default but > >> > can be compiled out if desired. > >> > > >> > Downstreams may not be comfortable supporting this feature yet since > >> > it's incomplete. It's fair to offer an option to disable it, otherwise > >> > downstreams will have to patch this themselves. > >> > >> I understand‑‑‑I just am not sure where to draw the line because there's > >> plenty of other incomplete features, hence the RFC. For example, > >> record/replay cannot be enabled or disabled on the configure command > >> line. That was the case even in the beginning, where it didn't support > >> either block or character device replay. > > > > The line is certainly fuzzy, but I think it's worth making the following > > type of things configurable: > > Features that have a large chunk of code > > ‑ dont lets try and configure tiny things on and off > > That can be trivially configured > > ‑ lets not put big chunks of code around making them configurable > > and that are incomplete > > or are unused by large chunks of the users > > > > Dave > > > >> ‑‑enable‑coroutine‑pool is a relic of when Windows builds needed it, but > >> all other ‑‑enable‑* options require an external library or at least a > >> specific operating system. See for example this patch: > >> > >> commit 52b53c04faab9f7a9879c8dc014930649a3e698d > >> Author: Fam Zheng <famz@redhat.com> > >> Date: Wed Sep 10 14:17:51 2014 +0800 > >> > >> block: Always compile virtio‑blk dataplane > >> > >> Dataplane doesn't depend on linux‑aio any more, so we don't need the > >> compiling condition now. > >> > >> Configure options are kept but just print a message. > >> > >> Signed‑off‑by: Fam Zheng <famz@redhat.com> > >> Reviewed‑by: Paolo Bonzini <pbonzini@redhat.com> > >> Message‑id: 1410329871‑28885‑4‑git‑send‑email‑famz@redhat.com > >> Signed‑off‑by: Stefan Hajnoczi <stefanha@redhat.com> > >> > >> > >> I would actually prefer to remove many of the latter > >> (‑‑enable‑vhost‑net, ‑‑enable‑vhost‑scsi, ‑‑enable‑vhost‑socket) and > >> just use default‑configs. We are already doing it for ivshmem for example: > >> > >> CONFIG_IVSHMEM=$(CONFIG_EVENTFD) > >> > >> Paolo > > ‑‑ > > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > > Was there ever a conclusion here? The reason I ask is that I see that currently > using --disable-replication fails for me as follows: > > # ./configure --disable-replication > ... > # make > ... > make all-recursive > Making all in pixman > make[3]: Nothing to be done for 'all'. > Making all in demos > make[3]: Nothing to be done for 'all'. > Making all in test > make[3]: Nothing to be done for 'all'. > CHK version_gen.h > LINK aarch64-softmmu/qemu-system-aarch64 > ../migration/colo.o: In function `qmp_query_xen_replication_status': > /home/brogers/osr/git/qemu/migration/colo.c:181: undefined reference to `replication_get_error_all' > ../migration/colo.o: In function `qmp_xen_set_replication': > /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to `replication_stop_all' > /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to `replication_stop_all' > /home/brogers/osr/git/qemu/migration/colo.c:167: undefined reference to `replication_start_all' > ../migration/colo.o: In function `qmp_xen_colo_do_checkpoint': > /home/brogers/osr/git/qemu/migration/colo.c:196: undefined reference to `replication_do_checkpoint_all' > collect2: error: ld returned 1 exit status > make[1]: *** [Makefile:208: qemu-system-aarch64] Error 1 > make: *** [Makefile:322: subdir-aarch64-softmmu] Error 2 We should fix that. Dave > -- > Bruce > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On 03/06/2017 05:08 PM, Dr. David Alan Gilbert wrote: > * Bruce Rogers (brogers@suse.com) wrote: >>>>> On 2/6/2017 at 4:57 AM, <dgilbert@redhat.com> wrote: >>> * Paolo Bonzini (pbonzini@redhat.com) wrote: >>>> >>>> On 03/02/2017 07:00, Stefan Hajnoczi wrote: >>>>> On Thu, Feb 02, 2017 at 07:05:30AM ‑0800, Paolo Bonzini wrote: >>>>>> The replication feature is a small amount of code, does not >>>>>> require any external library and unless used does not add >>>>>> anything to the guest's attack surface. Since any extra >>>>>> configure option affects maintainability on the other hand >>>>>> and is subject to bit rot, I think there is no need to >>>>>> make it configurable. >>>>> I think the current state is good: replication is enabled by default but >>>>> can be compiled out if desired. >>>>> >>>>> Downstreams may not be comfortable supporting this feature yet since >>>>> it's incomplete. It's fair to offer an option to disable it, otherwise >>>>> downstreams will have to patch this themselves. >>>> I understand‑‑‑I just am not sure where to draw the line because there's >>>> plenty of other incomplete features, hence the RFC. For example, >>>> record/replay cannot be enabled or disabled on the configure command >>>> line. That was the case even in the beginning, where it didn't support >>>> either block or character device replay. >>> The line is certainly fuzzy, but I think it's worth making the following >>> type of things configurable: >>> Features that have a large chunk of code >>> ‑ dont lets try and configure tiny things on and off >>> That can be trivially configured >>> ‑ lets not put big chunks of code around making them configurable >>> and that are incomplete >>> or are unused by large chunks of the users >>> >>> Dave >>> >>>> ‑‑enable‑coroutine‑pool is a relic of when Windows builds needed it, but >>>> all other ‑‑enable‑* options require an external library or at least a >>>> specific operating system. See for example this patch: >>>> >>>> commit 52b53c04faab9f7a9879c8dc014930649a3e698d >>>> Author: Fam Zheng <famz@redhat.com> >>>> Date: Wed Sep 10 14:17:51 2014 +0800 >>>> >>>> block: Always compile virtio‑blk dataplane >>>> >>>> Dataplane doesn't depend on linux‑aio any more, so we don't need the >>>> compiling condition now. >>>> >>>> Configure options are kept but just print a message. >>>> >>>> Signed‑off‑by: Fam Zheng <famz@redhat.com> >>>> Reviewed‑by: Paolo Bonzini <pbonzini@redhat.com> >>>> Message‑id: 1410329871‑28885‑4‑git‑send‑email‑famz@redhat.com >>>> Signed‑off‑by: Stefan Hajnoczi <stefanha@redhat.com> >>>> >>>> >>>> I would actually prefer to remove many of the latter >>>> (‑‑enable‑vhost‑net, ‑‑enable‑vhost‑scsi, ‑‑enable‑vhost‑socket) and >>>> just use default‑configs. We are already doing it for ivshmem for example: >>>> >>>> CONFIG_IVSHMEM=$(CONFIG_EVENTFD) >>>> >>>> Paolo >>> ‑‑ >>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK >> Was there ever a conclusion here? The reason I ask is that I see that currently >> using --disable-replication fails for me as follows: >> >> # ./configure --disable-replication >> ... >> # make >> ... >> make all-recursive >> Making all in pixman >> make[3]: Nothing to be done for 'all'. >> Making all in demos >> make[3]: Nothing to be done for 'all'. >> Making all in test >> make[3]: Nothing to be done for 'all'. >> CHK version_gen.h >> LINK aarch64-softmmu/qemu-system-aarch64 >> ../migration/colo.o: In function `qmp_query_xen_replication_status': >> /home/brogers/osr/git/qemu/migration/colo.c:181: undefined reference to `replication_get_error_all' >> ../migration/colo.o: In function `qmp_xen_set_replication': >> /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to `replication_stop_all' >> /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference to `replication_stop_all' >> /home/brogers/osr/git/qemu/migration/colo.c:167: undefined reference to `replication_start_all' >> ../migration/colo.o: In function `qmp_xen_colo_do_checkpoint': >> /home/brogers/osr/git/qemu/migration/colo.c:196: undefined reference to `replication_do_checkpoint_all' >> collect2: error: ld returned 1 exit status >> make[1]: *** [Makefile:208: qemu-system-aarch64] Error 1 >> make: *** [Makefile:322: subdir-aarch64-softmmu] Error 2 > We should fix that. COLO needs replication enable. So, should I add a new option enable/disable COLO ? Then, If you disable replication, colo will be disabled automatically. Like that: # ./configure --disable-colo Thanks Zhang Chen > > Dave > >> -- >> Bruce >> >> > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > > > . > -- Thanks Zhang Chen
On 06/03/2017 11:03, Zhang Chen wrote: > > > On 03/06/2017 05:08 PM, Dr. David Alan Gilbert wrote: >> * Bruce Rogers (brogers@suse.com) wrote: >>>>>> On 2/6/2017 at 4:57 AM, <dgilbert@redhat.com> wrote: >>>> * Paolo Bonzini (pbonzini@redhat.com) wrote: >>>>> >>>>> On 03/02/2017 07:00, Stefan Hajnoczi wrote: >>>>>> On Thu, Feb 02, 2017 at 07:05:30AM ‑0800, Paolo Bonzini wrote: >>>>>>> The replication feature is a small amount of code, does not >>>>>>> require any external library and unless used does not add >>>>>>> anything to the guest's attack surface. Since any extra >>>>>>> configure option affects maintainability on the other hand >>>>>>> and is subject to bit rot, I think there is no need to >>>>>>> make it configurable. >>>>>> I think the current state is good: replication is enabled by >>>>>> default but >>>>>> can be compiled out if desired. >>>>>> >>>>>> Downstreams may not be comfortable supporting this feature yet since >>>>>> it's incomplete. It's fair to offer an option to disable it, >>>>>> otherwise >>>>>> downstreams will have to patch this themselves. >>>>> I understand‑‑‑I just am not sure where to draw the line because >>>>> there's >>>>> plenty of other incomplete features, hence the RFC. For example, >>>>> record/replay cannot be enabled or disabled on the configure command >>>>> line. That was the case even in the beginning, where it didn't >>>>> support >>>>> either block or character device replay. >>>> The line is certainly fuzzy, but I think it's worth making the >>>> following >>>> type of things configurable: >>>> Features that have a large chunk of code >>>> ‑ dont lets try and configure tiny things on and off >>>> That can be trivially configured >>>> ‑ lets not put big chunks of code around making them configurable >>>> and that are incomplete >>>> or are unused by large chunks of the users >>>> >>>> Dave >>>> >>>>> ‑‑enable‑coroutine‑pool is a relic of when Windows builds needed >>>>> it, but >>>>> all other ‑‑enable‑* options require an external library or at least a >>>>> specific operating system. See for example this patch: >>>>> >>>>> commit 52b53c04faab9f7a9879c8dc014930649a3e698d >>>>> Author: Fam Zheng <famz@redhat.com> >>>>> Date: Wed Sep 10 14:17:51 2014 +0800 >>>>> >>>>> block: Always compile virtio‑blk dataplane >>>>> >>>>> Dataplane doesn't depend on linux‑aio any more, so we don't >>>>> need the >>>>> compiling condition now. >>>>> >>>>> Configure options are kept but just print a message. >>>>> >>>>> Signed‑off‑by: Fam Zheng <famz@redhat.com> >>>>> Reviewed‑by: Paolo Bonzini <pbonzini@redhat.com> >>>>> Message‑id: 1410329871‑28885‑4‑git‑send‑email‑famz@redhat.com >>>>> Signed‑off‑by: Stefan Hajnoczi <stefanha@redhat.com> >>>>> >>>>> >>>>> I would actually prefer to remove many of the latter >>>>> (‑‑enable‑vhost‑net, ‑‑enable‑vhost‑scsi, ‑‑enable‑vhost‑socket) and >>>>> just use default‑configs. We are already doing it for ivshmem for >>>>> example: >>>>> >>>>> CONFIG_IVSHMEM=$(CONFIG_EVENTFD) >>>>> >>>>> Paolo >>>> ‑‑ >>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK >>> Was there ever a conclusion here? The reason I ask is that I see that >>> currently >>> using --disable-replication fails for me as follows: >>> >>> # ./configure --disable-replication >>> ... >>> # make >>> ... >>> make all-recursive >>> Making all in pixman >>> make[3]: Nothing to be done for 'all'. >>> Making all in demos >>> make[3]: Nothing to be done for 'all'. >>> Making all in test >>> make[3]: Nothing to be done for 'all'. >>> CHK version_gen.h >>> LINK aarch64-softmmu/qemu-system-aarch64 >>> ../migration/colo.o: In function `qmp_query_xen_replication_status': >>> /home/brogers/osr/git/qemu/migration/colo.c:181: undefined reference >>> to `replication_get_error_all' >>> ../migration/colo.o: In function `qmp_xen_set_replication': >>> /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference >>> to `replication_stop_all' >>> /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference >>> to `replication_stop_all' >>> /home/brogers/osr/git/qemu/migration/colo.c:167: undefined reference >>> to `replication_start_all' >>> ../migration/colo.o: In function `qmp_xen_colo_do_checkpoint': >>> /home/brogers/osr/git/qemu/migration/colo.c:196: undefined reference >>> to `replication_do_checkpoint_all' >>> collect2: error: ld returned 1 exit status >>> make[1]: *** [Makefile:208: qemu-system-aarch64] Error 1 >>> make: *** [Makefile:322: subdir-aarch64-softmmu] Error 2 >> We should fix that. > > COLO needs replication enable. > So, should I add a new option enable/disable COLO ? > Then, If you disable replication, colo will be disabled automatically. > Like that: > # ./configure --disable-colo Then I would just define --enable-colo/--disable-colo which includes replication, the network filter and everything else. Paolo
On 03/06/2017 08:54 PM, Paolo Bonzini wrote: > > On 06/03/2017 11:03, Zhang Chen wrote: >> >> On 03/06/2017 05:08 PM, Dr. David Alan Gilbert wrote: >>> * Bruce Rogers (brogers@suse.com) wrote: >>>>>>> On 2/6/2017 at 4:57 AM, <dgilbert@redhat.com> wrote: >>>>> * Paolo Bonzini (pbonzini@redhat.com) wrote: >>>>>> On 03/02/2017 07:00, Stefan Hajnoczi wrote: >>>>>>> On Thu, Feb 02, 2017 at 07:05:30AM ‑0800, Paolo Bonzini wrote: >>>>>>>> The replication feature is a small amount of code, does not >>>>>>>> require any external library and unless used does not add >>>>>>>> anything to the guest's attack surface. Since any extra >>>>>>>> configure option affects maintainability on the other hand >>>>>>>> and is subject to bit rot, I think there is no need to >>>>>>>> make it configurable. >>>>>>> I think the current state is good: replication is enabled by >>>>>>> default but >>>>>>> can be compiled out if desired. >>>>>>> >>>>>>> Downstreams may not be comfortable supporting this feature yet since >>>>>>> it's incomplete. It's fair to offer an option to disable it, >>>>>>> otherwise >>>>>>> downstreams will have to patch this themselves. >>>>>> I understand‑‑‑I just am not sure where to draw the line because >>>>>> there's >>>>>> plenty of other incomplete features, hence the RFC. For example, >>>>>> record/replay cannot be enabled or disabled on the configure command >>>>>> line. That was the case even in the beginning, where it didn't >>>>>> support >>>>>> either block or character device replay. >>>>> The line is certainly fuzzy, but I think it's worth making the >>>>> following >>>>> type of things configurable: >>>>> Features that have a large chunk of code >>>>> ‑ dont lets try and configure tiny things on and off >>>>> That can be trivially configured >>>>> ‑ lets not put big chunks of code around making them configurable >>>>> and that are incomplete >>>>> or are unused by large chunks of the users >>>>> >>>>> Dave >>>>> >>>>>> ‑‑enable‑coroutine‑pool is a relic of when Windows builds needed >>>>>> it, but >>>>>> all other ‑‑enable‑* options require an external library or at least a >>>>>> specific operating system. See for example this patch: >>>>>> >>>>>> commit 52b53c04faab9f7a9879c8dc014930649a3e698d >>>>>> Author: Fam Zheng <famz@redhat.com> >>>>>> Date: Wed Sep 10 14:17:51 2014 +0800 >>>>>> >>>>>> block: Always compile virtio‑blk dataplane >>>>>> >>>>>> Dataplane doesn't depend on linux‑aio any more, so we don't >>>>>> need the >>>>>> compiling condition now. >>>>>> >>>>>> Configure options are kept but just print a message. >>>>>> >>>>>> Signed‑off‑by: Fam Zheng <famz@redhat.com> >>>>>> Reviewed‑by: Paolo Bonzini <pbonzini@redhat.com> >>>>>> Message‑id: 1410329871‑28885‑4‑git‑send‑email‑famz@redhat.com >>>>>> Signed‑off‑by: Stefan Hajnoczi <stefanha@redhat.com> >>>>>> >>>>>> >>>>>> I would actually prefer to remove many of the latter >>>>>> (‑‑enable‑vhost‑net, ‑‑enable‑vhost‑scsi, ‑‑enable‑vhost‑socket) and >>>>>> just use default‑configs. We are already doing it for ivshmem for >>>>>> example: >>>>>> >>>>>> CONFIG_IVSHMEM=$(CONFIG_EVENTFD) >>>>>> >>>>>> Paolo >>>>> ‑‑ >>>>> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK >>>> Was there ever a conclusion here? The reason I ask is that I see that >>>> currently >>>> using --disable-replication fails for me as follows: >>>> >>>> # ./configure --disable-replication >>>> ... >>>> # make >>>> ... >>>> make all-recursive >>>> Making all in pixman >>>> make[3]: Nothing to be done for 'all'. >>>> Making all in demos >>>> make[3]: Nothing to be done for 'all'. >>>> Making all in test >>>> make[3]: Nothing to be done for 'all'. >>>> CHK version_gen.h >>>> LINK aarch64-softmmu/qemu-system-aarch64 >>>> ../migration/colo.o: In function `qmp_query_xen_replication_status': >>>> /home/brogers/osr/git/qemu/migration/colo.c:181: undefined reference >>>> to `replication_get_error_all' >>>> ../migration/colo.o: In function `qmp_xen_set_replication': >>>> /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference >>>> to `replication_stop_all' >>>> /home/brogers/osr/git/qemu/migration/colo.c:172: undefined reference >>>> to `replication_stop_all' >>>> /home/brogers/osr/git/qemu/migration/colo.c:167: undefined reference >>>> to `replication_start_all' >>>> ../migration/colo.o: In function `qmp_xen_colo_do_checkpoint': >>>> /home/brogers/osr/git/qemu/migration/colo.c:196: undefined reference >>>> to `replication_do_checkpoint_all' >>>> collect2: error: ld returned 1 exit status >>>> make[1]: *** [Makefile:208: qemu-system-aarch64] Error 1 >>>> make: *** [Makefile:322: subdir-aarch64-softmmu] Error 2 >>> We should fix that. >> COLO needs replication enable. >> So, should I add a new option enable/disable COLO ? >> Then, If you disable replication, colo will be disabled automatically. >> Like that: >> # ./configure --disable-colo > Then I would just define --enable-colo/--disable-colo which includes > replication, the network filter and everything else. OK, I'm happy to hear that. Thanks Zhang Chen > > Paolo > > > . > -- Thanks Zhang Chen
© 2016 - 2024 Red Hat, Inc.