On 09/11/2014 10:28 AM, Peter Krempa wrote:
On 09/11/14 18:25, Peter Krempa wrote:
> On 09/11/14 18:16, Eric Blake wrote:
>> On 09/11/2014 09:47 AM, Peter Krempa wrote:
>>> If a floppy drive isn't selected for snapshot explicitly and is empty
>>> don't try to snapshot it. For external snapshots this would fail as we
>>> can't generate a name for the snapshot from an empty drive.
>>
>> Do we need the same for cdrom drives?
>
> CDROMs are automatically read only and thus get the _NONE target right
> when parsing the configuration.
>
>>> +
>>> + /* Don't snapshot empty floppy drives */
>>> + if (def->dom->disks[i]->device ==
VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
>>> + !virDomainDiskGetSource(def->dom->disks[i]))
>>
>> If we are worried about ALL empty drives, it would be simpler to just
>> drop the left side of the &&, making it solely a test of whether there
>> is currently a defined host source.
>>
>
> Since only CDROMs and floppies can be empty and cdroms are already
> exempted from here it should be functionally equivalent to do that. The
> only limitation is that the check for the empty source probably needs to
> be stronger (NBD disks may have the disk->src->path NULL even if they
> have backing.)
<disk type='block' device='lun'> also allows for a NULL src, if I
remember correctly.
Which reminds me that snapshots of NBD disks are forbidden, so it should
be fine even without tweaking the emptiness check.
Still feels fragile.
>
> I'll post a v2.
>
Your call whether I should try to improve the check or leave it as-is.
I'd feel more comfortable with the generic check that all source-less
disks are explicitly tweaked to not have a snapshot taken, rather than
relying on side checks like readonly saving the day.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org