Beispiel #1
0
void
pfs_purge(struct pfs_node *pn)
{

	mtx_lock(&pfs_vncache_mutex);
	pfs_purge_locked(pn);
	mtx_unlock(&pfs_vncache_mutex);
}
/*
 * Tear down vnode cache
 */
void
pfs_vncache_unload(void)
{

	EVENTHANDLER_DEREGISTER(process_exit, pfs_exit_tag);
	mtx_lock(&pfs_vncache_mutex);
	pfs_purge_locked(NULL, true);
	mtx_unlock(&pfs_vncache_mutex);
	KASSERT(pfs_vncache_entries == 0,
	    ("%d vncache entries remaining", pfs_vncache_entries));
	mtx_destroy(&pfs_vncache_mutex);
}
Beispiel #3
0
/*
 * Free all vnodes associated with a defunct process
 */
static void
pfs_exit(void *arg, struct proc *p)
{
	struct pfs_vdata *pvd;
	int dead;

	if (pfs_vncache == NULL)
		return;
	mtx_lock(&pfs_vncache_mutex);
	for (pvd = pfs_vncache, dead = 0; pvd != NULL; pvd = pvd->pvd_next)
		if (pvd->pvd_pid == p->p_pid)
			dead = pvd->pvd_dead = 1;
	if (dead)
		pfs_purge_locked(NULL);
	mtx_unlock(&pfs_vncache_mutex);
}