Re2: file weirdness / vnlru process issues

Matthew Dillon dillon at apollo.backplane.com
Wed Oct 20 11:11:19 PDT 2004


:Woop, maybe not perfect yet.  During another 'make realquickrel', I got
:a panic (although it completed successfully a few times previously - but
:this one was to a different destination):
:
:panic: assertion: ncp != NULL in cache_cleanneg
:
:I gather that's related to the same bit of code as before, i.e. cleaning
:out negative hits.
:
:-Chris

    This is my fault.  I copied the assertion from the old code to
    the new code and it is simply not correct any more in the new
    code.  NULL is actually allowed there, but we have to break out
    of the loop if we get one.

    Here's the patch, please test.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>

Index: kern/vfs_cache.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_cache.c,v
retrieving revision 1.39
diff -u -r1.39 vfs_cache.c
--- kern/vfs_cache.c	19 Oct 2004 05:55:34 -0000	1.39
+++ kern/vfs_cache.c	20 Oct 2004 18:10:26 -0000
@@ -1439,7 +1439,10 @@
 	 */
 	while (count) {
 		ncp = TAILQ_FIRST(&ncneglist);
-		KKASSERT(ncp != NULL);
+		if (ncp == NULL) {
+			KKASSERT(numneg == 0);
+			break;
+		}
 		TAILQ_REMOVE(&ncneglist, ncp, nc_vnode);
 		TAILQ_INSERT_TAIL(&ncneglist, ncp, nc_vnode);
 		if (cache_get_nonblock(ncp) == 0)





More information about the Bugs mailing list