Re: [libvirt] [PATCH] Clarify why some controllers don't generate -device string in QEMU driver
On Thu, Jan 28, 2010 at 12:53:56PM +, Matthew Booth wrote: The QEMU driver contained code to generate a -device string for piix4-ide, but wasn't using it. This change removes this string generation. It also adds a comment explaining why IDE and FDC controllers don't generate -device strings. The change also generates an error if a sata controller is specified for a QEMU domain, as this isn't supported. * src/qemu/qemu_conf.c: Remove VIR_DOMAIN_CONTROLLER_TYPE_IDE handler in qemuBuildControllerDevStr(). Ignore IDE and FDC controllers. Error if SATA controller is discovered. Add comments. --- src/qemu/qemu_conf.c | 26 ++ 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f4a6c08..3b7793f 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -2121,11 +2121,8 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def) virBufferVSprintf(buf, ,id=scsi%d, def-idx); break; +/* We always get an IDE controller, whether we want it or not. */ case VIR_DOMAIN_CONTROLLER_TYPE_IDE: -virBufferAddLit(buf, piix4-ide); -virBufferVSprintf(buf, ,id=ide%d, def-idx); -break; - default: goto error; } @@ -3141,16 +3138,29 @@ int qemudBuildCommandLine(virConnectPtr conn, if (qemuCmdFlags QEMUD_CMD_FLAG_DEVICE) { for (i = 0 ; i def-ncontrollers ; i++) { -char *scsi; -if (def-controllers[i]-type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI) +virDomainControllerDefPtr cont = def-controllers[i]; + +/* We don't add an explicit IDE or FD controller because the + * provided PIIX4 device already includes one. It isn't possible to + * remove the PIIX4. */ +if (cont-type == VIR_DOMAIN_CONTROLLER_TYPE_IDE || +cont-type == VIR_DOMAIN_CONTROLLER_TYPE_FDC) continue; +/* QEMU doesn't implement a SATA driver */ +if (cont-type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) { +qemudReportError(conn, NULL, NULL, VIR_ERR_NO_SUPPORT, + %s, _(SATA is not supported with this QEMU binary)); +goto error; +} + ADD_ARG_LIT(-device); -if (!(scsi = qemuBuildControllerDevStr(def-controllers[i]))) +char *devstr; +if (!(devstr = qemuBuildControllerDevStr(def-controllers[i]))) goto no_memory; -ADD_ARG(scsi); +ADD_ARG(devstr); } } Okay, pushed, thanks ! Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ dan...@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH] Clarify why some controllers don't generate -device string in QEMU driver
The QEMU driver contained code to generate a -device string for piix4-ide, but wasn't using it. This change removes this string generation. It also adds a comment explaining why IDE and FDC controllers don't generate -device strings. The change also generates an error if a sata controller is specified for a QEMU domain, as this isn't supported. * src/qemu/qemu_conf.c: Remove VIR_DOMAIN_CONTROLLER_TYPE_IDE handler in qemuBuildControllerDevStr(). Ignore IDE and FDC controllers. Error if SATA controller is discovered. Add comments. --- src/qemu/qemu_conf.c | 16 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f4a6c08..1c4f326 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -2121,11 +2121,8 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def) virBufferVSprintf(buf, ,id=scsi%d, def-idx); break; +/* We always get an IDE controller, whether we want it or not. */ case VIR_DOMAIN_CONTROLLER_TYPE_IDE: -virBufferAddLit(buf, piix4-ide); -virBufferVSprintf(buf, ,id=ide%d, def-idx); -break; - default: goto error; } @@ -3141,16 +3138,19 @@ int qemudBuildCommandLine(virConnectPtr conn, if (qemuCmdFlags QEMUD_CMD_FLAG_DEVICE) { for (i = 0 ; i def-ncontrollers ; i++) { -char *scsi; -if (def-controllers[i]-type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI) +/* We don't add an explicit IDE controller because the provided + * PIIX4 device already includes one. It isn't possible to remove + * the PIIX4. */ +if (def-controllers[i]-type == VIR_DOMAIN_CONTROLLER_TYPE_IDE) continue; ADD_ARG_LIT(-device); -if (!(scsi = qemuBuildControllerDevStr(def-controllers[i]))) +char *devstr; +if (!(devstr = qemuBuildControllerDevStr(def-controllers[i]))) goto no_memory; -ADD_ARG(scsi); +ADD_ARG(devstr); } } -- 1.6.6 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH] Clarify why some controllers don't generate -device string in QEMU driver
The QEMU driver contained code to generate a -device string for piix4-ide, but wasn't using it. This change removes this string generation. It also adds a comment explaining why IDE and FDC controllers don't generate -device strings. The change also generates an error if a sata controller is specified for a QEMU domain, as this isn't supported. * src/qemu/qemu_conf.c: Remove VIR_DOMAIN_CONTROLLER_TYPE_IDE handler in qemuBuildControllerDevStr(). Ignore IDE and FDC controllers. Error if SATA controller is discovered. Add comments. --- src/qemu/qemu_conf.c | 26 ++ 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f4a6c08..3b7793f 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -2121,11 +2121,8 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def) virBufferVSprintf(buf, ,id=scsi%d, def-idx); break; +/* We always get an IDE controller, whether we want it or not. */ case VIR_DOMAIN_CONTROLLER_TYPE_IDE: -virBufferAddLit(buf, piix4-ide); -virBufferVSprintf(buf, ,id=ide%d, def-idx); -break; - default: goto error; } @@ -3141,16 +3138,29 @@ int qemudBuildCommandLine(virConnectPtr conn, if (qemuCmdFlags QEMUD_CMD_FLAG_DEVICE) { for (i = 0 ; i def-ncontrollers ; i++) { -char *scsi; -if (def-controllers[i]-type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI) +virDomainControllerDefPtr cont = def-controllers[i]; + +/* We don't add an explicit IDE or FD controller because the + * provided PIIX4 device already includes one. It isn't possible to + * remove the PIIX4. */ +if (cont-type == VIR_DOMAIN_CONTROLLER_TYPE_IDE || +cont-type == VIR_DOMAIN_CONTROLLER_TYPE_FDC) continue; +/* QEMU doesn't implement a SATA driver */ +if (cont-type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) { +qemudReportError(conn, NULL, NULL, VIR_ERR_NO_SUPPORT, + %s, _(SATA is not supported with this QEMU binary)); +goto error; +} + ADD_ARG_LIT(-device); -if (!(scsi = qemuBuildControllerDevStr(def-controllers[i]))) +char *devstr; +if (!(devstr = qemuBuildControllerDevStr(def-controllers[i]))) goto no_memory; -ADD_ARG(scsi); +ADD_ARG(devstr); } } -- 1.6.6 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] Clarify why some controllers don't generate -device string in QEMU driver
On Thu, Jan 28, 2010 at 12:53:56PM +, Matthew Booth wrote: The QEMU driver contained code to generate a -device string for piix4-ide, but wasn't using it. This change removes this string generation. It also adds a comment explaining why IDE and FDC controllers don't generate -device strings. The change also generates an error if a sata controller is specified for a QEMU domain, as this isn't supported. * src/qemu/qemu_conf.c: Remove VIR_DOMAIN_CONTROLLER_TYPE_IDE handler in qemuBuildControllerDevStr(). Ignore IDE and FDC controllers. Error if SATA controller is discovered. Add comments. --- src/qemu/qemu_conf.c | 26 ++ 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index f4a6c08..3b7793f 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -2121,11 +2121,8 @@ qemuBuildControllerDevStr(virDomainControllerDefPtr def) virBufferVSprintf(buf, ,id=scsi%d, def-idx); break; +/* We always get an IDE controller, whether we want it or not. */ case VIR_DOMAIN_CONTROLLER_TYPE_IDE: -virBufferAddLit(buf, piix4-ide); -virBufferVSprintf(buf, ,id=ide%d, def-idx); -break; - default: goto error; } @@ -3141,16 +3138,29 @@ int qemudBuildCommandLine(virConnectPtr conn, if (qemuCmdFlags QEMUD_CMD_FLAG_DEVICE) { for (i = 0 ; i def-ncontrollers ; i++) { -char *scsi; -if (def-controllers[i]-type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI) +virDomainControllerDefPtr cont = def-controllers[i]; + +/* We don't add an explicit IDE or FD controller because the + * provided PIIX4 device already includes one. It isn't possible to + * remove the PIIX4. */ +if (cont-type == VIR_DOMAIN_CONTROLLER_TYPE_IDE || +cont-type == VIR_DOMAIN_CONTROLLER_TYPE_FDC) continue; +/* QEMU doesn't implement a SATA driver */ +if (cont-type == VIR_DOMAIN_CONTROLLER_TYPE_SATA) { +qemudReportError(conn, NULL, NULL, VIR_ERR_NO_SUPPORT, + %s, _(SATA is not supported with this QEMU binary)); +goto error; +} + ADD_ARG_LIT(-device); -if (!(scsi = qemuBuildControllerDevStr(def-controllers[i]))) +char *devstr; +if (!(devstr = qemuBuildControllerDevStr(def-controllers[i]))) goto no_memory; -ADD_ARG(scsi); +ADD_ARG(devstr); } } ACK, looks fine now Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list