Ekaterina Tumanova <[email protected]> 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.
[...]
> 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;
Missing:
translation = ...
I'm not sure what value to assign.
> + goto done;
> + }
>
> if (guess_disk_lchs(blk, &cylinders, &heads, &secs) < 0) {
> /* no LCHS guess: use a standard physical disk geometry */
[...]