On Tue, Sep 30, 2014 at 05:11:03PM +0200, Jiri Denemark wrote:
On Tue, Sep 30, 2014 at 16:39:22 +0200, Cristian Klein wrote:
> Signed-off-by: Cristian Klein <cristian.klein(a)cs.umu.se>
> ---
> include/libvirt/libvirt.h.in | 1 +
> src/libvirt.c | 7 +++++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
> index 5217ab3..82f3aeb 100644
> --- a/include/libvirt/libvirt.h.in
> +++ b/include/libvirt/libvirt.h.in
> @@ -1225,6 +1225,7 @@ typedef enum {
> VIR_MIGRATE_ABORT_ON_ERROR = (1 << 12), /* abort migration on I/O
errors happened during migration */
> VIR_MIGRATE_AUTO_CONVERGE = (1 << 13), /* force convergence */
> VIR_MIGRATE_RDMA_PIN_ALL = (1 << 14), /* RDMA memory pinning */
> + VIR_MIGRATE_POSTCOPY = (1 << 15), /* enable (but don't
start) post-copy */
> } virDomainMigrateFlags;
I still think we should add an extra flag to start post copy
immediately. To address your concerns about it, I don't think it's
implementing a policy in libvirt. It's for apps that want to make sure
migration converges without having to spawn another thread and monitor
the progress or wait for a timeout. It's a bit similar to migrating a
paused domain vs. migrating a running domain and pausing it when it
doesn't seem to converge.
Your point about spawning another thread makes me wonder if we should
actually look at adding a 'VIR_MIGRATE_ASYNC' method (that would require
P2P migration of course). If this flag were set, virDomainMigrateXXX would
only block for long enough to start the migration and then return.
Callers can use the job info API to monitor progress & success/failure.
Then we wouldn't have to keep adding flags like you suggest - apps can
just easily call the appropriate API right away with no threads needed
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|