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