All of lore.kernel.org
 help / color / mirror / Atom feed
From: Estelle HAMMACHE <estelle.hammache@st.com>
To: Konstantin Kletschke <lists@ku-gbr.de>
Cc: linux-mtd@lists.infradead.org
Subject: Re: Oops vanilla 2.6.10
Date: Wed, 16 Feb 2005 15:54:16 +0100	[thread overview]
Message-ID: <42135E98.E187DD1A@st.com> (raw)
In-Reply-To: 20050216133753.GD16239@synertronixx3

Konstantin Kletschke wrote:
> EEEEEK. jffs2_mark_node_obsolete called with NULL node

> >>EIP; c00bfed0 <jffs2_build_remove_unlinked_inode+30/ec>   <=====
> 
> >>r3; c01b1ed4 <log_wait+0/8>
> 
> Trace; c00bfea0 <jffs2_build_remove_unlinked_inode+0/ec>
> Trace; c00bfcf8 <jffs2_build_filesystem+1e4/38c>
> Trace; c00bfb14 <jffs2_build_filesystem+0/38c>

Not sure this is relevant, (and I have no way to test it right now), 
but it could be related to the obsolete node merging. You have NOR
flash haven't you ?

In jffs2_build_remove_unlinked_inode 
	raw = ic->nodes;
	while (raw != (void *)ic) {
		struct jffs2_raw_node_ref *next = raw->next_in_ino;
		D1(printk(KERN_DEBUG "obsoleting node at 0x%08x\n", ref_offset(raw)));
		jffs2_mark_node_obsolete(c, raw);
		raw = next;
	}

However if "next" is also raw->next_phys and is already obsolete 
and is the last in the next_in_ino chain, I think it may be 
freed in jffs2_mark_node_obsolete:

	/* Merge with the next node in the physical list, if there is one
	   and if it's also obsolete and if it doesn't belong to any inode */
	if (ref->next_phys && ref_obsolete(ref->next_phys) &&
	    !ref->next_phys->next_in_ino) {
		struct jffs2_raw_node_ref *n = ref->next_phys;
		
		spin_lock(&c->erase_completion_lock);

		ref->__totlen += n->__totlen;
		ref->next_phys = n->next_phys;
                if (jeb->last_node == n) jeb->last_node = ref;
		if (jeb->gc_node == n) {
			/* gc will be happy continuing gc on this node */
			jeb->gc_node=ref;
		}
		spin_unlock(&c->erase_completion_lock);

		jffs2_free_raw_node_ref(n);
	}

This would explain things... if you think it is plausible you could
try commenting out the node merging in jffs2_mark_node_obsolete.

Estelle

  parent reply	other threads:[~2005-02-16 15:04 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-16 11:47 Oops vanilla 2.6.10 Konstantin Kletschke
2005-02-16 11:51 ` Artem B. Bityuckiy
2005-02-16 12:01 ` Thomas Gleixner
2005-02-16 12:20   ` Konstantin Kletschke
2005-02-16 12:24     ` Thomas Gleixner
2005-02-16 12:44       ` Konstantin Kletschke
2005-02-16 13:36         ` Thomas Gleixner
2005-02-16 13:37         ` Konstantin Kletschke
2005-02-16 14:05           ` Thomas Gleixner
2005-02-16 14:54           ` Estelle HAMMACHE [this message]
2005-02-16 15:28             ` Artem B. Bityuckiy
2005-02-16 16:29               ` Konstantin Kletschke
2005-02-16 16:51                 ` Artem B. Bityuckiy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42135E98.E187DD1A@st.com \
    --to=estelle.hammache@st.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=lists@ku-gbr.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.