From: Paolo Bonzini <pbonzini@redhat.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Alexander Graf <agraf@suse.de>,
Stefan Weinhuber <wein@linux.vnet.ibm.com>,
Christoph Hellwig <hch@lst.de>,
Markus Armbruster <armbru@redhat.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 1.1 1/1] Fix geometry sector calculation
Date: Thu, 24 May 2012 13:48:07 +0200 [thread overview]
Message-ID: <4FBE1FF7.7050305@redhat.com> (raw)
In-Reply-To: <1337858575-37612-2-git-send-email-borntraeger@de.ibm.com>
Il 24/05/2012 13:22, Christian Borntraeger ha scritto:
> Currently the sector value for the geometry is masked, even if the
> user usesa command line parameter that explicitely gives a number.
> This breaks dasd devices on s390. A dasd device can have
> a physical block size of 4096 (== same for logical block size)
> and a typcial geometry of 15 heads and 12 sectors per cyl.
> The ibm partition detection relies on a correct geometry
> reported by the device. Unfortunately the current code changes
> 12 to 8. This would be necessary if the total size is
> not a multiple of logical sector size, but for dasd this
> is not the case.
>
> This patch checks the device size and only applies sector
> mask if necessary.
Rereading the code, I have no idea what the masking is for. Perhaps we
can even remove it. However, your patch makes sense, it is safe, and it
would be nice to apply it even for 1.1.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> CC: Christoph Hellwig <hch@lst.de>
> ---
> hw/virtio-blk.c | 17 ++++++++++++++++-
> 1 files changed, 16 insertions(+), 1 deletions(-)
>
> diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
> index f9e1896..41c5bae 100644
> --- a/hw/virtio-blk.c
> +++ b/hw/virtio-blk.c
> @@ -489,7 +489,22 @@ static void virtio_blk_update_config(VirtIODevice *vdev, uint8_t *config)
> stw_raw(&blkcfg.min_io_size, s->conf->min_io_size / blk_size);
> stw_raw(&blkcfg.opt_io_size, s->conf->opt_io_size / blk_size);
> blkcfg.heads = heads;
> - blkcfg.sectors = secs & ~s->sector_mask;
> + /*
> + * We must ensure that the block device capacity is a multiple of
> + * the logical block size. If that is not the case, lets use
> + * sector_mask to adopt the geometry to have a correct picture.
> + * For those devices where the capacity is ok for the given geometry
> + * we dont touch the sector value of the geometry, since some devices
> + * (like s390 dasd) need a specific value. Here the capacity is already
> + * cyls*heads*secs*blz_size and the sector value is not block size
> + * divided by 512 - instead it is the amount of blk_size blocks
> + * per track (cylinder).
> + */
> + if (bdrv_getlength(s->bs) / heads / secs % blk_size) {
> + blkcfg.sectors = secs & ~s->sector_mask;
> + } else {
> + blkcfg.sectors = secs;
> + }
> blkcfg.size_max = 0;
> blkcfg.physical_block_exp = get_physical_block_exp(s->conf);
> blkcfg.alignment_offset = 0;
next prev parent reply other threads:[~2012-05-24 11:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1337858575-37612-1-git-send-email-borntraeger@de.ibm.com>
2012-05-24 11:22 ` [Qemu-devel] [PATCH 1/1] Fix geometry sector calculation Christian Borntraeger
2012-05-24 11:48 ` Paolo Bonzini [this message]
2012-05-24 13:06 ` [Qemu-devel] [PATCH 1.1 " Alexander Graf
2012-05-24 13:26 ` Christian Borntraeger
2012-05-25 11:53 ` Stefan Hajnoczi
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=4FBE1FF7.7050305@redhat.com \
--to=pbonzini@redhat.com \
--cc=agraf@suse.de \
--cc=armbru@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=hch@lst.de \
--cc=qemu-devel@nongnu.org \
--cc=wein@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).