All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
Cc: kwolf@redhat.com, borntraeger@de.ibm.com,
	Public KVM Mailing List <qemu-devel@nongnu.org>,
	mihajlov@linux.vnet.ibm.com, dahi@linux.vnet.ibm.com,
	stefanha@redhat.com, cornelia.huck@de.ibm.com,
	pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 5/6] geometry: Call backend function to detect geometry and blocksize
Date: Fri, 28 Nov 2014 13:58:21 +0100	[thread overview]
Message-ID: <87k32f5vo2.fsf@blackfin.pond.sub.org> (raw)
In-Reply-To: <54785457.6040609@linux.vnet.ibm.com> (Ekaterina Tumanova's message of "Fri, 28 Nov 2014 13:54:15 +0300")

Ekaterina Tumanova <tumanova@linux.vnet.ibm.com> writes:

> On 11/28/2014 01:10 PM, Markus Armbruster wrote:
>> Ekaterina Tumanova <tumanova@linux.vnet.ibm.com> writes:
>>
>>> hd_geometry_guess function autodetects the drive geometry. This patch
>>> adds a block backend call, that probes the backing device geometry.
>>> If the inner driver method is implemented and succeeds (currently only DASDs),
>>> the blkconf_geometry will pass-through the backing device geometry.
>>>
>>> Signed-off-by: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
>>> ---
>>>   hw/block/block.c         | 11 +++++++++++
>>>   hw/block/hd-geometry.c   |  9 +++++++++
>>>   hw/block/virtio-blk.c    |  1 +
>>>   include/hw/block/block.h |  1 +
>>>   4 files changed, 22 insertions(+)
>>>
>>> diff --git a/hw/block/block.c b/hw/block/block.c
>>> index a625773..f1d29bc 100644
>>> --- a/hw/block/block.c
>>> +++ b/hw/block/block.c
>>> @@ -25,6 +25,17 @@ void blkconf_serial(BlockConf *conf, char **serial)
>>>       }
>>>   }
>>>
>>> +void blkconf_blocksizes(BlockConf *conf)
>>> +{
>>> +    BlockBackend *blk = conf->blk;
>>> +    struct ProbeBlockSize blocksize = blk_probe_blocksizes(blk);
>>> +
>>> +    if (blocksize.rc == 0) {
>>> +        conf->physical_block_size = blocksize.size.phys;
>>> +        conf->logical_block_size = blocksize.size.log;
>>> +    }
>>> +}
>>> +
>>
>> Uh, doesn't this overwrite the user's geometry?
>>
>> The existing blkconf_ functions do nothing when the user supplied the
>> configuration.  In other words, they only provide defaults.  Why should
>> this one be different?
>>
>
> this will be fixed in the next version
>
>>>   void blkconf_geometry(BlockConf *conf, int *ptrans,
>>>                         unsigned cyls_max, unsigned heads_max, unsigned secs_max,
>>>                         Error **errp)
>>> diff --git a/hw/block/hd-geometry.c b/hw/block/hd-geometry.c
>>> index 6fcf74d..4972114 100644
>>> --- a/hw/block/hd-geometry.c
>>> +++ b/hw/block/hd-geometry.c
>>> @@ -121,6 +121,14 @@ void hd_geometry_guess(BlockBackend *blk,
>>>                          int *ptrans)
>>>   {
>>>       int cylinders, heads, secs, translation;
>>> +    struct ProbeGeometry geometry = blk_probe_geometry(blk);
>>> +
>>> +    if (geometry.rc == 0) {
>>> +        *pcyls = geometry.geo.cylinders;
>>> +        *psecs = geometry.geo.sectors;
>>> +        *pheads = geometry.geo.heads;
>>> +        goto done;
>>> +    }
>>>
>>
>> hd_geometry_guess() is called by blkconf_geometry() to conjure up a
>> default geometry when the user didn't pick one.  Fairly elaborate
>> guesswork.  blkconf_geometry() runs for IDE, SCSI and virtio-blk only.
>>
>> Your patch makes it pick the backend's geometry as reported by
>> blk_probe_geometry() before anything else.
>>
>> This is an incompatible change for backends where blk_probe_geometry()
>> succeeds.  Currently, it succeeds only for DASD, and there you *want*
>> the incompatible change.
>>
>> My point is: if we rely on blk_probe_geometry() failing except for DASD,
>> then we should call it something like blk_dasd_geometry() to make that
>> obvious.
>>
>
> This function itself is not DASD specific.

I agree, but...

>                                            It calls the inner method for
> "host_device" driver, which currently only succeeds for DASDs.
> But in future someone can define methods for other drivers or
> even modify the host_device driver.

... doing that will change the default geometry of the devices using the
backend.

At the very least, such action at a distance needs to be documented
prominently in the source.

[...]

  reply	other threads:[~2014-11-28 12:58 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-19 10:17 [Qemu-devel] [PATCH v2 0/6] Geometry and blocksize support for backing devices Ekaterina Tumanova
2014-11-19 10:17 ` [Qemu-devel] [PATCH v2 1/6] geometry: add bdrv functions for geometry and blocksize Ekaterina Tumanova
2014-11-21 10:01   ` Christian Borntraeger
2014-11-27 14:55   ` Markus Armbruster
2014-11-27 16:05     ` Ekaterina Tumanova
2014-11-28  8:25       ` Markus Armbruster
2014-11-19 10:17 ` [Qemu-devel] [PATCH v2 2/6] geometry: Detect blocksize via ioctls in separate static functions Ekaterina Tumanova
2014-11-21 10:17   ` Christian Borntraeger
2014-11-25 11:09     ` Stefan Hajnoczi
2014-11-27 17:41   ` Markus Armbruster
2014-11-28 10:58     ` Ekaterina Tumanova
2014-11-28 12:52       ` Markus Armbruster
2014-11-28 13:28         ` Ekaterina Tumanova
2014-11-19 10:17 ` [Qemu-devel] [PATCH v2 3/6] geometry: Add driver methods to probe blocksizes and geometry Ekaterina Tumanova
2014-11-21 13:52   ` Christian Borntraeger
2014-11-28  8:43   ` Markus Armbruster
2014-11-19 10:17 ` [Qemu-devel] [PATCH v2 4/6] geometry: Add block-backend wrappers for geometry probing Ekaterina Tumanova
2014-11-19 10:17 ` [Qemu-devel] [PATCH v2 5/6] geometry: Call backend function to detect geometry and blocksize Ekaterina Tumanova
2014-11-28 10:10   ` Markus Armbruster
2014-11-28 10:54     ` Ekaterina Tumanova
2014-11-28 12:58       ` Markus Armbruster [this message]
2014-11-28 10:27   ` Markus Armbruster
2014-11-19 10:17 ` [Qemu-devel] [PATCH v2 6/6] geometry: Target specific hook for s390x in geometry guessing Ekaterina Tumanova
2014-11-28 10:47   ` Markus Armbruster
2014-11-19 11:39 ` [Qemu-devel] [PATCH v2 0/6] Geometry and blocksize support for backing devices Christian Borntraeger
2014-11-19 14:01   ` [Qemu-devel] [PATCH] geometry: fix i386 compilation Ekaterina Tumanova
2014-11-19 14:40     ` Peter Maydell
2014-11-19 15:04       ` Cornelia Huck
2014-11-20 16:18         ` Kevin Wolf
2014-11-20 16:30           ` Christian Borntraeger
2014-11-21  9:42           ` Ekaterina Tumanova
2014-11-28 10:47     ` Markus Armbruster
2014-11-21 14:01 ` [Qemu-devel] [PATCH v2 0/6] Geometry and blocksize support for backing devices Christian Borntraeger
2014-11-25 13:01 ` Stefan Hajnoczi
2014-11-26 10:16   ` Ekaterina Tumanova
2014-11-28 10:35     ` Stefan Hajnoczi
2014-11-28 11:15       ` Ekaterina Tumanova
2014-11-28 13:40         ` Markus Armbruster
2014-11-28 10:40     ` Stefan Hajnoczi
2014-11-28 10:57     ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k32f5vo2.fsf@blackfin.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=dahi@linux.vnet.ibm.com \
    --cc=kwolf@redhat.com \
    --cc=mihajlov@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=tumanova@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.