<dec f='src/src/sys/miscfs/genfs/genfs.h' l='38' type='int genfs_putpages(void * )'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='892'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='892'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='892'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='892'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='945' macro='1'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='945' macro='1'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='945' macro='1'/>
<use f='src/src/sys/fs/cd9660/cd9660_vnops.c' l='945' macro='1'/>
<use f='src/src/sys/fs/msdosfs/msdosfs_vnops.c' l='1922'/>
<use f='src/src/sys/fs/msdosfs/msdosfs_vnops.c' l='1922'/>
<use f='src/src/sys/fs/msdosfs/msdosfs_vnops.c' l='1922'/>
<use f='src/src/sys/fs/msdosfs/msdosfs_vnops.c' l='1922'/>
<use f='src/src/sys/fs/ntfs/ntfs_vnops.c' l='856'/>
<use f='src/src/sys/fs/ntfs/ntfs_vnops.c' l='856'/>
<use f='src/src/sys/fs/ntfs/ntfs_vnops.c' l='856'/>
<use f='src/src/sys/fs/ntfs/ntfs_vnops.c' l='856'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='131' u='r'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='131' u='r'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='131' u='r'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='131' u='r'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='206' macro='1'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='206' macro='1'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='206' macro='1'/>
<use f='src/src/sys/fs/puffs/puffs_vnops.c' l='206' macro='1'/>
<use f='src/src/sys/fs/smbfs/smbfs_vnops.c' l='146'/>
<use f='src/src/sys/fs/smbfs/smbfs_vnops.c' l='146'/>
<use f='src/src/sys/fs/smbfs/smbfs_vnops.c' l='146'/>
<use f='src/src/sys/fs/smbfs/smbfs_vnops.c' l='146'/>
<use f='src/src/sys/fs/tmpfs/tmpfs_specops.c' l='96' macro='1' u='r'/>
<use f='src/src/sys/fs/tmpfs/tmpfs_specops.c' l='96' macro='1' u='r'/>
<use f='src/src/sys/fs/tmpfs/tmpfs_specops.c' l='96' macro='1' u='r'/>
<use f='src/src/sys/fs/tmpfs/tmpfs_specops.c' l='96' macro='1' u='r'/>
<def f='src/src/sys/miscfs/genfs/genfs_io.c' l='803' ll='815' type='int genfs_putpages(void * v)'/>
<doc f='src/src/sys/miscfs/genfs/genfs_io.c' l='755'>/*
 * generic VM putpages routine.
 * Write the given range of pages to backing store.
 *
 * =&gt; &quot;offhi == 0&quot; means flush all pages at or after &quot;offlo&quot;.
 * =&gt; object should be locked by caller.  we return with the
 *      object unlocked.
 * =&gt; if PGO_CLEANIT or PGO_SYNCIO is set, we may block (due to I/O).
 *	thus, a caller might want to unlock higher level resources
 *	(e.g. vm_map) before calling flush.
 * =&gt; if neither PGO_CLEANIT nor PGO_SYNCIO is set, we will not block
 * =&gt; if PGO_ALLPAGES is set, then all pages in the object will be processed.
 * =&gt; NOTE: we rely on the fact that the object&apos;s memq is a TAILQ and
 *	that new pages are inserted on the tail end of the list.   thus,
 *	we can make a complete pass through the object in one go by starting
 *	at the head and working towards the tail (new pages are put in
 *	front of us).
 * =&gt; NOTE: we are allowed to lock the page queues, so the caller
 *	must not be holding the page queue lock.
 *
 * note on &quot;cleaning&quot; object and PG_BUSY pages:
 *	this routine is holding the lock on the object.   the only time
 *	that it can run into a PG_BUSY page that it does not own is if
 *	some other process has started I/O on the page (e.g. either
 *	a pagein, or a pageout).    if the PG_BUSY page is being paged
 *	in, then it can not be dirty (!PG_CLEAN) because no one has
 *	had a chance to modify it yet.    if the PG_BUSY page is being
 *	paged out then it means that someone else has already started
 *	cleaning the page for us (how nice!).    in this case, if we
 *	have syncio specified, then after we make our pass through the
 *	object we need to wait for the other PG_BUSY pages to clear
 *	off (i.e. we need to do an iosync).   also note that once a
 *	page is PG_BUSY it must stay in its object until it is un-busyed.
 *
 * note on page traversal:
 *	we can traverse the pages in an object either by going down the
 *	linked list in &quot;uobj-&gt;memq&quot;, or we can go over the address range
 *	by page doing hash table lookups for each address.    depending
 *	on how many pages are in the object it may be cheaper to do one
 *	or the other.   we set &quot;by_list&quot; to true if we are using memq.
 *	if the cost of a hash lookup was equal to the cost of the list
 *	traversal we could compare the number of pages in the start-&gt;stop
 *	range to the total number of pages in the object.   however, it
 *	seems that a hash table lookup is more expensive than the linked
 *	list traversal, so we multiply the number of pages in the
 *	range by an estimate of the relatively higher cost of the hash lookup.
 */</doc>
<use f='src/src/sys/miscfs/kernfs/kernfs_vnops.c' l='175'/>
<use f='src/src/sys/miscfs/kernfs/kernfs_vnops.c' l='175'/>
<use f='src/src/sys/miscfs/kernfs/kernfs_vnops.c' l='175'/>
<use f='src/src/sys/miscfs/kernfs/kernfs_vnops.c' l='175'/>
<use f='src/src/sys/miscfs/specfs/spec_vnops.c' l='158' macro='1'/>
<use f='src/src/sys/miscfs/specfs/spec_vnops.c' l='158' macro='1'/>
<use f='src/src/sys/miscfs/specfs/spec_vnops.c' l='158' macro='1'/>
<use f='src/src/sys/miscfs/specfs/spec_vnops.c' l='158' macro='1'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='141'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='141'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='141'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='141'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='194' macro='1'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='194' macro='1'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='194' macro='1'/>
<use f='src/src/sys/nfs/nfs_vnops.c' l='194' macro='1'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1201' u='r'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1201' u='r'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1201' u='r'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1201' u='r'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1255' macro='1'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1255' macro='1'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1255' macro='1'/>
<use f='src/src/sys/ufs/ext2fs/ext2fs_vnops.c' l='1255' macro='1'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='149' u='r'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='149' u='r'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='149' u='r'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='149' u='r'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='205' macro='1'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='205' macro='1'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='205' macro='1'/>
<use f='src/src/sys/ufs/ffs/ffs_vnops.c' l='205' macro='1'/>
<use f='src/src/sys/ufs/lfs/lfs_pages.c' l='585' u='c' c='lfs_putpages'/>
<use f='src/src/sys/ufs/lfs/lfs_vnops.c' l='287' macro='1'/>
<use f='src/src/sys/ufs/lfs/lfs_vnops.c' l='287' macro='1'/>
<use f='src/src/sys/ufs/lfs/lfs_vnops.c' l='287' macro='1'/>
<use f='src/src/sys/ufs/lfs/lfs_vnops.c' l='287' macro='1'/>
