diff options
author | jhb <jhb@FreeBSD.org> | 2013-08-09 21:14:55 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2013-08-09 21:14:55 +0000 |
commit | 8f3909e991e98b9e98910115153e0f6eff39861c (patch) | |
tree | 4aa3bb461716b15b74cbee3d54f27cb7f69b7e5b /sys/vm | |
parent | 8c0b13ef1fb3598031bf5b84cb8391e2c3dbef35 (diff) | |
download | FreeBSD-src-8f3909e991e98b9e98910115153e0f6eff39861c.zip FreeBSD-src-8f3909e991e98b9e98910115153e0f6eff39861c.tar.gz |
Revert the addition of VPO_BUSY and instead update vm_page_replace() to
properly unbusy the page.
Submitted by: alc
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_page.c | 12 | ||||
-rw-r--r-- | sys/vm/vm_page.h | 1 |
2 files changed, 6 insertions, 7 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 42adc11..39f16c0 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -1174,6 +1174,8 @@ vm_page_prev(vm_page_t m) /* * Uses the page mnew as a replacement for an existing page at index * pindex which must be already present in the object. + * + * The existing page must not be on a paging queue. */ vm_page_t vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex) @@ -1198,16 +1200,14 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex) mnew->object = object; mnew->pindex = pindex; mold = vm_radix_replace(&object->rtree, mnew, pindex); + KASSERT(mold->queue == PQ_NONE, + ("vm_page_replace: mold is on a paging queue")); /* Detach the old page from the resident tailq. */ TAILQ_REMOVE(&object->memq, mold, listq); - vm_page_lock(mold); - if (mold->oflags & VPO_BUSY) { - mold->oflags &= ~VPO_BUSY; - vm_page_flash(mold); - } + mold->object = NULL; - vm_page_unlock(mold); + vm_page_xunbusy(mold); /* Insert the new page in the resident tailq. */ if (mpred != NULL) diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h index a50c409..01c4967 100644 --- a/sys/vm/vm_page.h +++ b/sys/vm/vm_page.h @@ -171,7 +171,6 @@ struct vm_page { #define VPO_UNMANAGED 0x04 /* no PV management for page */ #define VPO_SWAPINPROG 0x08 /* swap I/O in progress on page */ #define VPO_NOSYNC 0x10 /* do not collect for syncer */ -#define VPO_BUSY 0x20 /* TBD */ /* * Busy page implementation details. |