Re: data loss on jffs2 filesystem on dataflash

Peter Menzebach
2005-09-15T09:15:22Z

Artem B. Bityuckiy wrote:
> Peter Menzebach wrote:
>
>> - if (!jffs2_can_mark_obsolete(c) && c->nextblock &&
>> (c->nextblock->free_size & (c->wbuf_pagesize-1))) {
>> + if (!jffs2_can_mark_obsolete(c) && c->nextblock &&
>> (c->nextblock->free_size % c->wbuf_pagesize)) {
>
> [snip]
>
>> - uint32_t skip = c->nextblock->free_size & (c->wbuf_pagesize-1);
>> + uint32_t skip = c->nextblock->free_size % c->wbuf_pagesize;
>
> [snip]
>
>> -#ifdef CONFIG_JFFS2_FS_WRITEBUFFER
>> #define PAGE_DIV(x) ( ((unsigned long)(x) / (unsigned
>> long)(c->wbuf_pagesize)) * (unsigned long)(c->wbuf_pagesize) )
>> #define PAGE_MOD(x) ( (unsigned long)(x) % (unsigned
>> long)(c->wbuf_pagesize) )
>> -#else
>> -#define PAGE_DIV(x) ( (x) & (~(c->wbuf_pagesize - 1)) )
>> -#define PAGE_MOD(x) ( (x) & (c->wbuf_pagesize - 1) )
>> -#endif
>
> Looks sane.
>
Ok, one step forward. With these patches I can now copy a generated
rootfs to flash, mount it, and read it without problems.

But with writing to an empty flash, there are still these problems. I
can confirm, that the mtd interface works properly when reading,
writing, erasing flash. For testing, I have replaced only the jffs2 with
an old version, leaving the mtd part the same. There everything works fine.

My guess at the moment is, that the write buffering has some problems
somewhere. I can see, that everytime a whole pagesize is written to
flash. Is that intended?

Any ideas?

Best regards
Peter

--
Peter Menzebach
Menzebach und Wolff IT-Consulting GbR
Phone +49 751 355 387 1