No subject


Fri Oct 22 17:57:35 EDT 2010


seems to hang the system in a live lock.

Situation:
=A0* immediately after boot an executable is started which calls mlockall()
   to commit all pages into RAM (this is a real time application)
=A0* the executable is read from a JFFS2 file system on NOR flash
=A0* mlockall() never terminates
=A0* console output is 'Data CRC f7e8ddd1 !=3D calculated CRC 47cee9c9
   for node at 00edc5cc' in an endless loop

My investigations are so far:
=A0* during boot some log output is written into a log file on the JFFS2
   that manipulates the file system --> no read only mount possible
=A0* the system is switched off at arbitrary times without clean unmount
   --> this clearly may leave behind blocks with data CRC errors
=A0* due to some reorganization (garbage collector?) my executable file
   data is moved across the flash
=A0* 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
=A0* during next boot mlockall() tries to read in all pages from the
   executable and fails on this point of CRC error

My questions:
=A0* is this a known behavior?
=A0* why is the fragment which has the CRC error relevant although
   the old and correct fragment is still in place?
=A0* 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