[openstack-dev] [Nova] libvirt doesn't migrate cdrom devices?

Michael Still mikal at stillhq.com
Tue Feb 18 10:20:58 UTC 2014


On Tue, Feb 18, 2014 at 3:14 AM, Daniel P. Berrange <berrange at redhat.com> wrote:
> On Tue, Feb 18, 2014 at 03:08:59AM -0700, Michael Still wrote:
>> On Tue, Feb 18, 2014 at 2:43 AM, Daniel P. Berrange <berrange at redhat.com> wrote:
>>
>> > So I'd saying changing it to 'disk' is out of the question unless
>> > we unconditionally use vfat as the filesystem instead of iso9660.
>>
>> So, at the moment we conflate a flag about format (iso9660 or vfat)
>> with a flag about device type. We could have both as separate flags
>> with reasonable defaults. However, at the moment we're pretty much
>> presented with a choice of either having a working Windows instance,
>> or working block migration. I suspect that's a trade off we don't want
>> to have to make.
>
> Why do we need to support both iso9660 and vfat ?  If we only cared
> to support vfat, then we could have working Windows and working block
> migration.

iso9660 was made the default at the request of the cloud-init author.
IIRC the decision was based on it being a "cleaner" interface than
vfat (read only, etc). I certainly think we could make vfat the
default, and put a big ugly warning about iso9660 in the flag which
lets operators select which to use.

> Incidentally since you say other virt drivers don't use cdrom, does
> this mean they only use vfat, or are they using iso9660 + disk and
> thus broken for windows too ?

I'm specifically thinking of hyper-v here, and I am sure they tested
with Windows. To be honest I don't remember all the details, I just
recall that at least one hypervisor had issues with attaching a second
cdrom (we support boot from cdrom).

>> Do you have any visibility into why cdrom devices don't get migrated
>> by libvirt correctly? Is there perhaps a flag to the migrate call we
>> could twiddle to make it magically work right?
>
> It seems to be done on the assumption that we only care about
> migrating data for writable disks. I think that was just copied
> from QEMU's original built-in block migration so that we had
> consistent behaviour. So there's no quick fix in libvirt we can
> do - we'd probably have to figure out a way to pass in a list of
> disks to be mirrored.
>
>         /* skip shared, RO and source-less disks */
>         if (disk->shared || disk->readonly || !disk->src)
>             continue;

Hmmmm. Shame that.

Ok, I'll take a pass at changing the default tomorrow.

Michael

-- 
Rackspace Australia



More information about the OpenStack-dev mailing list