[OpenAFS-devel] Linux 2.6.12 kernel BUG at fs/namei.c:1189

Russ Allbery rra@stanford.edu
Sat, 10 Dec 2005 17:44:56 -0800


Jeffrey Hutzelman <jhutz@cmu.edu> writes:

> You don't run anything.  The purpose of ksymoops was to analyze the OOPS
> message and augment addresses with symbol names; that's why it wants to
> read /proc/ksyms.  In 2.6, the kernel itself will report the correct
> symbols, so a postprocessor is not necessary.

Ah, okay, cool.

> In any case, BUG is Linux's equivalent of osi_Panic; the thing to do is
> to locate the place where it was called, and see if you can figure out
> what was going on.

Well, I can do that at least, although I'll probably get quickly out of my
depth in trying to understand what's going on.  The bug happened here:

static inline int may_delete(struct inode *dir,struct dentry *victim,int isdir)
{
        int error;

        if (!victim->d_inode)
                return -ENOENT;

        BUG_ON(victim->d_parent->d_inode != dir);

so presumably it's happening during the permission check step of the
rename system call to make sure I have privileges to remove a directory
entry.  However, it looks like the dentry that's being passed in doesn't
think that the directory the kernel thinks it's in is actually its parent
directory.

That makes me wonder if this is relevant somehow to the fact that what I
was trying to move was a mount point, but possibly not.  It's certainly
not reliable; I moved several other mount points before trying to move
this one.

We *did* run into something that looked like this problem on another Linux
system here with files that weren't mount points, but we could never
manage to reproduce it and never got BUG output, so that may or may not be
the same problem.  :/

-- 
Russ Allbery (rra@stanford.edu)             <http://www.eyrie.org/~eagle/>