read_pnode: error -22 reading pnode at XX:YYYYY

Rick Johnson rick22 at wi.rr.com
Fri May 27 16:26:59 EDT 2011


I had some other observations that I might as well note too.

We had added code to constantly check the value of pnode->num versus the 
  num returned from calc_pnode_num_from_parent().  We noticed errors 
mainly in two places: ubifs_pack_pnode() and ubifs_get_pnode().

The ubifs_get_pnode() was more interesting though.  We only got a 
corrupted 'num' value when the function returned the pnode from memory 
and not from flash.  In other words, when ubifs_get_pnode() followed 
this path:

branch = &parent->nbranch[iip];
pnode = branch->pnode;
if (pnode)
   return pnode;

So it seems like 'num' is getting corrupted or changed while the pnode 
is in memory.  If it being corrupted in memory, it's strange that 'num' 
is so consistently targeted and that the corruption is not more random.

Another thing we noticed was that the pnode's with the the corrupted 
'num' had lprops with LEB numbers between 7600 and 8010 (which is near 
the max of 8062 on our flash).  Maybe that's just a coincidence, but I 
might as well note it.

Thanks for any advice you might have!
Rick





More information about the linux-mtd mailing list