From: Ekaterina Tumanova <tumanova@linux.vnet.ibm.com>
To: Public KVM Mailing List <qemu-devel@nongnu.org>
Cc: kwolf@redhat.com, borntraeger@de.ibm.com, armbru@redhat.com,
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 v3 0/5] Geometry and blocksize detection for backing devices.
Date: Fri, 12 Dec 2014 16:10:12 +0300 [thread overview]
Message-ID: <548AE934.2000007@linux.vnet.ibm.com> (raw)
In-Reply-To: <1417802181-20834-1-git-send-email-tumanova@linux.vnet.ibm.com>
On 12/05/2014 08:56 PM, Ekaterina Tumanova wrote:
> This 3rd revision of the patch set.
>
> Proper geometry and blocksize information is vital for support of
> DASD/ECKD drives in Linux guests. Otherwise things will fail in
> certain cases.
>
> The existing geometry and blocksize qemu defaults have no sense
> for DASD drives (hd_geometry_guess detection and 512 for sizes).
> Setting this information manually in XML file is far from user-friendly,
> as the admin has to manually look up the properties of the
> host disks and then modify the guest definition accordingly.
>
> Since Linux uses DASDs as normal block devices, we actually
> want to use virtio-blk to pass those to KVM guests.
>
> In order to avoid any change in behavior of other drives, the DASD
> special casing was advised. We call ioctl BIODASDINFO2 on the block
> device, which will only succeed if the device is really a DASD.
>
> In order to retrieve the underlying device geometry and blocksizes
> a new block-backend functions and underlying driver functions were
> introduced (blk_probe_blocksizes anf blk_probe_geometry wrappers
> and corresponding bdrv_xxxxxx functions).
>
> As for now only "host_device" driver received new detection methods.
> For "raw" we call childs method as usual. In future one may update
> other drivers to add some other detection heuristics.
>
> If the host_device appears to be a DASD, the driver functions
> (hdev_probe_blocksizes and hdev_probe_geometry) will call certain
> ioctls in order to detect geometry and blocksizes of the underlying device.
> if probing failed bdrv_probe_blocksizes caller will set defaults,
> and bdrv_probe_geometry will fail to allow fallback to old detection logic.
>
> The front-end (BlockConf API) was updated:
> 1. a new blkconf_blocksizes function was added. It doesn't
> change user-defined blocksize values. If properties are unset, it will
> set values, returned by blk_probe_backend. In order to allow this logic,
> blocksize properties were initialized with 0. (driver will return 512 if
> backing device probing didn't succeed or if driver method is not defined).
> 2. hd_geometry guess was changed to firstly try to retrieve values via
> blk_probe_geometry and if it fails, fallback to the old logic.
>
> updates from v2:
> - avoid passing structs as a function result in backend part
> - fix patch desctiptions
> - add the blkconf_blocksizes call to all the users of BlockConf
> - do not change geometry and blocksize values set via command-line, to do that:
> remove hardcoding 512 in DEFINE_BLOCK_PROPERTIES. set defaults in
> blk_probe_blocksizes (now always succeeds) and call it only if property is 0.
> - fix cylinders calculation.
> - document blk_probe_geometry call as "currently only for DASD".
> - anything I forgot :)
>
> Ekaterina Tumanova (5):
> block: add bdrv functions for geometry and blocksize
> raw-posix: Factor block size detection out of raw_probe_alignment()
> block: Add driver methods to probe blocksizes and geometry
> block-backend: Add wrappers for blocksizes and geometry probing
> BlockConf: Call backend functions to detect geometry and blocksizes
>
> block.c | 35 +++++++++++
> block/block-backend.c | 10 +++
> block/raw-posix.c | 135 +++++++++++++++++++++++++++++++++++------
> block/raw_bsd.c | 14 +++++
> hw/block/block.c | 18 ++++++
> hw/block/hd-geometry.c | 12 ++++
> hw/block/nvme.c | 1 +
> hw/block/virtio-blk.c | 1 +
> hw/core/qdev-properties.c | 3 +-
> hw/ide/qdev.c | 1 +
> hw/scsi/scsi-disk.c | 1 +
> hw/usb/dev-storage.c | 1 +
> include/block/block.h | 13 ++++
> include/block/block_int.h | 5 ++
> include/hw/block/block.h | 5 +-
> include/sysemu/block-backend.h | 2 +
> 16 files changed, 237 insertions(+), 20 deletions(-)
>
friendly *ping* to maintainers of block layer :) I would rather not send
next version without getting your feedback first.
next prev parent reply other threads:[~2014-12-12 13:10 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-05 17:56 [Qemu-devel] [PATCH v3 0/5] Geometry and blocksize detection for backing devices Ekaterina Tumanova
2014-12-05 17:56 ` [Qemu-devel] [PATCH v3 1/5] block: add bdrv functions for geometry and blocksize Ekaterina Tumanova
2014-12-10 12:38 ` Thomas Huth
2014-12-15 13:00 ` Markus Armbruster
2014-12-05 17:56 ` [Qemu-devel] [PATCH v3 2/5] raw-posix: Factor block size detection out of raw_probe_alignment() Ekaterina Tumanova
2014-12-10 12:48 ` Thomas Huth
2014-12-15 13:07 ` Markus Armbruster
2014-12-05 17:56 ` [Qemu-devel] [PATCH v3 3/5] block: Add driver methods to probe blocksizes and geometry Ekaterina Tumanova
2014-12-10 13:14 ` Thomas Huth
2014-12-11 11:17 ` Ekaterina Tumanova
2014-12-11 14:22 ` Thomas Huth
2014-12-15 13:29 ` Markus Armbruster
2014-12-15 14:36 ` Ekaterina Tumanova
2014-12-05 17:56 ` [Qemu-devel] [PATCH v3 4/5] block-backend: Add wrappers for blocksizes and geometry probing Ekaterina Tumanova
2014-12-05 17:56 ` [Qemu-devel] [PATCH v3 5/5] BlockConf: Call backend functions to detect geometry and blocksizes Ekaterina Tumanova
2014-12-10 13:29 ` Thomas Huth
2014-12-15 13:50 ` Markus Armbruster
2014-12-15 14:40 ` Ekaterina Tumanova
2014-12-15 15:48 ` Markus Armbruster
2014-12-12 13:10 ` Ekaterina Tumanova [this message]
2014-12-15 13:51 ` [Qemu-devel] [PATCH v3 0/5] Geometry and blocksize detection for backing devices 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=548AE934.2000007@linux.vnet.ibm.com \
--to=tumanova@linux.vnet.ibm.com \
--cc=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 \
/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.