No subject
Fri Oct 22 17:57:35 EDT 2010
seems to hang the system in a live lock.
Situation:
* immediately after boot an executable is started which calls mlockall()
to commit all pages into RAM (this is a real time application)
* the executable is read from a JFFS2 file system on NOR flash
* mlockall() never terminates
* console output is 'Data CRC f7e8ddd1 != calculated CRC 47cee9c9
for node at 00edc5cc' in an endless loop
My investigations are so far:
* during boot some log output is written into a log file on the JFFS2
that manipulates the file system --> no read only mount possible
* the system is switched off at arbitrary times without clean unmount
--> this clearly may leave behind blocks with data CRC errors
* due to some reorganization (garbage collector?) my executable file
data is moved across the flash
* if such a move takes place exactly during power off two data frags
carrying a portion of my executable file data are left behind, one "old"
and correct frag and one "new" and incomplete frag with CRC error
* during next boot mlockall() tries to read in all pages from the
executable and fails on this point of CRC error
My questions:
* is this a known behavior?
* why is the fragment which has the CRC error relevant although
the old and correct fragment is still in place?
* are there relevant fixes in newer kernel versions which I should
use? (I cannot update the kernel, but I may apply a patch)
Thanks a lot in advance!
Thommy
More information about the linux-mtd
mailing list