* endless loop in wbuf.c?
@ 2005-07-02 0:31 Rick Bronson
2005-07-02 12:15 ` Artem B. Bityuckiy
0 siblings, 1 reply; 2+ messages in thread
From: Rick Bronson @ 2005-07-02 0:31 UTC (permalink / raw)
To: linux-mtd
Hi,
I seem to encounter an endless loop in wbuf.c starting at:
} else while (old_wbuf_len &&
old_wbuf_ofs == c->wbuf_ofs) {
I get hung in this loop if I do this:
umount /reserved
/usr/src/mtd/util/flash_eraseall --jffs2 /dev/mtd1
mount /reserved
cd /reserved
# < using a C program, make 5000 files of 170 bytes each in current dir,
# copying from /dev/urandom and naming "test00000.bin" thru "test04999.bin" >
cd
umount /reserved
mount /reserved
ls -Rl /reserved > ~/xx
rm -rf /reserved/* # locks up after command prompt returns + 2 seconds
My fstab looks like:
/dev/mtdblock1 /reserved jffs2 noauto,defaults 0 0
My cpu is a AT91RM9200, the mtd part is a NAND:
NAND device: Manufacturer ID: 0x98, Chip ID: 0x75 (Toshiba NAND 32MiB 3,3V 8-bit
My .config has these set:
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_AT91=y
CONFIG_MTD_NAND_IDS=y
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_CMODE_PRIORITY=y
When I set breakpoints I find it goes thru this loop:
#0 jffs2_mark_node_obsolete (c=0xc03d5ccc, ref=0xc03d5ccc) at nodemgmt.c:390
#1 0xc00aeff8 in jffs2_garbage_collect_deletion_dirent (c=0xc03d5ccc,
jeb=0xc3614f50, f=0xc361d3a0, fd=0xc3619660) at gc.c:881
#2 0xc00add3c in jffs2_garbage_collect_live (c=0xc03d5ccc, jeb=0xc3614f50,
raw=0xc35add10, f=0xc361d3a0) at gc.c:473
#3 0xc00ad9a4 in jffs2_garbage_collect_pass (c=0xc03d5ccc) at gc.c:371
#4 0xc00b461c in jffs2_flush_wbuf_gc (c=0xc03d5ccc, ino=3277511952)
at wbuf.c:567
#5 0xc00b2a1c in jffs2_write_super (sb=0xc03d5ccc) at fs.c:381
#6 0xc00527b0 in sync_supers (dev=23756) at super.c:439
#7 0xc00516c4 in sync_old_buffers () at buffer.c:2888
#8 0xc0051b14 in kupdate (startup=0xc00164b8) at buffer.c:3060
#9 0xc001c008 in kernel_thread (fn=0xc35ce3a0, arg=0xc02e1ff8,
flags=3277644640) at process.c:389
continuously with "raw" iterating and fd->name iterating over each
file in order ie. "test00000.bin", "test00001.bin", etc
raw iterates from this line in gc.c:
raw = raw->next_phys;
Anyone else seen anything like this?
Thanks so much for any help.
Rick Bronson
_
| |
/ /__
.----------------------------------------------------------._____/ (___)
| Rick Bronson rick@efn.org Tel 541-485-7264 | (___)
| Amazonia Computing http://www.efn.org/~rick __ o |_____ (___)
| 5050 Donald Street "Onde esta dinheiro?" _`\<, | \_(___)
| Eugene, OR 97405 -- Gal Costa __( )/( )__ |
`----------------------------------------------------------'
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: endless loop in wbuf.c?
2005-07-02 0:31 endless loop in wbuf.c? Rick Bronson
@ 2005-07-02 12:15 ` Artem B. Bityuckiy
0 siblings, 0 replies; 2+ messages in thread
From: Artem B. Bityuckiy @ 2005-07-02 12:15 UTC (permalink / raw)
To: rick; +Cc: linux-mtd
Rick Bronson wrote:
> Hi,
>
> I seem to encounter an endless loop in wbuf.c starting at:
>
Hi,
you didn't write the version of Linux/MTD you're using. It's important
because I fixed one endless GC thread loop problem recently. Please, try
a fresh MTD snapshot (download it from CVS). If it won't help - come back.
--
Best Regards,
Artem B. Bityuckiy,
St.-Petersburg, Russia.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-07-02 12:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-02 0:31 endless loop in wbuf.c? Rick Bronson
2005-07-02 12:15 ` Artem B. Bityuckiy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox