DragonFly BSD
DragonFly bugs List (threaded) for 2004-12
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: New ext2-related panic


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Tue, 21 Dec 2004 15:47:34 -0800 (PST)

:Hello
:
:I got this new ext2-related panic today:
:
:panic: assertion: cnp->cn_flags & CNP_PDIRUNLOCK in relookup
:
:To reproduce it: (/mnt/ext2 is an ext2fs mount point)
:
:cd /mnt/ext2fs
:mkdir -p foo/bar
:mv foo/bar .  (or cd foo; mv bar ..)
:
:i.e., trying to move a directory up one level.
:
:The kernel dumps are at
:
:http://leaf.dragonflybsd.org/~andre/kernel.3.bz2
:http://leaf.dragonflybsd.org/~andre/vmcore.3.bz2
:
:Regards,
:Andre

    Try this patch.  It's the same problem that Kyle was having
    with msdosfs.

    (The issue here is that the old FreeBSD code was not properly
    tracking the CNP_PDIRUNLOCK flag in the particular code path
    in question.  The panics started occuring when I added an 
    assertion to ensure that the flag is in the proper state.  So
    in that sense it is a 'good' panic in that it is catching a
    situation where a CNP flag is not being properly adjusted
    for side effects).

					-Matt
					Matthew Dillon 
					<dillon@xxxxxxxxxxxxx>

Index: ext2_vnops.c
===================================================================
RCS file: /cvs/src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v
retrieving revision 1.17
diff -u -r1.17 ext2_vnops.c
--- ext2_vnops.c	12 Nov 2004 00:09:30 -0000	1.17
+++ ext2_vnops.c	21 Dec 2004 23:45:31 -0000
@@ -507,6 +507,7 @@
 		 */
 		vref(tdvp);
 		error = ext2_checkpath(ip, dp, tcnp->cn_cred);
+		tcnp->cn_flags |= CNP_PDIRUNLOCK;
 		if (error) {
 			vrele(tdvp);
 			goto out;



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]