svn commit: r241053 - in head/sys/boot: common i386/libi386 uboot/lib userboot/userboot

John Baldwin jhb at freebsd.org
Mon Oct 1 12:58:16 UTC 2012


On Saturday, September 29, 2012 12:47:57 pm Andrey V. Elsukov wrote:
> Author: ae
> Date: Sat Sep 29 16:47:56 2012
> New Revision: 241053
> URL: http://svn.freebsd.org/changeset/base/241053
> 
> Log:
>   Almost each time when loader opens a file, this leads to calling
>   disk_open(). Very often this is called several times for one file.
>   This leads to reading partition table metadata for each call. To
>   reduce the number of disk I/O we have a simple block cache, but it
>   is very dumb and more than half of I/O operations related to reading
>   metadata, misses this cache.
>   
>   Introduce new cache layer to resolve this problem. It is independent
>   and doesn't need initialization like bcache, and will work by default
>   for all loaders which use the new DISK API. A successful disk_open()
>   call to each new disk or partition produces new entry in the cache.
>   Even more, when disk was already open, now opening of any nested
>   partitions does not require reading top level partition table.
>   So, if without this cache, partition table metadata was read around
>   20-50 times during boot, now it reads only once. This affects the booting
>   from GPT and MBR from the UFS.

...and removes support for removable media like floppies.  That may be the
proper thing to do at this stage (though I think that affects PC98 still
perhaps?)  However, removing suppot for removable media should be an
intentional decision, not a side effect.  The bcache was simplistic
precisely to support floppies.

-- 
John Baldwin


More information about the svn-src-head mailing list