[992] in NetBSD-Development

home help back first fref pref prev next nref lref last post

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.

home help back first fref pref prev next nref lref last post