On 05/02/2012 12:27 PM, Christian Borntraeger wrote:
On 27/04/12 18:12, Paolo Bonzini wrote:
Il 26/04/2012 15:49, Christian Borntraeger ha scritto:
+#ifdef __linux__
+ } else if (bdrv_ioctl(bs, HDIO_GETGEO,&geo) == 0) {
+ *pcyls = geo.cylinders;
+ *pheads = geo.heads;
+ *psecs = geo.sectors;
+ bdrv_set_geometry_hint(bs, *pcyls, *pheads, *psecs);
+#endif
Perhaps you could instead move guess_disk_lchs to target-specific code,
adding add this code to the s390-specific implementation and under
#ifdef __s390__. For x86 it doesn't make much sense, because a disk's
geometry most likely will be a wrong guess for the geometry that a guest
(for guests that care at all about geometries).
Fine with me. We care about the geometry only for dasd devices, Even for
FCP-based
SCSI devices on s390 the geometry is not relevant. So moving that part to
s390 specific code might make sense if nobody else needs that.
Is that the case?
Alex, would that be ok for you?
As hinted in my other mail, I think the way to go would be to give a
hint to the geometry code that we're running on a DASD disk. Then we can
* Ask the host device if it can give us its geometry, if so, use it
* Guess depending on the logical block size
and everyone should be happy :). I would really like to have as little
#ifdef TARGET_S390 code in QEMU. And #ifdef __s390__ is even worse, as
it means we won't be able to execise that code path on other architectures.
Alex