[U-Boot] [PATCH v5] fs: fat/ext4/sandbox - Deal with files greater than 2GB

Suriyan Ramasami suriyan.r at gmail.com
Thu Oct 30 05:43:06 CET 2014


Hello Simon,

On Wed, Oct 29, 2014 at 12:31 PM, Simon Glass <sjg at chromium.org> wrote:
> Hi Suriyan,
>
> On 29 October 2014 13:29, Suriyan Ramasami <suriyan.r at gmail.com> wrote:
>> Hello Simon,
>>
>> On Wed, Oct 29, 2014 at 12:20 PM, Simon Glass <sjg at chromium.org> wrote:
>>> Hi Suriyan,
>>>
>>> On 28 October 2014 17:00, Suriyan Ramasami <suriyan.r at gmail.com> wrote:
>>>> The commands fatls/ext4ls give negative values when dealing with files
>>>> greater than 2GB.
>>>> The commands fatsize/ext4size do not update the variable filesize for
>>>> these files.
>>>>
>>>> To deal with this, the fs functions have been modified to take an additional
>>>> parameter of type "* loff_t" which is then populated. The return value of the
>>>> fs functions are used only for error conditions.
>>>>
>>>> Signed-off-by: Suriyan Ramasami <suriyan.r at gmail.com>
>>>>
>>>> ---
>>>>
>>>> Changes in v5:
>>>> * Simon - update fs.h with comments for fs_read/fs_write/fs_size
>>>> * Simon - test/fs/fs-test.sh. Many changes as listed under
>>>> *   Add README file to document how to run it
>>>> *   Generate output in a sandbox environment
>>>> *   Add one line comments on shell variables used
>>>> *   Avoid camel case through out
>>>> *   Path to UBOOT is variable at top
>>>> *   Print PASSED or FAILED at end, and set return code, 0 if OK, 1 otherwise
>>>
>>> I am still seeing failures:
>>>
>>>
>>>
>>> ** Start sandbox/test/fs/fs-test.ext4.out
>>> pass - ls host 0:0 of 2.5GB.file
>>> pass - ls host 0:0 of 1MB.file
>>> pass - size host 0:0 1MB.file
>>> pass - size host 0:0 2.5GB.file
>>> pass - load host 0:0 0x01000008 1MB.file size
>>> pass - load host 0:0 0x01000008 1MB.file
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00200000 0x9C300000 size
>>> pass - write host 0:0 0x01000008 /1MB.file
>>> pass - load host 0:0 0x01000008 /1MB.file
>>> ** End sandbox/test/fs/fs-test.ext4.out
>>> Summary: PASS: 11 FAIL: 8
>>> Creating files in ext4 image if not already present.
>>> ** Start sandbox/test/fs/fs-test.fs.ext4.out
>>> pass - ls host 0:0 of 2.5GB.file
>>> pass - ls host 0:0 of 1MB.file
>>> pass - size host 0:0 1MB.file
>>> pass - size host 0:0 2.5GB.file
>>> pass - load host 0:0 0x01000008 1MB.file size
>>> pass - load host 0:0 0x01000008 1MB.file
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000 size
>>> FAIL - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00200000 0x9C300000 size
>>> pass - write host 0:0 0x01000008 /1MB.file
>>> pass - load host 0:0 0x01000008 /1MB.file
>>> ** End sandbox/test/fs/fs-test.fs.ext4.out
>>> Summary: PASS: 11 FAIL: 8
>>> --------------------------------------------
>>> Creating vfat image if not already present.
>>> Creating files in vfat image if not already present.
>>> ** Start sandbox/test/fs/fs-test.vfat.out
>>> pass - ls host 0:0 of 2.5GB.file
>>> pass - ls host 0:0 of 1MB.file
>>> pass - size host 0:0 1MB.file
>>> pass - size host 0:0 2.5GB.file
>>> pass - load host 0:0 0x01000008 1MB.file size
>>> pass - load host 0:0 0x01000008 1MB.file
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00200000 0x9C300000 size
>>> pass - write host 0:0 0x01000008 1MB.file
>>> pass - load host 0:0 0x01000008 1MB.file
>>> ** End sandbox/test/fs/fs-test.vfat.out
>>> Summary: PASS: 19 FAIL: 0
>>> Creating files in vfat image if not already present.
>>> ** Start sandbox/test/fs/fs-test.fs.vfat.out
>>> pass - ls host 0:0 of 2.5GB.file
>>> pass - ls host 0:0 of 1MB.file
>>> pass - size host 0:0 1MB.file
>>> pass - size host 0:0 2.5GB.file
>>> pass - load host 0:0 0x01000008 1MB.file size
>>> pass - load host 0:0 0x01000008 1MB.file
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x0
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x9C300000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF00000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x80000000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000 size
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00100000 0x7FF80000
>>> pass - load host 0:0 0x01000008 2.5GB.file 0x00200000 0x9C300000 size
>>> pass - write host 0:0 0x01000008 1MB.file
>>> pass - load host 0:0 0x01000008 1MB.file
>>> ** End sandbox/test/fs/fs-test.fs.vfat.out
>>> Summary: PASS: 19 FAIL: 0
>>> --------------------------------------------
>>> Total Summary: TOTAL PASS: 60 TOTAL FAIL: 16
>>> --------------------------------------------
>>> FAILED
>>>
>>>
>>> Any ideas on how to resolve this? Can you please send the output of a
>>> clear run, and the command you type?
>>>
>>
>> The output you got is currently the expected output. The failure cases
>> are when using EXT fs and doing a read with file offset !=0. I am
>> currently marking it as a FAIL (till the code to handle offsets in EXT
>> reads is implemented).
>
> Ah OK. No, failure is the correct output then. Will look further.

I just realized that the sandboxfs.c code needs to be changed for it
to work correctly. Currently with this patch, its broken. I shall also
add test cases for the sb hostfs commands to validate it in v6 of this
patch series.

Thanks
- Suriyan

>
> Regards,
> Simon


More information about the U-Boot mailing list