[992] in NetBSD-Development
vnode_pager_flush
daemon@ATHENA.MIT.EDU (Michael T. Stolarchuk)
Wed Aug 30 14:12:20 1995
To: jtkohl@MIT.EDU
Cc: honey@citi.umich.edu, little-work@citi.umich.edu,
mts@terminator.rs.itd.umich.edu, netbsd-afs@MIT.EDU
In-Reply-To: Your message of "Wed, 30 Aug 1995 08:26:53 EDT."
<9508301226.AA10853@banana>
Date: Wed, 30 Aug 1995 14:11:53 -0400
From: "Michael T. Stolarchuk" <mts@terminator.rs.itd.umich.edu>
Hiah, here's a sample vnode_pager_flush ... I stuck it into afs_nbsd_subr.c
luckey% diff afs/afs_nbsd_subr.c ../../../src/afs/afs_nbsd_subr.c
399,402d398
< /*
< ** vnode_pager_flush
< ** flush any pages from the vnode cache... Really borrowed from vnode_pager_setsize...
< */
404,426d399
< #include <vm/vnode_pager.h>
<
< vnode_pager_flush(vp)
< struct vnode * vp;
< {
< vn_pager_t vnp;
< vm_object_t object;
< vm_pager_t pager;
<
< pager = (vm_pager_t)vp->v_vmdata;
< if (pager == 0)
< return;
< vnp = (vn_pager_t)pager->pg_data;
< object = vm_object_lookup(pager);
<
< if (object) {
< vm_object_lock(object)
< vm_object_page_remove(object, 0, vnp->vnp_size );
< vm_object_unlock(object);
< vm_object_deallocate(object);
< }
< }
luckey%
A reference looks like:
luckey% diff afs/afs_cache.c ../../../src/afs/afs_cache.c
59c59
< static char carcsid[]="@(#)$Id: afs_cache.c,v 1.5 1995/07/26 14:10:01 lhuston Exp rees $";
---
> static char carcsid[]="@(#)$Id: afs_cache.c,v 1.6 1995/07/27 18:34:57 rees Exp $";
2900,2905d2899
< #ifdef AFS_NETBSD_ENV
< VOP_LOCK(VCTOV(tvc));
< vnode_pager_flush(VCTOV(tvc));
< VOP_UNLOCK(VCTOV(tvc));
< #endif
<
Give it a shot when you get a change and let me know about failures...
I'd be most concerned about deadLocks.
mts.