Commit 1f69c2b0 authored by Markus Armbruster's avatar Markus Armbruster Committed by Kevin Wolf
Browse files

fdc: Drop broken code for user-defined floppy geometry



bdrv_get_floppy_geometry_hint() fails to store through its parameter
drive when bs has a geometry hint.  Makes fd_revalidate() assign
random crap to drv->drive.

Has been broken that way for ages.  Harmless, because:

* The only way to set a geometry hint is -drive if=none,cyls=...
  Since commit c219331e, probably unintentional.

* The only use of drv->drive is as argument to another
  bdrv_get_floppy_geometry_hint().  Which doesn't use it, since the
  geometry hint is still there.

Drop the broken code, ignore -drive parameter cyls, heads and secs for
floppies even with if=none, just like before commit c219331e.  Matches
-help, which explains cyls, heads, secs as "hard disk physical
geometry".

Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent b3ce604e
Loading
Loading
Loading
Loading
+28 −34
Original line number Diff line number Diff line
@@ -2337,11 +2337,6 @@ void bdrv_get_floppy_geometry_hint(BlockDriverState *bs, int *nb_heads,
    uint64_t nb_sectors, size;
    int i, first_match, match;

    bdrv_get_geometry_hint(bs, nb_heads, max_track, last_sect);
    if (*nb_heads != 0 && *max_track != 0 && *last_sect != 0) {
        /* User defined disk */
        *rate = FDRIVE_RATE_500K;
    } else {
    bdrv_get_geometry(bs, &nb_sectors);
    match = -1;
    first_match = -1;
@@ -2377,7 +2372,6 @@ void bdrv_get_floppy_geometry_hint(BlockDriverState *bs, int *nb_heads,
    *drive = parse->drive;
    *rate = parse->rate;
}
}

int bdrv_get_translation_hint(BlockDriverState *bs)
{
+0 −3
Original line number Diff line number Diff line
@@ -191,9 +191,6 @@ static void fd_revalidate(FDrive *drv)
                                      &last_sect, drv->drive, &drive, &rate);
        if (!bdrv_is_inserted(drv->bs)) {
            FLOPPY_DPRINTF("No disk in drive\n");
        } else if (nb_heads != 0 && max_track != 0 && last_sect != 0) {
            FLOPPY_DPRINTF("User defined disk (%d %d %d)\n",
                           nb_heads - 1, max_track, last_sect);
        } else {
            FLOPPY_DPRINTF("Floppy disk (%d h %d t %d s) %s\n", nb_heads,
                           max_track, last_sect, ro ? "ro" : "rw");