Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Dec 2016 17:28:55 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r310083 - head/sys/vm
Message-ID:  <201612141728.uBEHStwQ024588@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: alc
Date: Wed Dec 14 17:28:55 2016
New Revision: 310083
URL: https://svnweb.freebsd.org/changeset/base/310083

Log:
  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

Modified:
  head/sys/vm/default_pager.c

Modified: head/sys/vm/default_pager.c
==============================================================================
--- head/sys/vm/default_pager.c	Wed Dec 14 17:27:44 2016	(r310082)
+++ head/sys/vm/default_pager.c	Wed Dec 14 17:28:55 2016	(r310083)
@@ -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_oof
 }
 
 /*
- * 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);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612141728.uBEHStwQ024588>