[Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication

Paolo Bonzini posted 1 patch 7 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170202150530.1025-1-pbonzini@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
Makefile.objs          |  2 +-
block/Makefile.objs    |  2 +-
configure              | 11 -----------
tests/Makefile.include |  2 +-
4 files changed, 3 insertions(+), 14 deletions(-)
[Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Paolo Bonzini 7 years, 2 months ago
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


Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Dr. David Alan Gilbert 7 years, 2 months ago
* 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

Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Stefan Hajnoczi 7 years, 2 months ago
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
Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Paolo Bonzini 7 years, 2 months ago

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

Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Dr. David Alan Gilbert 7 years, 2 months ago
* 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

Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Bruce Rogers 7 years, 1 month ago
>>> 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
 


Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Paolo Bonzini 7 years, 1 month ago
> > 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
>  
> 
> 

Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Dr. David Alan Gilbert 7 years, 1 month ago
* 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

Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Zhang Chen 7 years, 1 month ago

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




Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Paolo Bonzini 7 years, 1 month ago

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

Re: [Qemu-devel] [RFC PATCH] configure: remove --enable-replication/--disable-replication
Posted by Zhang Chen 7 years, 1 month ago

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