AnsweredAssumed Answered

MFS LOST_CHAIN problem and possible errors on MQX patches

Question asked by Luiz Fernando Schrickte on Jul 20, 2016
Latest reply on Aug 15, 2016 by Luiz Fernando Schrickte



I'm looking for the reason of many LOST_CHAIN errors happening in a FTPSRV application and, while looking, spotted 2 inconsistencies in the MQX patches that got my attention:



1. MQX-5639

The PDF says that the line:

     else if (sp_ptr->ATTRIBUTE & MFS_SEARCH_SUBDIR)


should be change to:

else if ((sp_ptr->ATTRIBUTE & 0x3F) == MFS_SEARCH_SUBDIR)


but this is NOT what the patch does!


The patch changes the order of condition checking and also the following line:




     else if ((sp_ptr->ATTRIBUTE & 0x3F) == MFS_SEARCH_NORMAL)


So - which line should be changed? The one containing SEARCH_SUBDIR or the one containing SEARCH_NORMAL, or both? Which one is right - the PDF, the patch, or neither of them? As the PDF mentions the MFS_SEARCH_SUBDIR in the issue explanation, I suspect the patch may not be correct!


2. MQX-5537

In many places this patch changes the:





line of code to outside of the nonzero checking condition due to a +1/-1 error - however there is a place (that looks important) in which it doesn't modify: function MFS_lfn_chain_extract in file mfs_lfn.c


Was that meant to be in this way or did you miss this change?



I'm having some trouble with MFS - some files are not being found while I'm performing a FTP upload through RTCS app ftpsrv. I'm debugging it and the error returned by MQX when trying to fopen the file is 0x30F0 - which is, according to mqx.h, FS_LOST_CHAIN - and this is the reason I'm looking for help. I've also experienced some other weird behavior on MFS which I couldn't explain and may be related to this, but I couldn't get more clues (the errors happened on production boards). I've already tried correcting the lfn_chain_extract function already according to MQX-5537 comments above, but it didn't help

UPDATE: I've just figured out what the problem probably is about - I just can't create directories whose filename has more than 8 characters! To test it, I've just executed the following command on my httpd dir (my shell is a regular MQX Shell, as in example supplied in MQX files):


shell> pwd
shell> mkdir a2345678
shell> cd a2345678
shell> write a.txt 1
shell> type a.txt
shell> del a.txt
shell> cd ..
shell> rmdir a2345678
shell> mkdir a23456789
shell> cd a23456789
shell> write a.txt 1
Error, unable to open file a.txt
shell> dir
.                   0 07-20-2016 18:35:48     D  .
..                  0 07-20-2016 18:35:48     D  ..


Before you ask, I've already applied the MQX fixes a long time ago, including theextra sector_count-- not included in the patch.


Any help is appreciated. I assume I'm having trust issues with MFS due to these sporadic problems - do anyone have any suggestion on changing it by other FAT implementation (without spending one month on it)?


Thank you very much!



Luiz Fernando