
On 01/05/2012 04:59 PM, Laine Stump wrote:
On 01/05/2012 03:44 AM, Paolo Bonzini wrote:
Summary: two nits, one in the docs and one at the end of this email.
[Osier, I'm CCing you because there is some food for thought for SCSI].
On 01/05/2012 05:17 AM, Laine Stump wrote:
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 18b7e22..dcdf91f 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1001,8 +1001,16 @@ "block", "dir", or "network" and refers to the underlying source for the disk. The optional <code>device</code> attribute indicates how the disk is to be exposed - to the guest OS. Possible values for this attribute are "floppy", "disk" - and "cdrom", defaulting to "disk". The + to the guest OS. Possible values for this attribute are + "floppy", "disk", "cdrom", and "lun", defaulting to + "disk". "lun" (<span class="since">since 0.9.10</span>) is only + valid when type is "block" and the target element's "bus" + attribute is "virtio", and behaves identically to "disk", + except that generic SCSI commands from the guest are accepted What about "are forwarded to the disk"?
Okay, I'm adding that to the end of the sentence.
This is also true in the SCSI case (for SCSI, "block" will emulate commands rather than fail them; but for "lun" the behavior is identical).
We can add that to the docs when virtio-blk-scsi support is added.
Actually, there's already support for SCSI devices with device='disk' or device='cdrom', just not for the virtio implementation of SCSI. So it could be added now.
+ - also note that device='lun' will only be recognized for + actual raw devices, never for individual partitions or LVM + partitions (in those cases, the kernel will reject the generic + SCSI commands, making it identical to device='disk'). The Perhaps add a note that QEMU may fail to start? Again, this is not the case for virtio but it will be for "scsi".
I'd rather add that information when it actually is true (i.e. when virtio-blk-scsi support is put in).
More precisely, when support for device='lun' is added for SCSI disks (and again, it will work also for other controllers, not just virtio-scsi). So that's fine to leave it as is.
Suboptimal, because a type='lun' disk could well be a CD. :/ But short of supporting bootindex directly in the<disk> and<network> items, we cannot do much about it though.
So this is a problem, but not fixable now, correct?
Yes.
Side note: this fails if you're trying to hot-plug a SCSI CD drive. Probably this error condition in qemuDomainChangeEjectableMedia:
[snip]
should instead fall back to device hot-plug for VIR_DOMAIN_DISK_BUS_SCSI.
Just to verify - this is another thing that you've noticed in the code, but is orthogonal to this patch, correct?
Yes.
Truthfully, I didn't totally understand what that code was doing, but it seemed appropriate to at least duplicate the behavior of DEVICE_DISK :-) Looking at it some more, I *think* what is necessary, is to always return false if there is a disk that is DEVICE_LUN, since really the only thing that can be snapshotted is a qcow2 disk, and DEVICE_LUN disks by definition are never qcow2. So does it seem reasonable to change this to:
- if (vm->def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_DISK&& - (!vm->def->disks[i]->driverType || - STRNEQ(vm->def->disks[i]->driverType, "qcow2"))) { + if ((vm->def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_LUN) || + (vm->def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_DISK&& + STRNEQ_NULLABLE(vm->def->disks[i]->driverType, "qcow2"))) { qemuReportError(VIR_ERR_OPERATION_INVALID,
Makes sense. Paolo