[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH for-2.6 v2 03/10] fdc: add disk field
From: |
John Snow |
Subject: |
[Qemu-block] [PATCH for-2.6 v2 03/10] fdc: add disk field |
Date: |
Mon, 7 Dec 2015 18:34:28 -0500 |
This allows us to distinguish between the current disk type and the
current drive type. The drive is what's reported to CMOS, the disk is
whatever the pick_geometry function suspects has been inserted.
The drive field maintains the exact same meaning as it did previously,
however pick_geometry/fd_revalidate will be refactored to *never* update
the drive field, considering it frozen in-place during an earlier
initialization call.
Before this patch, pick_geometry/fd_revalidate could only change the
drive field when it was FDRIVE_DRV_NONE, which indicated that we had
not yet reported our drive type to CMOS. After we "pick one," even
though pick_geometry/fd_revalidate re-set drv->drive, it should always
be the same as the value going into these calls, so it is effectively
already static.
As of this patch, disk and drive will always be the same, but that may
not be true by the end of this series.
Disk does not need to be migrated because it is not user-visible state
nor is it currently used for any calculations. It is purely informative,
and will be rebuilt automatically via fd_revalidate on the new host.
Signed-off-by: John Snow <address@hidden>
---
hw/block/fdc.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/block/fdc.c b/hw/block/fdc.c
index 09bb63d..13fef23 100644
--- a/hw/block/fdc.c
+++ b/hw/block/fdc.c
@@ -133,7 +133,8 @@ typedef struct FDrive {
FDCtrl *fdctrl;
BlockBackend *blk;
/* Drive status */
- FDriveType drive;
+ FDriveType drive; /* CMOS drive type */
+ FDriveType disk; /* Current disk type */
uint8_t perpendicular; /* 2.88 MB access mode */
/* Position */
uint8_t head;
@@ -157,6 +158,7 @@ static void fd_init(FDrive *drv)
drv->drive = FDRIVE_DRV_NONE;
drv->perpendicular = 0;
/* Disk */
+ drv->disk = FDRIVE_DRV_NONE;
drv->last_sect = 0;
drv->max_track = 0;
}
@@ -286,6 +288,7 @@ static void pick_geometry(FDrive *drv)
drv->max_track = parse->max_track;
drv->last_sect = parse->last_sect;
drv->drive = parse->drive;
+ drv->disk = drv->media_inserted ? parse->drive : FDRIVE_DRV_NONE;
drv->media_rate = parse->rate;
if (drv->media_inserted) {
--
2.4.3
- [Qemu-block] [PATCH for-2.6 v2 00/10] fdc: fix 2.88mb floppy diskette support, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 01/10] fdc: move pick_geometry, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 05/10] fdc: do not call revalidate on eject, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 02/10] fdc: refactor pick_geometry, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 03/10] fdc: add disk field,
John Snow <=
- [Qemu-block] [PATCH for-2.6 v2 06/10] fdc: implement new drive type property, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 07/10] fdc: add physical disk sizes, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 09/10] qtest/fdc: Support for 2.88MB drives, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 04/10] fdc: add default drive type option, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 08/10] fdc: rework pick_geometry, John Snow, 2015/12/07
- [Qemu-block] [PATCH for-2.6 v2 10/10] fdc: change auto fallback drive to 288, John Snow, 2015/12/07