From mboxrd@z Thu Jan 1 00:00:00 1970 From: AKASHI Takahiro Date: Tue, 10 Sep 2019 09:53:47 +0900 Subject: [U-Boot] [RFC] FAT errors In-Reply-To: <4994e575-1d6f-318c-baf4-550e2eb9afd6@gmx.de> References: <5a809564-fa8e-95ca-8997-5525ac9f9159@gmx.de> <20190905083751.GD4398@linaro.org> <4994e575-1d6f-318c-baf4-550e2eb9afd6@gmx.de> Message-ID: <20190910005345.GL4398@linaro.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Sun, Sep 08, 2019 at 01:49:30AM +0200, Heinrich Schuchardt wrote: > On 9/5/19 10:37 AM, AKASHI Takahiro wrote: > >On Thu, Sep 05, 2019 at 08:43:43AM +0200, Heinrich Schuchardt wrote: > >>Currently we do no have a maintainer for the FAT file system. Takahiro > >>has done a great job fixing some of the most prominent deficiencies. But > >>still the driver is not in good shape: > >> > >>I once again ran upon errors in FAT when executing the UEFI SCT. > >> > >>Here is some of the output of > >>dosfsck -w -r -l -a -v -t > >>The full output has hundreds of errors recorded. > > > >While I don't deny shifting to other code base for FAT, > >I'm willing to debug the current code if you send me > >binary data of corrupted file system. > >The first 1MB or so, which will contains directory meta data, > >would be good enough as I said before. > > > >I think that most errors stem from wrong long-file-name handling. > > > >-Takahiro Akashi > > The SCT test that really shows the trouble is for > EFI_FILE_PROTOCOL.GetInfo(). On FAT16 it hits the 512 files per > directory limit. Please note that, on FAT16, the root directory can have a fixed number of blocks and that there is definitely an upper limit of maximum number of entries allowed under it. > Both on FAT16 and FAT32 it crashes when saving the log. Did you see any message, or the file system got corrupted silently? -Takahiro Akashi > Observed on qemu_arm64_defconfig with edk2-test HEAD. > > Best regards > > Heinrich > > > > > > >>Orphaned long file name part "Sct.log" > >> Auto-deleting. > >>Orphaned long file name part "Sct.log" > >> Auto-deleting. > >>/Log/RuntimeServicesTest/VariableServicesTest0/QueryVariableInfo_Conf_0_0_61758774-91A3-47DD-BDBD-B81094A5F62D.log > >> Duplicate directory entry. > >> First Size 4712 bytes, date 01:00:00 Dec 31 1979 > >> Second Size 5086 bytes, date 01:00:00 Dec 31 1979 > >> Auto-renaming second. > >> Renamed to FSCK0000.008 > >> > >>BareBox is using a (somewhat outdated) copy of this library with a > >>little bit of wrapper code: > >> > >>FatFs - Generic FAT Filesystem Module > >>http://elm-chan.org/fsw/ff/00index_e.html > >>http://elm-chan.org/fsw/ff/arc/ff13c.zip > >> > >>The same library is also used for Arduinos: > >>https://github.com/stm32duino/FatFs > >> > >>Shouldn't we try just the same? > >> > >>Best regards > >> > >>Heinrich > > >