On Wed, Apr 21, 2010 at 03:03:43PM -0600, Eric Blake wrote: > On 04/21/2010 10:56 AM, Daniel P. Berrange wrote: > > The save process was relying on use of the shell >> append > > operator to ensure the save data was placed after the libvirt > > header + XML. This doesn't work for block devices though. > > Replace this code with use of 'dd' and its 'seek' parameter. > > > > The qemuMonitorMigateToCommand() monitor API is used for both > > save/coredump, and migration via UNIX socket. We can't simply > > switch this to use 'dd' since this causes problems with the > > migration usage. Thus, create a dedicated qemuMonitorMigateToFile > > which can accept an filename + offset, and remove the filename > > from the current qemuMonitorMigateToCommand() API > > > > > +++ b/src/qemu/qemu_driver.c > > @@ -4789,6 +4789,7 @@ static int qemudDomainSaveFlag(virDomainPtr dom, const char *path, > > qemuDomainObjPrivatePtr priv; > > struct stat sb; > > int is_bdev = 0; > > + unsigned long long offset; > > Should this be off_t instead of ull? > > > @@ -1673,7 +1701,8 @@ int qemuMonitorJSONMigrateToCommand(qemuMonitorPtr mon, > > goto cleanup; > > } > > > > - if (virAsprintf(&dest, "exec:%s >>%s 2>/dev/null", argstr, safe_target) < 0) { > > + if (virAsprintf(&dest, "exec:%s | dd of=%s seek=%llub", > > + argstr, safe_target, offset) < 0) { > > Don't you still need to silence stderr, particularly since dd writes to > stderr even on success? (2 instances) I didn't want to silence stderr, because I want it to end up in the QEMU logfile if anything goes wrong. So i really need a way to make dd keep quiet on success, rather than throwing away stderr Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list