[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 17:42:54 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 |
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 :-(