RFC: Devices for files and partitions
Heinrich Schuchardt
xypron.glpk at gmx.de
Fri Jul 9 07:27:45 CEST 2021
On 7/9/21 4:44 AM, AKASHI Takahiro wrote:
> On Tue, Jul 06, 2021 at 05:05:19PM -0600, Simon Glass wrote:
>> Hi,
>>
>> At present U-Boot avoids the concept of 'opening' a file. Being in a
>> bootloader environment, it is normally better to take the action
>> immediately and avoid any caching, for example, since there is no
>> background task to clean up afterwards.
>>
>> Having said that, the concept of a file is quite useful, for example
>> to write the output of a command to a file, or to open a file and read
>> it a line at a time.
>>
>> Another case has come to light in that EFI wants to access files using
>> a file handle. This currently uses parallel data structures and does
>> not map very well in U-Boot.
Not having a file descriptor slows down file operation because for each
individual access to a file we
* read the partition table
* look up the file in the directory structure
If you only use the 'load' command, this does not matter because there
is only a single read. But in the UEFI sub-system we use multiple API calls:
* open the volume
* open the file
* read the file size (for buffer allocation)
* read the file
The file descriptors in the UEFI sub-system only hold device, partition
ID, file path.
>>
>> Finally, partitions has a similar issue, where defining them as a
>> device can have benefits, e.g. to specify the device to use directly,
>> rather than with the 'type dev:part' approach, perhaps providing them
>> in the devicetree, etc.
>>
>> For the above reasons, I propose that we implement, as an option,
>> support for files and partitions within driver model.
With partitions as devices we will have to read the partition table only
once when the block device is probed. - For the UEFI sub-system we need
all block devices to be probed before calling the UEFI binary (e.g. GRUB).
>
> +1
>
> # Nobody has commented yet :)
>
> Regarding a "file (or file descriptor)", we have already implemented
> the same concept in efi_loader. So technically, it won't be a hard-work.
> Regarding "partitions as udevice," I have posted an experimental
> patch [1]. So it must also be feasible.
Our UEFI file descriptor is not helpful because it does not buffer the
relevant data to speed up file access. E.g. for the FAT driver a file
descriptor could buffer some information from the directory entry (file
attributes, dates) and some from the FAT table (assigned extends).
>
> One of my concerns is what benefit end users may enjoy.
Improved performance.
Best regards
Heinrich
>
> -Takahiro Akashi
>
> [1] https://lists.denx.de/pipermail/u-boot/2019-February/357937.html
> https://lists.denx.de/pipermail/u-boot/2019-February/357934.html
>
>> Regards,
>> Simon
More information about the U-Boot
mailing list