From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YLxe8-0000tx-0s for qemu-devel@nongnu.org; Thu, 12 Feb 2015 12:33:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YLxe2-0001XP-Fn for qemu-devel@nongnu.org; Thu, 12 Feb 2015 12:33:47 -0500 Received: from e06smtp13.uk.ibm.com ([195.75.94.109]:39513) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YLxe2-0001Ww-61 for qemu-devel@nongnu.org; Thu, 12 Feb 2015 12:33:42 -0500 Received: from /spool/local by e06smtp13.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 12 Feb 2015 17:33:40 -0000 Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by d06dlp03.portsmouth.uk.ibm.com (Postfix) with ESMTP id 36D351B0807B for ; Thu, 12 Feb 2015 17:33:47 +0000 (GMT) Received: from d06av02.portsmouth.uk.ibm.com (d06av02.portsmouth.uk.ibm.com [9.149.37.228]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t1CHXbj03146004 for ; Thu, 12 Feb 2015 17:33:37 GMT Received: from d06av02.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av02.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t1CHXUnG009701 for ; Thu, 12 Feb 2015 10:33:35 -0700 Message-ID: <54DCE3E5.3070201@de.ibm.com> Date: Thu, 12 Feb 2015 18:33:25 +0100 From: Christian Borntraeger MIME-Version: 1.0 References: <1421678101-44779-1-git-send-email-tumanova@linux.vnet.ibm.com> <20150212154653.GB4054@stefanha-thinkpad.redhat.com> <54DCD80E.5030608@de.ibm.com> In-Reply-To: <54DCD80E.5030608@de.ibm.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v6 0/5] Geometry and blocksize detection for backing devices. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi , Ekaterina Tumanova Cc: kwolf@redhat.com, thuth@linux.vnet.ibm.com, armbru@redhat.com, Public KVM Mailing List , mihajlov@linux.vnet.ibm.com, dahi@linux.vnet.ibm.com, stefanha@redhat.com, cornelia.huck@de.ibm.com, pbonzini@redhat.com 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 > 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.