[Yaffs] Lost blocks

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: Mikhail Ryleev
Date:  
To: yaffs
Subject: [Yaffs] Lost blocks
I see exactly the same problem, and I think the bug is in
yaffs_ScanBackwards routine.

The solution that I have at this point is to delete the following lines in
yaffs_ScanBackwards routine:

.......
     yaffs_AddObjectToDirectory(parent, in);


#if 0
     if ((parent == dev->deletedDir ||
          parent == dev->unlinkedDir)) {
          /* If it is unlinked at start up then it wants deleting */
      in->deleted = 1;
     }
#endif


     if (oh->isShrink) {
      /* Mark the block as having a shrinkHeader */
      bi->hasShrinkHeader = 1;
     }
.......


Setting    in->deleted to 1 here does not have much sense at least if
this objects is in unlinked list. If you do that than the object gonna have
both "unlinked" and "deleted" flags set and yaffs_DestroyObject does
nothing  to reclaim space. If you modify this code as directed then all
files in "unlinked" state will be moved in "deleted" state after scan
complete and they will be reclaimed at garbage collection time.


I am not sure that this is a proper fix though, it might be a treatment for
symptom and not the cause. I would like to have some feedback from guys who
really understand what is going on here.

M.