qemu/hw/block
John Snow f31937aa8c fdc: rework pick_geometry
This one is the crazy one.

fd_revalidate currently uses pick_geometry to tell if the diskette
geometry has changed upon an eject/insert event, but it won't allow us
to insert a 1.44MB diskette into a 2.88MB drive. This is inflexible.

The new algorithm applies a new heuristic to guessing disk geometries
that allows us to switch diskette types as long as the physical size
matches before falling back to the old heuristic.

The old one is roughly:
 - If the size (sectors) and type matches, choose it.
 - Fall back to the first geometry that matched our type.

The new one is:
 - If the size (sectors) and type matches, choose it.
 - If the size (sectors) and physical size match, choose it.
 - Fall back to the first geometry that matched our type.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1453495865-9649-11-git-send-email-jsnow@redhat.com
2016-01-25 14:35:24 -05:00
..
dataplane block: Clean up includes 2016-01-20 13:36:23 +01:00
block.c block: Clean up includes 2016-01-20 13:36:23 +01:00
cdrom.c block: Clean up includes 2016-01-20 13:36:23 +01:00
ecc.c block: Clean up includes 2016-01-20 13:36:23 +01:00
fdc.c fdc: rework pick_geometry 2016-01-25 14:35:24 -05:00
hd-geometry.c block: Clean up includes 2016-01-20 13:36:23 +01:00
m25p80.c ssi: Move ssi.h into a separate directory 2016-01-21 14:15:03 +00:00
Makefile.objs block: Always compile virtio-blk dataplane 2014-09-22 11:39:51 +01:00
nand.c hw: Inline the qdev_prop_set_drive_nofail() wrapper 2016-01-13 11:58:58 +01:00
nvme.c block: Clean up includes 2016-01-20 13:36:23 +01:00
nvme.h nvme: implement the Flush command 2015-07-14 15:55:19 +02:00
onenand.c block: Clean up includes 2016-01-20 13:36:23 +01:00
pflash_cfi01.c block: Clean up includes 2016-01-20 13:36:23 +01:00
pflash_cfi02.c block: Clean up includes 2016-01-20 13:36:23 +01:00
tc58128.c block: Clean up includes 2016-01-20 13:36:23 +01:00
virtio-blk.c block: Clean up includes 2016-01-20 13:36:23 +01:00
xen_blkif.h xen/blkif: Avoid double access to src->nr_segments 2015-12-18 15:09:58 +00:00
xen_disk.c block: Clean up includes 2016-01-20 13:36:23 +01:00