Hi Reto,

The multiblock is a disable so if CONFIG_MMCSD_MULTIBLOCK_DISABLE=y is not
in the config it is using multiblock....

However, that is only for the SDMMC driver. What I was thinking was [1],[2]
for the SDMMC driver not the SPI one.

[1] https://github.com/apache/incubator-nuttx/pull/3669
[2] https://github.com/PX4/PX4-Autopilot/issues/17442#issuecomment-835303021


David

-----Original Message-----
From: Reto Gähwiler [mailto:gret.hexa...@gmail.com]
Sent: Wednesday, May 19, 2021 8:21 AM
To: dev@nuttx.apache.org
Subject: Re: RE: RE: Nuttx FAT32 issues - corrupted files, wrongly stated
free clusters by statfs

Hey again,

About the requested configuration of the SD-Card, here we go:
  CONFIG_MMCSD=y
  CONFIG_MMCSD_SPI=y
  CONFIG_MMCSD_SPICLOCK=25000000

About the multiblock, I don't think we are using that. Let me know how I
could recognise it if not in the config.

Thanks, Reto

On 2021/05/19 12:13:35, David Sidrane <david.sidr...@nscdg.com> wrote:
> Hi Reto,
>
> What is the clock rate to the card and is multiblock enabled?
>
> David
>
> -----Original Message-----
> From: Reto Gähwiler [mailto:gret.hexa...@gmail.com]
> Sent: Wednesday, May 19, 2021 5:08 AM
> To: dev@nuttx.apache.org
> Subject: Re: RE: Nuttx FAT32 issues - corrupted files, wrongly stated free
> clusters by statfs
>
> Hi David,
>
> It is running on an STM32h743zi version V or Y. The SD-card in use is a
> SwissBit S-45u.
>
> Reto
>
> On 2021/05/19 11:11:22, David Sidrane <david.sidr...@nscdg.com> wrote:
> > hi Reto,
> >
> > What SoC is this on? What type of card are you using?
> >
> > David
> >
> > -----Original Message-----
> > From: Reto Gähwiler [mailto:gret.hexa...@gmail.com]
> > Sent: Wednesday, May 19, 2021 3:22 AM
> > To: dev@nuttx.apache.org
> > Subject: Re: Nuttx FAT32 issues - corrupted files, wrongly stated free
> > clusters by statfs
> >
> > Hello Jukka,
> >
> > Thanks for your quick reaction. I applied your PR to our "outdated"
> > nuttx.
> > Unfortunately, it did not show any impact on the statfs behaviour if the
> > card is corrupted. Though, meanwhile I do have hands on two images.
> >
> > #1 the mentioned one. Although, the files/dirs are all deleted. But
> > still
> > same behvaiour and a chkdsk error. statfs reports 703 MB free while the
> > sd-card was deleted!
> >
> > #2 Having the file structure in place and contains plenty of logfiles.
> > Many
> > of them with the mentioned corruptions. The card is filled to 100%. But
> > here
> > the behaviour is slightly different. Checking the FSINFO block and then
> > removing some files under Windows doesn't impact the FSINFO section. But
> > once inserted to the device statfs reports the correct size and updates
> > the
> > FSINFO section. However, the card also shows corruptions if chkdsk is
> > applied to it.
> > This behaviour is identical before and after applying your PR.
> >
> > Brgds, Reto
> >
> > On 2021/05/18 19:55:06, Jukka Laitinen <jukka.laiti...@iki.fi> wrote:
> > > Hi,
> > >
> > > There seems to be a bug in sector calculation which may trigger with
> > > e.g. corrupted fs. I just made a PR for this,
> > >
> > > https://github.com/apache/incubator-nuttx/pull/3740
> > >
> > > But I really don't know if this is related to your issues, this is
> > > just
> > > something that suddenly popped up elsewhere.
> > >
> > > -Jukka
> > >
> > >
> > > On 18.5.2021 16.10, Reto Gähwiler wrote:
> > > > Dear All,
> > > >
> > > > First of all, in case a similar thread pops-up authored by myself,
> > > > please
> > > > ignore.
> > > >
> > > > Recently we discovered some issues with the FAT32 partition on the
> > > > SD-Card
> > > > used in our device running on nuttx. There are actually a bunch of
> > > > issues
> > > > we are strugle to understand related to the filesystem.
> > > > The issue discovered recently is, that a statfs call won't return
> > > > the
> > > > true
> > > > number of free clusters. It rather returns what ever is in the FS
> > > > INFO
> > > > section of the FAT32 partition. Inserting such a "corrupted" card
> > > > into
> > > > an
> > > > SD-Card reader and mounting it to Windows shows following:
> > > >
> > > > #1 Windows file explorer reports the correct free space.
> > > > #2 Comparing the free space in file explorer and looging at FS INFO
> > > > section
> > > > with "Active - Disk Editor" doesn't line up. Windows wouldn't write
> > > > any
> > > > longer the FS INFO section on that card. Even if all the files/dires
> > > > are
> > > > wiped from the card.
> > > > #3 Whenever files are added / removed under nuttx the FS INFO
> > > > section
> > > > would
> > > > be updated by nuttx, but to the wrong number since the base is
> > > > wrong.
> > > > #4 Mounting the card to linux and properly unmount it might actually
> > > > fix
> > > > the issue. But not always!
> > > > #5 Quick format the card resolved the issue too. Windows would once
> > > > again
> > > > write the FS INFO section and nuttx would shows the correct free
> > > > space.
> > > > #5 Running a "chkdsk /f" under windows on that broken SD-Card fixes
> > > > the
> > > > issue too. Reporting a broken file in a root folder on that card.
> > > >
> > > > We indeed had issues with corrupted files in the past. Usually in
> > > > the
> > > > logging directory, which is accessed most. How they corrupt we do
> > > > not
> > > > know.
> > > > The corruption is recognised in the following ways:
> > > >
> > > > #A cryptic and too long file names, we only make use of short file
> > > > names
> > > > (8.3)
> > > > #B files whcih became folders
> > > > #C sizes which are not possible
> > > > #D combinations of the above
> > > >
> > > > Our application supervises the SD-Card with statfs and removes files
> > > > once
> > > > we hit a quota of 0.85. Therefore, the card is not filling up.
> > > > However,
> > > > the
> > > > most recent recognition of this behvaiour was due to an application
> > > > bug
> > > > which allowed the card to fill up under some circumstances.
> > > > Playing around with a quickformated SD-Card, filled up with data and
> > > > trying
> > > > to retrigger the issue revealed that I never get the ENOSPC but only
> > > > EIO
> > > > once the card is full! But never managed to get the statfs issue.
> > > > For the logging we use the fstream family (fopen, fwrite, fread,
> > > > fflush,
> > > > fsync) commands. For config files and other things also the low
> > > > level
> > > > read/write are used.
> > > >
> > > > One more thing, among all the logging files we once in a while have
> > > > corrupted file content. Typically that is a skipped byte or doubled
> > > > byte
> > > > (we use protobuf and can see that encoding the binary). This seems
> > > > to
> > > > happen during reading but also writing the file.
> > > >
> > > > At the moment we didn't investigate the fat driver of nuttx but
> > > > rather
> > > > tried to analyse the problem. And now we have a bunch of question
> > > > marks.
> > > >
> > > > #1 Has anyone recongised similar issues?
> > > > #2 Does anyone know a tool which can be used in nuttx equivalent to
> > > > chkdsk
> > > > under windows? Or do quick format?
> > > > #3 Why is there no ENOSPC but EIO once the card is full?
> > > > #4 What triggers the corrupted files? How robust is the nuttx FAT32
> > > > considering stackdumps and powerlosses?
> > > >
> > > > For the purpose of investigation, I have an image of the SD-Card
> > > > when
> > > > it
> > > > was in the state of reporting wrong sizes in nuttx.
> > > >
> > > > Looking forward to your answers and ideas. Appreciate your help,
> > > >
> > > > Reto
> > > >
> > >
> >
>

Reply via email to