On Fri, Jun 13, 2008 at 12:31 PM, Pavel Roskin <[EMAIL PROTECTED]> wrote:
> Quoting Bean <[EMAIL PROTECTED]>:
>
>> After more thoughts, I think the current method still have problem.
>> grub_disk_read reads up to 8192 bytes at a time, which can be larger
>> than the block size.
>
> But we never ask grub_disk_read() to read across the block boundary in
> grub_fshelp_read().  The code takes care of it.  I assume grub_disk_read()
> would not write more than requested to the buffer.

grub_disk_read would attempt to read up to GRUB_DISK_CACHE_SIZE and
put the result in a cache, then copy the necessary part to output.

>
>> Unless all or none of the sectors in the same
>> block is mapped, we end up reading the wrong sector. So we need to do
>> the mapping inside grub_disk_read.
>
> But mapping is done for blocks, not for sectors.  grub_fshelp_map_block()
> clearly assumes that for every filesystem.

block size is fs related, but most are less than 8192 bytes.

-- 
Bean


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to