[libvirt] [PATCHv4 06/15] qemu: allow simple domain save to use fd: protocol
Eric Blake
eblake at redhat.com
Wed Mar 16 02:45:33 UTC 2011
On 03/10/2011 05:05 AM, Daniel P. Berrange wrote:
> On Wed, Mar 09, 2011 at 06:45:46PM -0700, Eric Blake wrote:
>> This allows direct saves (no compression, no root-squash NFS) to use
>> the more efficient fd: migration, which in turn avoids a race where
>> qemu exec: migration can sometimes fail because qemu does a generic
>> waitpid() that conflicts with the pclose() used by exec:. Further
>> patches will solve compression and root-squash NFS.
>>
>> * src/qemu/qemu_driver.c (qemudDomainSaveFlag): Use new function
>> when there is no compression.
>> ---
>> src/qemu/qemu_driver.c | 26 +++++++++++++++++++++++---
>> 1 files changed, 23 insertions(+), 3 deletions(-)
>>
>> + /* XXX gross - why don't we reuse the fd already opened earlier */
>> + int fd = -1;
>> +
>> + if (qemuCapsGet(qemuCaps, QEMU_CAPS_MIGRATE_QEMU_FD) &&
>> + priv->monConfig->type == VIR_DOMAIN_CHR_TYPE_UNIX)
>> + fd = open(path, O_WRONLY);
>
> Ok, so this is the bit which causes a regression on NFS rootsquash,
> if the path isn't readable by root.
Nope; no regression - just no fd: migration (it's a graceful fallback to
exec: migration on NFS rootsquash until later patches in the series).
>
>> qemuDomainObjEnterMonitorWithDriver(driver, vm);
>> - rc = qemuMonitorMigrateToFile(priv->mon,
>> - QEMU_MONITOR_MIGRATE_BACKGROUND,
>> - args, path, offset);
>> + if (fd >= 0 && lseek(fd, offset, SEEK_SET) == offset) {
>> + rc = qemuMonitorMigrateToFd(priv->mon,
>> + QEMU_MONITOR_MIGRATE_BACKGROUND,
>> + fd);
>> + } else {
>> + rc = qemuMonitorMigrateToFile(priv->mon,
>> + QEMU_MONITOR_MIGRATE_BACKGROUND,
>> + args, path, offset);
>> + }
>> + VIR_FORCE_CLOSE(fd);
Did this patch get ACK? I'm thinking of shuffling things and pushing
this prior to 5/15 (introduction of SCM_RIGHTS); patch 5 and 6 have no
direct influence on one another.
But I'm also annoyed at having to open qemuCaps, and am thinking about
fixing that first.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110315/f36cae02/attachment-0001.sig>
More information about the libvir-list
mailing list