Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F161813574
D8781.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D8781.diff
View Options
Index: head/sys/vm/default_pager.c
===================================================================
--- head/sys/vm/default_pager.c
+++ head/sys/vm/default_pager.c
@@ -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 @@
#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 @@
};
/*
- * 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 @@
}
/*
- * 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);
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jul 8, 2:09 AM (9 m, 14 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34824172
Default Alt Text
D8781.diff (4 KB)
Attached To
Mode
D8781: Fix the stale and incorrect comments in vm/default_pager.c
Attached
Detach File
Event Timeline
Log In to Comment