[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v3 02/11] fdc: refactor pick_geomet
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v3 02/11] fdc: refactor pick_geometry |
Date: |
Thu, 17 Dec 2015 20:09:08 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
John Snow <address@hidden> writes:
> On 12/17/2015 02:53 AM, Markus Armbruster wrote:
>> John Snow <address@hidden> writes:
>>
>>> Modify this function to operate directly on FDrive objects instead of
>>> unpacking and passing all of those parameters manually.
>>>
>>> Helps reduce complexity in each caller, and reduces the number of args.
>>
>> For now, there's just one.
>>
>> Diffstat suggests it's an overall simplification.
>>
>>> Signed-off-by: John Snow <address@hidden>
>>> ---
>>> hw/block/fdc.c | 54 +++++++++++++++++++++++-------------------------------
>>> 1 file changed, 23 insertions(+), 31 deletions(-)
>>>
>>> diff --git a/hw/block/fdc.c b/hw/block/fdc.c
>>> index 246b631..09bb63d 100644
>>> --- a/hw/block/fdc.c
>>> +++ b/hw/block/fdc.c
>>> @@ -241,11 +241,9 @@ static void fd_recalibrate(FDrive *drv)
>>> fd_seek(drv, 0, 0, 1, 1);
>>> }
>>>
>>> -static void pick_geometry(BlockBackend *blk, int *nb_heads,
>>> - int *max_track, int *last_sect,
>>> - FDriveType drive_in, FDriveType *drive,
>>> - FDriveRate *rate)
>>> +static void pick_geometry(FDrive *drv)
>>> {
>>> + BlockBackend *blk = drv->blk;
>>> const FDFormat *parse;
>>> uint64_t nb_sectors, size;
>>> int i, first_match, match;
>>> @@ -258,8 +256,8 @@ static void pick_geometry(BlockBackend *blk, int
>>> *nb_heads,
>>> if (parse->drive == FDRIVE_DRV_NONE) {
>>> break;
>>> }
>>> - if (drive_in == parse->drive ||
>>> - drive_in == FDRIVE_DRV_NONE) {
>>> + if (drv->drive == parse->drive ||
>>> + drv->drive == FDRIVE_DRV_NONE) {
>>> size = (parse->max_head + 1) * parse->max_track *
>>> parse->last_sect;
>>> if (nb_sectors == size) {
>>> @@ -279,41 +277,35 @@ static void pick_geometry(BlockBackend *blk, int
>>> *nb_heads,
>>> }
>>> parse = &fd_formats[match];
>>> }
>>> - *nb_heads = parse->max_head + 1;
>>> - *max_track = parse->max_track;
>>> - *last_sect = parse->last_sect;
>>> - *drive = parse->drive;
>>> - *rate = parse->rate;
>>> +
>>> + if (parse->max_head == 0) {
>>> + drv->flags &= ~FDISK_DBL_SIDES;
>>> + } else {
>>> + drv->flags |= FDISK_DBL_SIDES;
>>> + }
>>> + drv->max_track = parse->max_track;
>>> + drv->last_sect = parse->last_sect;
>>> + drv->drive = parse->drive;
>>> + drv->media_rate = parse->rate;
>>> +
>>> + if (drv->media_inserted) {
>>> + FLOPPY_DPRINTF("Floppy disk (%d h %d t %d s) %s\n",
>>> + parse->max_head + 1,
>>> + drv->max_track, drv->last_sect,
>>> + drv->ro ? "ro" : "rw");
>>> + }
>>
>> One half of the debug print moved from...
>>
>>> }
>>>
>>> /* Revalidate a disk drive after a disk change */
>>> static void fd_revalidate(FDrive *drv)
>>> {
>>> - int nb_heads, max_track, last_sect, ro;
>>> - FDriveType drive;
>>> - FDriveRate rate;
>>> -
>>> FLOPPY_DPRINTF("revalidate\n");
>>> if (drv->blk != NULL) {
>>> - ro = blk_is_read_only(drv->blk);
>>> - pick_geometry(drv->blk, &nb_heads, &max_track,
>>> - &last_sect, drv->drive, &drive, &rate);
>>> + drv->ro = blk_is_read_only(drv->blk);
>>> + pick_geometry(drv);
>>> if (!drv->media_inserted) {
>>> FLOPPY_DPRINTF("No disk in drive\n");
>>> - } else {
>>> - FLOPPY_DPRINTF("Floppy disk (%d h %d t %d s) %s\n", nb_heads,
>>> - max_track, last_sect, ro ? "ro" : "rw");
>>> }
>>
>> ... here. Recommend to move both or none. If you add more callers,
>> both might make more sense.
>>
>
> Later in the series, pick_geometry cannot be called if there's no
> diskette, so the "no disk!" message stayed outside.
>
> ... I'll just wiggle this printf back into fd_revalidate, so it looks sane.
>
> I encourage you to take a few shots of something stiff and press further
> into the series. It doesn't get truly wild until patch 9. If you
> eyeballed everything except patch 9, I'd be willing to just do a very
> early dev window pull and call it a day on this.
Just one day left before I vanish for a long Christas break. I'll see
what I can do.
[Qemu-block] [PATCH v3 01/11] fdc: move pick_geometry, John Snow, 2015/12/16
[Qemu-block] [PATCH v3 04/11] fdc: add default drive type option, John Snow, 2015/12/16