jffs2 console printk storm
Erez Zadok
ezk at cs.sunysb.edu
Thu Feb 14 17:16:21 EST 2008
Hi David,
This has been a problem I've seen for a while. I've generated a jffs2 image
of an empty directory (I don't recall the version of the jffs2 utils I've
used to generate it). I mount the jffs2 image something like this:
# cp jffs2-empty.img /tmp/fs.0
# losetup /dev/loop0 /tmp/fs.0
# modprobe block2mtd block2mtd=/dev/loop0,128ki
# mount -t jffs2 mtd0 /n/lower/b0
Then I start running my tests in it (in /n/lower/b0). I get a lot of these
two kinds of console printk messages (esp. the first one):
CLEANMARKER node found at 0x00810000, not first node in block (0x00800000)
Empty flash at 0x0080ff70 ends at 0x00810000
I don't know how serious the messages are, but jffs2 seems to work fine for
me even with those many kernel messages scrolling off of my screen. I could
not find a way to turn off these warnings: jffs2's debugging config options
allow me to turn on more messages, but not to turn off these.
Is there a way to prevent these messages from showing up? Are they serious?
Is my jffs2 image bad/corrupt? If so, how should I fix it?
In the mean time, I've been using the small patch below to turn the above
two messages into jffs2 debugging messages.
Thanks,
Erez.
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
index 272872d..16f428c 100644
--- a/fs/jffs2/scan.c
+++ b/fs/jffs2/scan.c
@@ -646,8 +646,8 @@ scan_more:
inbuf_ofs = ofs - buf_ofs;
while (inbuf_ofs < scan_end) {
if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) {
- printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
- empty_start, ofs);
+ D1(printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
+ empty_start, ofs));
if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
return err;
goto scan_more;
@@ -840,7 +840,7 @@ scan_more:
return err;
ofs += PAD(sizeof(struct jffs2_unknown_node));
} else if (jeb->first_node) {
- printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", ofs, jeb->offset);
+ D1(printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", ofs, jeb->offset));
if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))
return err;
ofs += PAD(sizeof(struct jffs2_unknown_node));
More information about the linux-mtd
mailing list