grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Don't look for a partition map on a floppy


From: Vladimir 'φ-coder/phcoder' Serbinenko
Subject: Re: [PATCH] Don't look for a partition map on a floppy
Date: Fri, 15 Jun 2012 07:15:16 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.4) Gecko/20120510 Icedove/10.0.4

On 15.06.2012 07:10, Robert Mabee wrote:

> "echo *" takes about 12 seconds on my system (PC, BIOS, empty floppy drive)
> because grub_partition_iterate tries to enumerate the partitions on the
> floppy.
> "search --no-floppy" probably hits the same delay (not verified) since
> it has to
> generate the partition names before it can discard fd[0-9].
> 

search -s stops when it finds first matching device and floppies are
checked in the last place.

> I suggest skipping tiny devices (ie < 4 MB) rather than looking at the name
> so it won't affect various 100 MB super floppies that might appear as BIOS
> floppies and therefore get indistinguishable names in fd[0-9].  Arguably
> these drives should continue to support partition maps, at the expense of
> long timeouts if they don't handle missing media any better than plain-old
> floppy drives do.

Minix floppies are partitioned.

> 
> === modified file 'ChangeLog'
> --- old/ChangeLog    2012-06-09 17:58:38 +0000
> +++ new/ChangeLog    2012-06-15 04:34:50 +0000
> @@ -1,3 +1,15 @@
> +2012-06-15  Bob Mabee <address@hidden>
> +
> +    * kern/partition.c (grub_partition_is_plausible): New function to
> +    decide drive is too small (like floppy) to support partitioning.
> +    * (grub_partition_iterate): Use above so search and (*) avoid long
> +    timeouts trying to read partmap from a missing floppy.
> +
> 2012-06-09  Vladimir Serbinenko <address@hidden>
> 
>      * tests/grub_script_expansion.in: Explicitly tell grep that we handle
> 
> === modified file 'grub-core/kern/partition.c'
> --- old/grub-core/kern/partition.c    2012-02-08 19:19:44 +0000
> +++ new/grub-core/kern/partition.c    2012-06-14 05:30:02 +0000
> @@ -162,12 +162,23 @@
>    return part;
>  }
> 
> +/* Very unlikely to find a partmap on a tiny floppy, but looking for a
> +   map costs a long timeout if drive is empty, so skip device < 4 MB.
> +   (Allowing for a lower-overhead format on biggest media, 2.88 MB.) */
> +static int
> +grub_partition_is_plausible (struct grub_disk *disk)
> +{
> +  grub_uint64_t n_bytes = grub_disk_get_size (disk) <<
> GRUB_DISK_SECTOR_BITS;
> +  return n_bytes >= 4 << 20;
> +}
> +
>  int
>  grub_partition_iterate (struct grub_disk *disk,
>              int (*hook) (grub_disk_t disk,
>                       const grub_partition_t partition))
>  {
>    int ret = 0;
> +  if (!grub_partition_is_plausible (disk)) return ret;
> 
>    auto int part_iterate (grub_disk_t dsk, const grub_partition_t p);
> 
> 
> 
> 
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel
> 



-- 
Regards
Vladimir 'φ-coder/phcoder' Serbinenko

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]