Hello,
we have a problem with FAT filesystem.
We use FAT on a strata flash with long file names.(WinCe4.2 SH4)
That will work but sometimes FATFS reports BogusDirectory. (see below)
The highlevel calls CreateFile WriteFile GetLast Error does not report it up
to the caller thread.
And so the overlayed data management will be confused.
Also the thread that call ScanDisk on such a Volume hangs.

So what went wrong on my system?
What' to do to prevent such a error?
Is such an error detectable?


Thanks in advance.

Johannes

4294927076 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
+CreateFile:\FLASH2\000\Test.dat
4294927104 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
directory!
4294927105 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c:
FATFS!FAT_GetFileAttributesW(\000\Test.dat) returned 0xffffffff (13)
4294927106 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
directory!
4294927111 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
4294927125 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: -CreateFile: OK
4294927140 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
+WriteFile:\FLASH2\000\Test.dat
4294927199 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
4294927250 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: WriteFile: ok 260 Bytes
Written

663273 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
+CreateFile:\FLASH2\000\Test.dat
663318 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
directory!
663319 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c:
FATFS!FAT_GetFileAttributesW(\000\Test.dat) returned 0xffffffff (13)
663320 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
directory!
663325 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
663369 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: -CreateFile: OK
663414 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
+WriteFile:\FLASH2\000\Test.dat
663465 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
663515 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: WriteFile: ok 260 Bytes
Written

669033 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
+CreateFile:\FLASH2\000\Test123456789.dat
669078 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
directory!
669079 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c:
FATFS!FAT_GetFileAttributesW(\000\Test123456789.dat) returned 0xffffffff
(13)
669080 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
directory!
669085 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
669129 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: -CreateFile: OK
669173 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
+WriteFile:\FLASH2\000\Test123456789.dat
669225 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
669274 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: WriteFile: ok 260 Bytes
Written

Re: FATFS don't handle error by Sachin

Sachin
Thu Apr 21 18:20:43 CDT 2005

Hi Johannes,

I have not seen that before. Can you provide more details on how you
repro'd this. Also, are you confident that there aren't any issues with
your strata FMD (assuming you are using our flash driver) that might cause
data corruption.

Sachin

--
To reply directly, remove "online" from my email address.
This posting is provided "AS IS" with no warranties, and confers no rights.


"Johannes Heusel" <developer no spam at narda-sts dot de> wrote in message
news:1114071163.53187@narda-relay.narda-sts.de...
> Hello,
> we have a problem with FAT filesystem.
> We use FAT on a strata flash with long file names.(WinCe4.2 SH4)
> That will work but sometimes FATFS reports BogusDirectory. (see below)
> The highlevel calls CreateFile WriteFile GetLast Error does not report it
> up to the caller thread.
> And so the overlayed data management will be confused.
> Also the thread that call ScanDisk on such a Volume hangs.
>
> So what went wrong on my system?
> What' to do to prevent such a error?
> Is such an error detectable?
>
>
> Thanks in advance.
>
> Johannes
>
> 4294927076 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
> +CreateFile:\FLASH2\000\Test.dat
> 4294927104 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
> directory!
> 4294927105 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c:
> FATFS!FAT_GetFileAttributesW(\000\Test.dat) returned 0xffffffff (13)
> 4294927106 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
> directory!
> 4294927111 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
> 4294927125 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: -CreateFile: OK
> 4294927140 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
> +WriteFile:\FLASH2\000\Test.dat
> 4294927199 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
> 4294927250 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: WriteFile: ok 260 Bytes
> Written
>
> 663273 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
> +CreateFile:\FLASH2\000\Test.dat
> 663318 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
> directory!
> 663319 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c:
> FATFS!FAT_GetFileAttributesW(\000\Test.dat) returned 0xffffffff (13)
> 663320 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
> directory!
> 663325 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
> 663369 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: -CreateFile: OK
> 663414 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
> +WriteFile:\FLASH2\000\Test.dat
> 663465 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
> 663515 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: WriteFile: ok 260 Bytes
> Written
>
> 669033 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
> +CreateFile:\FLASH2\000\Test123456789.dat
> 669078 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
> directory!
> 669079 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c:
> FATFS!FAT_GetFileAttributesW(\000\Test123456789.dat) returned 0xffffffff
> (13)
> 669080 PID:8dfe351a TID:ade7cc3e 0x8de7ca0c: FATFS!FindNext: bogus
> directory!
> 669085 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
> 669129 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: -CreateFile: OK
> 669173 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c:
> +WriteFile:\FLASH2\000\Test123456789.dat
> 669225 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: 0=GetLastError()
> 669274 PID:ade7cc62 TID:ade7cc3e 0x8de7ca0c: WriteFile: ok 260 Bytes
> Written
>
>