umount/ls panic

Matthew Dillon dillon at apollo.backplane.com
Mon Oct 22 08:43:16 PDT 2007


:What about the following patch?
:
:It fixes the assertion failure for the various cases listed in this
:thread.  When running ls from an unmounted /proc, cache_resolve()
:complains but I reckon this is expected:
:
:EXDEV case 1 0xcaba70c8
:EXDEV case 1 0xcaba70c8
:EXDEV case 1 0xcaba70c8
:ls: .: cross-device link

    Yes, the patch looks pretty good.  I'll test it a bit today and
    check out the error case, then commit it.

					-Matt
					Matthew Dillon 
					<dillon at backplane.com>

:        vp->v_ops = &dead_vnode_vops_p;
:        vn_pollgone(vp);
:        vp->v_tag = VT_NON;
:+
:+       /*
:+        * If the vnode was force-closed, it is still referenced and may be
:+        * vref()'ed again.  vref() calls are allowed for active vnodes only so
:+        * do as if this vnode is active in the "dead vnode" fs.  When its last
:+        * reference goes away, it will be inactivated and reclaimed again in
:+        * this dummy fs.
:+        */
:+       if (active && (flags & DOCLOSE)) {
:+               vp->v_flag &= ~(VINACTIVE|VRECLAIMED);
:+       }
: }






More information about the Bugs mailing list