summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2005-08-13 20:21:33 +0000
committerkan <kan@FreeBSD.org>2005-08-13 20:21:33 +0000
commit51355225d4b006ca1150564e1fcaf42e99cbca26 (patch)
tree5bbdbd7596e8b4dcaef91afa8f64b9dc072a9f08 /sys/vm
parentf94807ecebdf54659f933acc85c0143f819e1b07 (diff)
downloadFreeBSD-src-51355225d4b006ca1150564e1fcaf42e99cbca26.zip
FreeBSD-src-51355225d4b006ca1150564e1fcaf42e99cbca26.tar.gz
Do not use vm_pager_init() to initialize vnode_pbuf_freecnt variable.
vm_pager_init() is run before required nswbuf variable has been set to correct value. This caused system to run with single pbuf available for vnode_pager. Handle both cluster_pbuf_freecnt and vnode_pbuf_freecnt variable in the same way. Reported by: ade Obtained from: alc MFC after: 2 days
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_pager.c1
-rw-r--r--sys/vm/vnode_pager.c9
2 files changed, 1 insertions, 9 deletions
diff --git a/sys/vm/vm_pager.c b/sys/vm/vm_pager.c
index 8cc4839..d6025ab 100644
--- a/sys/vm/vm_pager.c
+++ b/sys/vm/vm_pager.c
@@ -216,6 +216,7 @@ vm_pager_bufferinit()
}
cluster_pbuf_freecnt = nswbuf / 2;
+ vnode_pbuf_freecnt = nswbuf / 2 + 1;
swapbkva = kmem_alloc_nofault(pager_map, nswbuf * MAXPHYS);
if (!swapbkva)
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index f12bb35..703f967 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -75,7 +75,6 @@ __FBSDID("$FreeBSD$");
#include <vm/vnode_pager.h>
#include <vm/vm_extern.h>
-static void vnode_pager_init(void);
static daddr_t vnode_pager_addr(struct vnode *vp, vm_ooffset_t address,
int *run);
static int vnode_pager_input_smlfs(vm_object_t object, vm_page_t m);
@@ -87,7 +86,6 @@ static boolean_t vnode_pager_haspage(vm_object_t, vm_pindex_t, int *, int *);
static vm_object_t vnode_pager_alloc(void *, vm_ooffset_t, vm_prot_t, vm_ooffset_t);
struct pagerops vnodepagerops = {
- .pgo_init = vnode_pager_init,
.pgo_alloc = vnode_pager_alloc,
.pgo_dealloc = vnode_pager_dealloc,
.pgo_getpages = vnode_pager_getpages,
@@ -97,13 +95,6 @@ struct pagerops vnodepagerops = {
int vnode_pbuf_freecnt;
-static void
-vnode_pager_init(void)
-{
-
- vnode_pbuf_freecnt = nswbuf / 2 + 1;
-}
-
/* Create the VM system backing object for this vnode */
int
vnode_create_vobject(struct vnode *vp, size_t isize, struct thread *td)
OpenPOWER on IntegriCloud