qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v6 0/5] Geometry and blocksize detection for bac


From: Christian Borntraeger
Subject: Re: [Qemu-devel] [PATCH v6 0/5] Geometry and blocksize detection for backing devices.
Date: Thu, 12 Feb 2015 18:33:25 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

Am 12.02.2015 um 17:42 schrieb Christian Borntraeger:
> Am 12.02.2015 um 16:46 schrieb Stefan Hajnoczi:
>> On Mon, Jan 19, 2015 at 03:34:56PM +0100, Ekaterina Tumanova wrote:
>>> Updates v5 -> v6:
>>>
>>> Minor Updates according the last review from Stefan Hajnoczi:
>>> 1. Do not change the flow of code, factored out of raw_probe_alignment.
>>> 2. added #ifdef __linux__ in 2 places of raw-posix.c, mentioned by reviewer.
>>> 3. adjusted the comment hdev_probe_geometry according suggestment.
>>> 4. use bdrv_nb_sectors(bs) instead of bs->total_sectors.
>>> 5. do not discard error blk_probe_blocksizes(). now has rc.
>>> 6. put the 512-byte default blocksize value in blkconf_blocksizes.
>>> 7. drop the default parameter from the DEFINE_PROP_BLOCKSIZE() macro.
>>
>> Unfortunately this series breaks "make check" so it cannot be merged:
>>
>> GTESTER check-qtest-x86_64
>> qemu-system-x86_64: logical_block_size must be 512 for IDE
>> qemu-system-x86_64: Device initialization failed.
>> qemu-system-x86_64: Initialization of device ide-cd failed
>> Broken pipe
>> GTester: last random seed: R02S942fac7e56eff09e8ab7a7f7fecf847e
>>
> 
> This particular message came in with 
> 
> commit d20051856cd2fa8f10fed2d2a0b2751de5f7b20d
> Author: Kevin Wolf <address@hidden>
> Date:   Wed Dec 3 13:21:32 2014 +0100
> 
>     ide: Check validity of logical block size
> 
> so something like
> diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c
> index 353854c..2680275 100644
> --- a/hw/ide/qdev.c
> +++ b/hw/ide/qdev.c
> @@ -163,7 +163,8 @@ static int ide_dev_initfn(IDEDevice *dev, IDEDriveKind 
> kind)
>          return -1;
>      }
>  
> -    if (dev->conf.logical_block_size != 512) {
> +    if (dev->conf.logical_block_size != 512 &&
> +        dev->conf.logical_block_size != 0) {
>          error_report("logical_block_size must be 512 for IDE");
>          return -1;
>      }
> 
> 
> will fix this.
> 
> Now we have 
> block.c:582: bdrv_probe_blocksizes: Assertion `drv != ((void *)0)' failed
> 
> so
> we need something like this on top - I guess.
> 
> diff --git a/block.c b/block.c
> index dbc2519..8bbcc6d 100644
> --- a/block.c
> +++ b/block.c
> @@ -579,8 +579,7 @@ int bdrv_probe_blocksizes(BlockDriverState *bs, 
> BlockSizes *bsz)
>  {
>      BlockDriver *drv = bs->drv;
>  
> -    assert(drv != NULL);
> -    if (drv->bdrv_probe_blocksizes) {
> +    if (drv && drv->bdrv_probe_blocksizes) {
>          return drv->bdrv_probe_blocksizes(bs, bsz);
>      }
>  
> @@ -597,8 +596,7 @@ int bdrv_probe_geometry(BlockDriverState *bs, HDGeometry 
> *geo)
>  {
>      BlockDriver *drv = bs->drv;
>  
> -    assert(drv != NULL);
> -    if (drv->bdrv_probe_geometry) {
> +    if (drv && drv->bdrv_probe_geometry) {
>          return drv->bdrv_probe_geometry(bs, geo);
>      }
>  
> 
> Kate, I think its time for a v7 :-(

Of course, please double check my quick hacks. I still see some broken pipe 
messages, so I must have missed something.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]