>"Daniel P. Berrange" <berrange@xxxxxxxxxx> wrote on 26/01/2010 16:20:22: > "Daniel P. Berrange" <berrange@xxxxxxxxxx> > 26/01/2010 16:20 > > Please respond to > "Daniel P. Berrange" <berrange@xxxxxxxxxx> > > To > > Kenneth Nagin/Haifa/IBM@IBMIL > > cc > > Subject > > Re: [libvirt] Live Migration with non-shared storage for kvm > > On Tue, Jan 26, 2010 at 04:09:58PM +0200, Kenneth Nagin wrote: > > "Daniel P. Berrange" <berrange@xxxxxxxxxx> wrote on 26/01/2010 12:14:47: > > Since, this my first time submitting something to libvirt I wanted to make > > the initially submission simple, i.e. just adding the flags. > > That sounds fine > > > > > > > > I suggest adding these flags to virDomainMigrate. > > > > > > That sounds reasonable. > > > > > > > If I'm not mistaken qemuMonitorTextMigrate is the function that > > actually > > > > invokes the kvm monitor. > > > > Thus, it would be necessary to pass the flags to > > qemuMonitorTextMigrate.. > > > > But qemuMonitorTextMigrate does not have a flag input parameter. I > > think > > > > the least disruptive way to support the new flags is use the existing > > > > "background" parameter > > > > to pass the flags. Of course this would require some changes to the > > > > upstream functions that are invoked for migration. > > > > > > That is an internal function, so adding extra parameters to it is no > > > problem at all - no need to reuse/abuse existing parameters. > > > > > Are you recommending adding another "flag" parameter or exploiting the > > existing "background" parameter? > > Probably define some flags for the internal API. eg in src/qemu/qemu_monitor.h > add a small enum > > enum { > QEMU_MONITOR_MIGRATE_BACKGROUND = 1 << 0, > QEMU_MONITOR_MIGRATE_STORAGE = 1 << 1 > ...etc > }; > > and then just replace the existing background parameter with a flags > parameter > > > Daniel > -- > |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| > |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| > |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| > |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| Sorry about the delayed response. I had some pressing work items and family issues that took precedence. In order to support kvm's live migration with non-shared storage I added two migration flags that user can invoke: VIR_MIGRATE_NON_SHARED_DISK = (1 << 6), /* migration with non-shared storage with full disk copy */ VIR_MIGRATE_NON_SHARED_INC = (1 << 7), /* migration with non-shared storage with incremental copy */ /* (same base image shared between source and destination) */ Likewise I add complementary flags to virsh migrate: non_shared_disk and non_shared_inc As you suggested I also added internal flags to be passed in the "background" parameter to the qemu monitor: typedef enum { QEMU_MONITOR_MIGRATE_BACKGROUND = 1 << 0, QEMU_MONITOR_MIGRATE_NON_SHARED_DISK = 1 << 1, /* migration with non-shared storage with full disk copy */ QEMU_MONITOR_MIGRATE_NON_SHARED_INC = 1 << 2, /* migration with non-shared storage with incremental copy */ QEMU_MONITOR_MIGRATION_FLAGS_LAST }; I updated qemu_driver.c's doNativeMigrate and doTunnelMigrate to map the external flags to the internal flags. I updated qemu_monitor_text's qemuMonitorTextMigrate to map the internal flags to the qemu monitor's command line flags. I tested the doNativeMigrate usage of the two flags. However, I could not test the doTunnelMigrate usage because I wasn't sure how it works. Also, qemudDomainSave ends up calling qemuMonitorTextMigrate, but it didn't support the external flags so I assumed that it was not relevant. Here is the diff patch file from the current git: (See attached file: migration_with_non_shared.patch) - Kenneth Nagin
Attachment:
migration_with_non_shared.patch
Description: Binary data
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list