
On Tue, Jun 19, 2012 at 03:55:47PM -0600, Eric Blake wrote:
On 06/19/2012 04:26 AM, Dipankar Sarma wrote:
src/conf/domain_conf.c | 40 +++++++++++++++++++++++++++++++++------- src/conf/domain_conf.h | 2 +- src/qemu/qemu_command.c | 9 +++++---- src/vmx/vmx.c | 28 ++++++++++++++++------------ src/vmx/vmx.h | 6 +++--- 5 files changed, 58 insertions(+), 27 deletions(-)
This change is a bit bigger than the last; is there any way you can add to tests/qemuxml2argvtest.c (and by implication, to tests/qemuxml2argvdata) to cover the new code paths?
Will do.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
@@ -3004,8 +3022,15 @@ virDomainDiskDefAssignAddress(virCapsPtr caps, virDomainDiskDefPtr def) switch (def->bus) { case VIR_DOMAIN_DISK_BUS_SCSI: def->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE; - - if (caps->hasWideScsiBus) { + if (STREQ(ddef->os.arch, "ppc64") &&
This doesn't feel right. We shouldn't be hard-coding strings into the generic domain_conf code, so much as letting specific hypervisor drivers be making decisions. Remember, running LXC on ppc64 does not necessarily have the same default bus handling as running a ppc64 guest via qemu on an x86 machine. We either need a new field in caps (similar to caps->hasWideScsiBus) or even a callback function, so that the hypervisor driver code can answer questions about what defaults to use as part of the existing caps mechanism. The fact that you even had to touch vmx and qemu code in the same patch for a feature that you are really only trying to add to qemu support is further evidence that this is not quite right.
Thanks for the hint. That seems cleaner. It should be useful for some other changes for ppc64 that I am working on. I will rework this patch. Thanks Dipankar