virtio-blk: Fix geometry sector calculation
authorChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 24 May 2012 11:22:55 +0000 (13:22 +0200)
committerKevin Wolf <kwolf@redhat.com>
Wed, 30 May 2012 12:51:04 +0000 (14:51 +0200)
commit136be99e6e2130d3cd960b6b7d0ca86b6f011e5f
tree1d90cb1d778a0c361aed0051429c165f48e3318f
parentc2d76497b6eafcaedc806e07804e7bed55a98a0b
virtio-blk: Fix geometry sector calculation

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.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
CC: Christoph Hellwig <hch@lst.de>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
hw/virtio-blk.c