[U-Boot-Users] jffs2 view u-boot/linux

Dave Ellis DGE at sixnetio.com
Wed Jun 1 23:50:49 CEST 2005


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 at sixnetio.com 
Detailed product info: www.sixnetio.com 
~~~~~~~~~~~~~~~~~~~~~~~~~~






More information about the U-Boot mailing list