看板 DFBSD_bugs 關於我們 聯絡資訊
: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@backplane.com> 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)