[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