All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kashyap Chamarthy <kchamart@redhat.com>
To: "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com>
Cc: qemu-devel@nongnu.org, quintela@redhat.com, jcody@redhat.com,
	kwolf@redhat.com
Subject: Re: [Qemu-devel] [PATCH] block migration: Allow compile time disable
Date: Thu, 4 May 2017 12:08:53 +0200	[thread overview]
Message-ID: <20170504100853.umbq3zaxqbbrbsw2@eukaryote> (raw)
In-Reply-To: <20170503104257.5127-1-dgilbert@redhat.com>

On Wed, May 03, 2017 at 11:42:57AM +0100, Dr. David Alan Gilbert (git) wrote:

A small comment inline, in the 'ifndef' section.

> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> Many users now prefer to use drive_mirror over NBD as an
> alternative to the older migrate -b option; drive_mirror is
> more complex to setup but gives you more options (e.g. only
> migrating some of the disks if some of them are shared).
> 
> Allow the large chunk of block migration code to be compiled
> out for those who don't use it.
> 
> Based on a downstream-patch we've had for a while by Jeff Cody.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>  configure               | 11 +++++++++++
>  migration/Makefile.objs |  2 +-
>  migration/migration.c   | 12 ++++++++++++
>  vl.c                    |  2 ++
>  4 files changed, 26 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 48a9370cc6..69eed5fb8d 100755
> --- a/configure
> +++ b/configure
> @@ -316,6 +316,7 @@ vte=""
>  virglrenderer=""
>  tpm="yes"
>  libssh2=""
> +live_block_migration="yes"
>  numa=""
>  tcmalloc="no"
>  jemalloc="no"
> @@ -1168,6 +1169,10 @@ for opt do
>    ;;
>    --enable-libssh2) libssh2="yes"
>    ;;
> +  --disable-live-block-migration) live_block_migration="no"
> +  ;;
> +  --enable-live-block-migration) live_block_migration="yes"
> +  ;;
>    --disable-numa) numa="no"
>    ;;
>    --enable-numa) numa="yes"
> @@ -1400,6 +1405,7 @@ disabled with --disable-FEATURE, default is enabled if available:
>    libnfs          nfs support
>    smartcard       smartcard support (libcacard)
>    libusb          libusb (for usb passthrough)
> +  live-block-migration   Block migration in the main migration stream
>    usb-redir       usb network redirection support
>    lzo             support of lzo compression library
>    snappy          support of snappy compression library
> @@ -5210,6 +5216,7 @@ echo "TPM support       $tpm"
>  echo "libssh2 support   $libssh2"
>  echo "TPM passthrough   $tpm_passthrough"
>  echo "QOM debugging     $qom_cast_debug"
> +echo "Live block migration $live_block_migration"
>  echo "lzo support       $lzo"
>  echo "snappy support    $snappy"
>  echo "bzip2 support     $bzip2"
> @@ -5776,6 +5783,10 @@ if test "$libssh2" = "yes" ; then
>    echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
>  fi
>  
> +if test "$live_block_migration" = "yes" ; then
> +  echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
> +fi
> +
>  # USB host support
>  if test "$libusb" = "yes"; then
>    echo "HOST_USB=libusb legacy" >> $config_host_mak
> diff --git a/migration/Makefile.objs b/migration/Makefile.objs
> index 480dd493a9..200b5e0c67 100644
> --- a/migration/Makefile.objs
> +++ b/migration/Makefile.objs
> @@ -9,5 +9,5 @@ common-obj-y += qjson.o
>  
>  common-obj-$(CONFIG_RDMA) += rdma.o
>  
> -common-obj-y += block.o
> +common-obj-$(CONFIG_LIVE_BLOCK_MIGRATION) += block.o
>  
> diff --git a/migration/migration.c b/migration/migration.c
> index 353f2728cf..ffce72aabc 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -692,6 +692,7 @@ MigrationInfo *qmp_query_migrate(Error **errp)
>  
>          populate_ram_info(info, s);
>  
> +#ifdef CONFIG_LIVE_BLOCK_MIGRATION
>          if (blk_mig_active()) {
>              info->has_disk = true;
>              info->disk = g_malloc0(sizeof(*info->disk));
> @@ -699,6 +700,7 @@ MigrationInfo *qmp_query_migrate(Error **errp)
>              info->disk->remaining = blk_mig_bytes_remaining();
>              info->disk->total = blk_mig_bytes_total();
>          }
> +#endif
>  
>          if (cpu_throttle_active()) {
>              info->has_cpu_throttle_percentage = true;
> @@ -720,6 +722,7 @@ MigrationInfo *qmp_query_migrate(Error **errp)
>  
>          populate_ram_info(info, s);
>  
> +#ifdef CONFIG_LIVE_BLOCK_MIGRATION
>          if (blk_mig_active()) {
>              info->has_disk = true;
>              info->disk = g_malloc0(sizeof(*info->disk));
> @@ -727,6 +730,7 @@ MigrationInfo *qmp_query_migrate(Error **errp)
>              info->disk->remaining = blk_mig_bytes_remaining();
>              info->disk->total = blk_mig_bytes_total();
>          }
> +#endif
>  
>          get_xbzrle_cache_stats(info);
>          break;
> @@ -1222,6 +1226,14 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
>      params.blk = has_blk && blk;
>      params.shared = has_inc && inc;
>  
> +#ifndef CONFIG_LIVE_BLOCK_MIGRATION
> +    if (params.blk || params.shared) {
> +        error_setg(errp, "QEMU compiled without old-style block migration. "
> +                         "Use drive_mirror+NBD.");

Is it worth spelling out briefly what the "old-style block migration"
is?  Something like:

    "QEMU compiled without old-style (i.e. QMP `migrate` with
    "inc":true) block migration. Use `drive-mirror`+NBD")
 
But I also wonder if it's needlessly wordy, so your call to incorporate
it or not.

I spelled out the QMP equivalent (as opposed to HMP: 'migrate -b')
because, that's what users of higher layers (libvirt, OpenStack etc) see
in their QMP interactions with QEMU, when the old-style approach is
used:

    {"execute":"migrate","arguments":{{"detach":true,"blk":false,"inc":true,"uri":"fd:migrate"}


[...]

-- 
/kashyap

  parent reply	other threads:[~2017-05-04 10:09 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-03 10:42 [Qemu-devel] [PATCH] block migration: Allow compile time disable Dr. David Alan Gilbert (git)
2017-05-03 18:06 ` Juan Quintela
2017-05-15 13:02   ` Dr. David Alan Gilbert
2017-05-15 13:09     ` Juan Quintela
2017-05-04 10:08 ` Kashyap Chamarthy [this message]
2017-05-04 10:25   ` Dr. David Alan Gilbert
2017-05-04 12:52     ` Kashyap Chamarthy
2017-05-15 13:24   ` Dr. David Alan Gilbert
2017-05-04 16:30 ` Eric Blake
2017-05-15 12:13   ` Dr. David Alan Gilbert
2017-05-15 13:44     ` Eric Blake

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=20170504100853.umbq3zaxqbbrbsw2@eukaryote \
    --to=kchamart@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@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.