Date: Tue, 3 Aug 2004 03:30:32 GMT From: Brian Buchanan <bwb@holo.org> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/59945: nullfs bug: reboot after panic: null_checkvp [4.9] Message-ID: <200408030330.i733UWnd042240@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/59945; it has been noted by GNATS. From: Brian Buchanan <bwb@holo.org> To: freebsd-gnats-submit@freebsd.org Cc: Subject: Re: kern/59945: nullfs bug: reboot after panic: null_checkvp [4.9] Date: Mon, 2 Aug 2004 20:21:22 -0700 (PDT) This is almost certainly still an issue in 4.10, however, it will not occur unless DIAGNOSTIC is defined. getnewvnode() attempts a VOP_GETVOBJECT() on a nullfs vnode. null_getvobject() uses the NULLVPTOLOWERVP() macro to get the lower vnode so that its vm_object can be returned. However, for a free nullfs vnode, there is no lower vnode. null_checkvp() will be invoked as a result of the macro, and it will panic when it finds that lowervp is not set. #ifdef DIAGNOSTIC struct vnode *null_checkvp(struct vnode *vp, char *fil, int lno); #define NULLVPTOLOWERVP(vp) null_checkvp((vp), __FILE__, __LINE__) #else #define NULLVPTOLOWERVP(vp) (VTONULL(vp)->null_lowervp) #endif null_getvobject() needs to test whether the vnode is still alive before it tries to descend into its data structures. Or, alternately, the patch tjr was working on will fix this by delaying the cleanup of the null vode and its associated data structures until the reclaim operation.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200408030330.i733UWnd042240>