avfs: fix for root file system not being unmounted
Also no longer have avfs crash whenever a file system server crashes.
This commit is contained in:
parent
c21cdd3154
commit
c25e2eb0cf
|
@ -350,9 +350,6 @@ PUBLIC void pm_reboot()
|
||||||
rfp = &fproc[i];
|
rfp = &fproc[i];
|
||||||
if (rfp->fp_endpoint == NONE) continue;
|
if (rfp->fp_endpoint == NONE) continue;
|
||||||
|
|
||||||
/* Let FSes exit themselves */
|
|
||||||
if (find_vmnt(rfp->fp_endpoint) != NULL) continue;
|
|
||||||
|
|
||||||
/* Don't just free the proc right away, but let it finish what it was
|
/* Don't just free the proc right away, but let it finish what it was
|
||||||
* doing first */
|
* doing first */
|
||||||
lock_proc(rfp, 0);
|
lock_proc(rfp, 0);
|
||||||
|
@ -460,7 +457,6 @@ PRIVATE void free_proc(struct fproc *exiter, int flags)
|
||||||
*/
|
*/
|
||||||
unsuspend_by_endpt(exiter->fp_endpoint);
|
unsuspend_by_endpt(exiter->fp_endpoint);
|
||||||
dmap_unmap_by_endpt(exiter->fp_endpoint);
|
dmap_unmap_by_endpt(exiter->fp_endpoint);
|
||||||
vmnt_unmap_by_endpt(exiter->fp_endpoint);
|
|
||||||
worker_stop_by_endpt(exiter->fp_endpoint);
|
worker_stop_by_endpt(exiter->fp_endpoint);
|
||||||
|
|
||||||
/* Release root and working directories. */
|
/* Release root and working directories. */
|
||||||
|
|
|
@ -334,7 +334,6 @@ _PROTOTYPE( struct vmnt *get_locked_vmnt, (struct fproc *rfp) );
|
||||||
_PROTOTYPE( void init_vmnts, (void) );
|
_PROTOTYPE( void init_vmnts, (void) );
|
||||||
_PROTOTYPE( int lock_vmnt, (struct vmnt *vp, tll_access_t locktype) );
|
_PROTOTYPE( int lock_vmnt, (struct vmnt *vp, tll_access_t locktype) );
|
||||||
_PROTOTYPE( void unlock_vmnt, (struct vmnt *vp) );
|
_PROTOTYPE( void unlock_vmnt, (struct vmnt *vp) );
|
||||||
_PROTOTYPE( void vmnt_unmap_by_endpt, (endpoint_t proc_e) );
|
|
||||||
|
|
||||||
/* vnode.c */
|
/* vnode.c */
|
||||||
_PROTOTYPE( void check_vnode_locks, (void) );
|
_PROTOTYPE( void check_vnode_locks, (void) );
|
||||||
|
|
|
@ -180,15 +180,3 @@ PUBLIC void unlock_vmnt(struct vmnt *vmp)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===========================================================================*
|
|
||||||
* vmnt_unmap_by_endpoint *
|
|
||||||
*===========================================================================*/
|
|
||||||
PUBLIC void vmnt_unmap_by_endpt(endpoint_t proc_e)
|
|
||||||
{
|
|
||||||
struct vmnt *vmp;
|
|
||||||
|
|
||||||
if ((vmp = find_vmnt(proc_e)) != NULL)
|
|
||||||
clear_vmnt(vmp);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue