Patchwork Fix backcompat for hotplug of SCSI controllers

login
register
mail settings
Submitter Daniel P. Berrange
Date Dec. 7, 2009, 8:51 p.m.
Message ID <1260219109-14380-1-git-send-email-berrange@redhat.com>
Download mbox | patch
Permalink /patch/40546/
State New
Headers show

Comments

Daniel P. Berrange - Dec. 7, 2009, 8:51 p.m.
SCSI controllers have no trouble existing without any attached
disks. This could be achieved with the (legacy) monitor syntax

  pci_add pci_addr=auto storage if=scsi

This is now denied with

  scsi requires a backing file/device.
  failed to add if=scsi

There is no need for this denial and it breaks compatability
with existing QEMU usage, so remove the check for presence
of a drive.

  Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 hw/pci-hotplug.c |    6 +-----
 1 files changed, 1 insertions(+), 5 deletions(-)
Anthony Liguori - Dec. 7, 2009, 9:54 p.m.
Daniel P. Berrange wrote:
> SCSI controllers have no trouble existing without any attached
> disks. This could be achieved with the (legacy) monitor syntax
>
>   pci_add pci_addr=auto storage if=scsi
>
> This is now denied with
>
>   scsi requires a backing file/device.
>   failed to add if=scsi
>
> There is no need for this denial and it breaks compatability
> with existing QEMU usage, so remove the check for presence
> of a drive.
>   

Gerd, care to comment?  This bit of code seems pretty intentional:

commit 5b684b5a56e81f6f88234952fe8ed68010c36e19
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Tue Oct 13 13:59:55 2009 +0200

    hotplug: fix "pci_add storage if=scsi"

>   Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
>  hw/pci-hotplug.c |    6 +-----
>  1 files changed, 1 insertions(+), 5 deletions(-)
>
> diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c
> index 081d6d1..616435a 100644
> --- a/hw/pci-hotplug.c
> +++ b/hw/pci-hotplug.c
> @@ -182,14 +182,10 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon,
>  
>      switch (type) {
>      case IF_SCSI:
> -        if (!dinfo) {
> -            monitor_printf(mon, "scsi requires a backing file/device.\n");
> -            return NULL;
> -        }
>          dev = pci_create(bus, devfn, "lsi53c895a");
>          if (qdev_init(&dev->qdev) < 0)
>              dev = NULL;
> -        if (dev) {
> +        if (dev && dinfo) {
>              if (scsi_hot_add(&dev->qdev, dinfo, 0) != 0) {
>                  qdev_unplug(&dev->qdev);
>                  dev = NULL;
>   


Regards,

Anthony Liguori
Gerd Hoffmann - Dec. 8, 2009, 10:49 a.m.
On 12/07/09 22:54, Anthony Liguori wrote:
> Daniel P. Berrange wrote:
>> SCSI controllers have no trouble existing without any attached
>> disks. This could be achieved with the (legacy) monitor syntax
>>
>> pci_add pci_addr=auto storage if=scsi
>>
>> This is now denied with
>>
>> scsi requires a backing file/device.
>> failed to add if=scsi
>>
>> There is no need for this denial and it breaks compatability
>> with existing QEMU usage, so remove the check for presence
>> of a drive.
>
> Gerd, care to comment? This bit of code seems pretty intentional:

Looks fine to me.  If older qemu versions allow creating disk-less scsi 
adapters this way we should keep that behavior for compatibility reasons.

> commit 5b684b5a56e81f6f88234952fe8ed68010c36e19
> Author: Gerd Hoffmann <kraxel@redhat.com>
> Date: Tue Oct 13 13:59:55 2009 +0200
>
> hotplug: fix "pci_add storage if=scsi"

There is no conflict with this bugfix.

cheers,
   Gerd

Patch

diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c
index 081d6d1..616435a 100644
--- a/hw/pci-hotplug.c
+++ b/hw/pci-hotplug.c
@@ -182,14 +182,10 @@  static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon,
 
     switch (type) {
     case IF_SCSI:
-        if (!dinfo) {
-            monitor_printf(mon, "scsi requires a backing file/device.\n");
-            return NULL;
-        }
         dev = pci_create(bus, devfn, "lsi53c895a");
         if (qdev_init(&dev->qdev) < 0)
             dev = NULL;
-        if (dev) {
+        if (dev && dinfo) {
             if (scsi_hot_add(&dev->qdev, dinfo, 0) != 0) {
                 qdev_unplug(&dev->qdev);
                 dev = NULL;