Tidy up. Mostly, remove or replace stale comments. Most of the comments
in this file actually described the operation of the swap pager, not the default pager. Given that this is the wrong place to discuss the implementation of the swap pager, it shouldn't come as a surprise that as the swap pager evolved these comments became increasingly stale. In addition, apply some style fixes, like modernizing a few remaining old- style function definitions. Reviewed by: kib, markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D8781
This commit is contained in:
parent
2b0f0faeb6
commit
3d026d871f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=310083
@ -27,14 +27,6 @@
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The default pager is responsible for supplying backing store to unbacked
|
||||
* storage. The backing store is usually swap so we just fall through to
|
||||
* the swap routines. However, since swap metadata has not been assigned,
|
||||
* the swap routines assign and manage the swap backing store through the
|
||||
* vm_page->swapblk field. The object is only converted when the page is
|
||||
* physically freed after having been cleaned and even then vm_page->swapblk
|
||||
* is maintained whenever a resident page also has swap backing store.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
@ -53,14 +45,16 @@ __FBSDID("$FreeBSD$");
|
||||
#include <vm/vm_pager.h>
|
||||
#include <vm/swap_pager.h>
|
||||
|
||||
static vm_object_t default_pager_alloc(void *, vm_ooffset_t, vm_prot_t,
|
||||
vm_ooffset_t, struct ucred *);
|
||||
static void default_pager_dealloc(vm_object_t);
|
||||
static int default_pager_getpages(vm_object_t, vm_page_t *, int, int *, int *);
|
||||
static void default_pager_putpages(vm_object_t, vm_page_t *, int,
|
||||
boolean_t, int *);
|
||||
static boolean_t default_pager_haspage(vm_object_t, vm_pindex_t, int *,
|
||||
int *);
|
||||
static vm_object_t default_pager_alloc(void *, vm_ooffset_t, vm_prot_t,
|
||||
vm_ooffset_t, struct ucred *);
|
||||
static void default_pager_dealloc(vm_object_t);
|
||||
static int default_pager_getpages(vm_object_t, vm_page_t *, int,
|
||||
int *, int *);
|
||||
static void default_pager_putpages(vm_object_t, vm_page_t *, int,
|
||||
boolean_t, int *);
|
||||
static boolean_t default_pager_haspage(vm_object_t, vm_pindex_t, int *,
|
||||
int *);
|
||||
|
||||
/*
|
||||
* pagerops for OBJT_DEFAULT - "default pager".
|
||||
*/
|
||||
@ -73,7 +67,7 @@ struct pagerops defaultpagerops = {
|
||||
};
|
||||
|
||||
/*
|
||||
* no_pager_alloc just returns an initialized object.
|
||||
* Return an initialized object.
|
||||
*/
|
||||
static vm_object_t
|
||||
default_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot,
|
||||
@ -100,68 +94,54 @@ default_pager_alloc(void *handle, vm_ooffset_t size, vm_prot_t prot,
|
||||
}
|
||||
|
||||
/*
|
||||
* deallocate resources associated with default objects. The default objects
|
||||
* have no special resources allocated to them, but the vm_page's being used
|
||||
* in this object might. Still, we do not have to do anything - we will free
|
||||
* the swapblk in the underlying vm_page's when we free the vm_page or
|
||||
* garbage collect the vm_page cache list.
|
||||
* Deallocate resources associated with the object.
|
||||
*/
|
||||
static void
|
||||
default_pager_dealloc(object)
|
||||
vm_object_t object;
|
||||
default_pager_dealloc(vm_object_t object)
|
||||
{
|
||||
/*
|
||||
* OBJT_DEFAULT objects have no special resources allocated to them.
|
||||
*/
|
||||
|
||||
/* Reserved swap is released by vm_object_destroy(). */
|
||||
object->type = OBJT_DEAD;
|
||||
}
|
||||
|
||||
/*
|
||||
* Load pages from backing store. Since OBJT_DEFAULT is converted to
|
||||
* OBJT_SWAP at the time a swap-backed vm_page_t is freed, we will never
|
||||
* see a vm_page with assigned swap here.
|
||||
* Load pages from backing store.
|
||||
*/
|
||||
static int
|
||||
default_pager_getpages(vm_object_t object, vm_page_t *m, int count,
|
||||
int *rbehind, int *rahead)
|
||||
{
|
||||
|
||||
/*
|
||||
* Since an OBJT_DEFAULT object is converted to OBJT_SWAP by the first
|
||||
* call to the putpages method, this function will never be called on
|
||||
* a vm_page with assigned swap.
|
||||
*/
|
||||
return (VM_PAGER_FAIL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Store pages to backing store. We should assign swap and initiate
|
||||
* I/O. We do not actually convert the object to OBJT_SWAP here. The
|
||||
* object will be converted when the written-out vm_page_t is moved from the
|
||||
* cache to the free list.
|
||||
* Store pages to backing store.
|
||||
*/
|
||||
static void
|
||||
default_pager_putpages(vm_object_t object, vm_page_t *m, int count,
|
||||
int flags, int *rtvals)
|
||||
{
|
||||
|
||||
/* The swap pager will convert the object to OBJT_SWAP. */
|
||||
swappagerops.pgo_putpages(object, m, count, flags, rtvals);
|
||||
}
|
||||
|
||||
/*
|
||||
* Tell us whether the backing store for the requested (object,index) is
|
||||
* synchronized. i.e. tell us whether we can throw the page away and
|
||||
* reload it later. So, for example, if we are in the process of writing
|
||||
* the page to its backing store, or if no backing store has been assigned,
|
||||
* it is not yet synchronized.
|
||||
*
|
||||
* It is possible to have fully-synchronized swap assigned without the
|
||||
* object having been converted. We just call swap_pager_haspage() to
|
||||
* deal with it since it must already deal with it plus deal with swap
|
||||
* meta-data structures.
|
||||
* Tell us whether the requested (object,index) is available from the object's
|
||||
* backing store.
|
||||
*/
|
||||
static boolean_t
|
||||
default_pager_haspage(object, pindex, before, after)
|
||||
vm_object_t object;
|
||||
vm_pindex_t pindex;
|
||||
int *before;
|
||||
int *after;
|
||||
default_pager_haspage(vm_object_t object, vm_pindex_t pindex, int *before,
|
||||
int *after)
|
||||
{
|
||||
return FALSE;
|
||||
|
||||
/* An OBJT_DEFAULT object has no backing store. */
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user