
Jonas Dietsche wrote:
******The directory Entries******
testfile
build_list: version = 00000001 build_list: ino = 00000002
testfile
build_list: version = 00000002 build_list: ino = 00000000
How can I manage it that the deleted testfile isn't displayed anymore?
Have you tried using CFG_JFFS2_SORT_FRAGMENTS? I use it and I tried a similar test and testfile is deleted for u-boot (for U-Boot 1.1.0). Both jffs2_1pass.c and README.JFFS2 say it is needed if the boot partition is writable.
In this case it may just be masking a bug in jffs2_1pass_find_inode(). The search for the most recent directory entry ignores a directory entry with an inode of 0 (unlinked file) even if the version is newer, so deletion directory entries are ignored. This doesn't look right to me:
for(b = pL->dir.listHead; b; b = b->next, counter++) { jDir = (struct jffs2_raw_dirent *) (b->offset); if ((pino == jDir->pino) && (len == jDir->nsize) && (jDir->ino) && /* 0 for unlink */ ^^^^^^^^^^^ (!strncmp(jDir->name, name, len))) { /* a match */ if (jDir->version < version) continue;
With your test this would find version 1 of the directory entry and ignore version 2, which unlinks the file.
With CFG_JFFS2_SORT_FRAGMENTS all directory entries except the most recent version have their inode set to 0 during the sort, so the obsolete directory entry would be ignored too.
Is this a NAND specific problem?
Probably not.
Dave Ellis
~~~~~~~~~~~~~~~~~~~~~~~~~~ SIXNET - "Leading the Industrial Ethernet Revolution" 331 Ushers Road, P.O. Box 767, Clifton Park, NY 12065 USA Tel +1 (518) 877-5173 Fax +1 (518) 877-8346 Email me at: dge@sixnetio.com Detailed product info: www.sixnetio.com ~~~~~~~~~~~~~~~~~~~~~~~~~~