summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/fs/tmpfs/tmpfs_vnops.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index 53f4882..cb27854 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -493,10 +493,12 @@ tmpfs_nocacheread(vm_object_t tobj, vm_pindex_t idx,
VM_OBJECT_WLOCK(tobj);
vm_page_lock(m);
vm_page_unhold(m);
- vm_page_deactivate(m);
- /* Requeue to maintain LRU ordering. */
- if (m->queue != PQ_NONE)
+ if (m->queue == PQ_NONE) {
+ vm_page_deactivate(m);
+ } else {
+ /* Requeue to maintain LRU ordering. */
vm_page_requeue(m);
+ }
vm_page_unlock(m);
VM_OBJECT_WUNLOCK(tobj);
@@ -609,10 +611,12 @@ tmpfs_mappedwrite(vm_object_t tobj, size_t len, struct uio *uio)
vm_page_dirty(tpg);
vm_page_lock(tpg);
vm_page_unhold(tpg);
- vm_page_deactivate(tpg);
- /* Requeue to maintain LRU ordering. */
- if (tpg->queue != PQ_NONE)
+ if (tpg->queue == PQ_NONE) {
+ vm_page_deactivate(tpg);
+ } else {
+ /* Requeue to maintain LRU ordering. */
vm_page_requeue(tpg);
+ }
vm_page_unlock(tpg);
VM_OBJECT_WUNLOCK(tobj);
OpenPOWER on IntegriCloud