diff mbox

ide scsi: Mess with geometry only for hard disk devices

Message ID 1342111951-27930-1-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster July 12, 2012, 4:52 p.m. UTC
Legacy -drive cyls=... are now ignored completely when the drive
doesn't back a hard disk device.  Before, they were first checked
against a hard disk's limits, then ignored.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 hw/ide/qdev.c  |    3 ++-
 hw/scsi-disk.c |    3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

Comments

Markus Armbruster July 23, 2012, 7:25 a.m. UTC | #1
Ping?

Markus Armbruster <armbru@redhat.com> writes:

> Legacy -drive cyls=... are now ignored completely when the drive
> doesn't back a hard disk device.  Before, they were first checked
> against a hard disk's limits, then ignored.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  hw/ide/qdev.c  |    3 ++-
>  hw/scsi-disk.c |    3 ++-
>  2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
> index 22e58df..5ea9b8f 100644
> --- a/hw/ide/qdev.c
> +++ b/hw/ide/qdev.c
> @@ -149,7 +149,8 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
>      }
>  
>      blkconf_serial(&dev->conf, &dev->serial);
> -    if (blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
> +    if (kind != IDE_CD
> +        && blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
>          return -1;
>      }
>  
> diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
> index 525816c..318318c 100644
> --- a/hw/scsi-disk.c
> +++ b/hw/scsi-disk.c
> @@ -1750,7 +1750,8 @@ static int scsi_initfn(SCSIDevice *dev)
>      }
>  
>      blkconf_serial(&s->qdev.conf, &s->serial);
> -    if (blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
> +    if (dev->type == TYPE_DISK
> +        && blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
>          return -1;
>      }
Paolo Bonzini July 23, 2012, 10:03 a.m. UTC | #2
Il 23/07/2012 09:25, Markus Armbruster ha scritto:
> Ping?
> 
> Markus Armbruster <armbru@redhat.com> writes:
> 
>> Legacy -drive cyls=... are now ignored completely when the drive
>> doesn't back a hard disk device.  Before, they were first checked
>> against a hard disk's limits, then ignored.
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> ---
>>  hw/ide/qdev.c  |    3 ++-
>>  hw/scsi-disk.c |    3 ++-
>>  2 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
>> index 22e58df..5ea9b8f 100644
>> --- a/hw/ide/qdev.c
>> +++ b/hw/ide/qdev.c
>> @@ -149,7 +149,8 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
>>      }
>>  
>>      blkconf_serial(&dev->conf, &dev->serial);
>> -    if (blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
>> +    if (kind != IDE_CD
>> +        && blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
>>          return -1;
>>      }
>>  
>> diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
>> index 525816c..318318c 100644
>> --- a/hw/scsi-disk.c
>> +++ b/hw/scsi-disk.c
>> @@ -1750,7 +1750,8 @@ static int scsi_initfn(SCSIDevice *dev)
>>      }
>>  
>>      blkconf_serial(&s->qdev.conf, &s->serial);
>> -    if (blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
>> +    if (dev->type == TYPE_DISK
>> +        && blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
>>          return -1;
>>      }
> 
> 

Acked-by: Paolo Bonzini <pbonzini@redhat.com>

Kevin, are you taking this patch?

Paolo
Kevin Wolf July 26, 2012, 1:42 p.m. UTC | #3
Am 23.07.2012 12:03, schrieb Paolo Bonzini:
> Il 23/07/2012 09:25, Markus Armbruster ha scritto:
>> Ping?
>>
>> Markus Armbruster <armbru@redhat.com> writes:
>>
>>> Legacy -drive cyls=... are now ignored completely when the drive
>>> doesn't back a hard disk device.  Before, they were first checked
>>> against a hard disk's limits, then ignored.
>>>
>>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>>> ---
>>>  hw/ide/qdev.c  |    3 ++-
>>>  hw/scsi-disk.c |    3 ++-
>>>  2 files changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
>>> index 22e58df..5ea9b8f 100644
>>> --- a/hw/ide/qdev.c
>>> +++ b/hw/ide/qdev.c
>>> @@ -149,7 +149,8 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
>>>      }
>>>  
>>>      blkconf_serial(&dev->conf, &dev->serial);
>>> -    if (blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
>>> +    if (kind != IDE_CD
>>> +        && blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
>>>          return -1;
>>>      }
>>>  
>>> diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
>>> index 525816c..318318c 100644
>>> --- a/hw/scsi-disk.c
>>> +++ b/hw/scsi-disk.c
>>> @@ -1750,7 +1750,8 @@ static int scsi_initfn(SCSIDevice *dev)
>>>      }
>>>  
>>>      blkconf_serial(&s->qdev.conf, &s->serial);
>>> -    if (blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
>>> +    if (dev->type == TYPE_DISK
>>> +        && blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
>>>          return -1;
>>>      }
>>
>>
> 
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>
> 
> Kevin, are you taking this patch?

Thanks, applied to the block branch.

Kevin
diff mbox

Patch

diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
index 22e58df..5ea9b8f 100644
--- a/hw/ide/qdev.c
+++ b/hw/ide/qdev.c
@@ -149,7 +149,8 @@  static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind)
     }
 
     blkconf_serial(&dev->conf, &dev->serial);
-    if (blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
+    if (kind != IDE_CD
+        && blkconf_geometry(&dev->conf, &dev->chs_trans, 65536, 16, 255) < 0) {
         return -1;
     }
 
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 525816c..318318c 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -1750,7 +1750,8 @@  static int scsi_initfn(SCSIDevice *dev)
     }
 
     blkconf_serial(&s->qdev.conf, &s->serial);
-    if (blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
+    if (dev->type == TYPE_DISK
+        && blkconf_geometry(&dev->conf, NULL, 65535, 255, 255) < 0) {
         return -1;
     }