summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/nfsclient/nfs_clbio.c17
-rw-r--r--sys/fs/nwfs/nwfs_io.c17
-rw-r--r--sys/fs/smbfs/smbfs_io.c17
3 files changed, 27 insertions, 24 deletions
diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c
index 0224e15..7d6fcab 100644
--- a/sys/fs/nfsclient/nfs_clbio.c
+++ b/sys/fs/nfsclient/nfs_clbio.c
@@ -196,9 +196,6 @@ ncl_getpages(struct vop_getpages_args *ap)
nextoff = toff + PAGE_SIZE;
m = pages[i];
- vm_page_lock(m);
- vm_page_lock_queues();
-
if (nextoff <= size) {
/*
* Read operation filled an entire page
@@ -236,18 +233,22 @@ ncl_getpages(struct vop_getpages_args *ap)
* now tell them that it is ok to use.
*/
if (!error) {
- if (m->oflags & VPO_WANTED)
+ if (m->oflags & VPO_WANTED) {
+ vm_page_lock(m);
vm_page_activate(m);
- else
+ vm_page_unlock(m);
+ } else {
+ vm_page_lock(m);
vm_page_deactivate(m);
+ vm_page_unlock(m);
+ }
vm_page_wakeup(m);
} else {
+ vm_page_lock(m);
vm_page_free(m);
+ vm_page_unlock(m);
}
}
-
- vm_page_unlock_queues();
- vm_page_unlock(m);
}
VM_OBJECT_UNLOCK(object);
return (0);
diff --git a/sys/fs/nwfs/nwfs_io.c b/sys/fs/nwfs/nwfs_io.c
index 1252014..0bd7dc3 100644
--- a/sys/fs/nwfs/nwfs_io.c
+++ b/sys/fs/nwfs/nwfs_io.c
@@ -446,9 +446,6 @@ nwfs_getpages(ap)
nextoff = toff + PAGE_SIZE;
m = pages[i];
- vm_page_lock(m);
- vm_page_lock_queues();
-
if (nextoff <= size) {
m->valid = VM_PAGE_BITS_ALL;
KASSERT(m->dirty == 0,
@@ -474,18 +471,22 @@ nwfs_getpages(ap)
* now tell them that it is ok to use.
*/
if (!error) {
- if (m->oflags & VPO_WANTED)
+ if (m->oflags & VPO_WANTED) {
+ vm_page_lock(m);
vm_page_activate(m);
- else
+ vm_page_unlock(m);
+ } else {
+ vm_page_lock(m);
vm_page_deactivate(m);
+ vm_page_unlock(m);
+ }
vm_page_wakeup(m);
} else {
+ vm_page_lock(m);
vm_page_free(m);
+ vm_page_unlock(m);
}
}
-
- vm_page_unlock_queues();
- vm_page_unlock(m);
}
VM_OBJECT_UNLOCK(object);
return 0;
diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c
index 1ffcde9..9becfdd 100644
--- a/sys/fs/smbfs/smbfs_io.c
+++ b/sys/fs/smbfs/smbfs_io.c
@@ -497,9 +497,6 @@ smbfs_getpages(ap)
nextoff = toff + PAGE_SIZE;
m = pages[i];
- vm_page_lock(m);
- vm_page_lock_queues();
-
if (nextoff <= size) {
/*
* Read operation filled an entire page
@@ -538,18 +535,22 @@ smbfs_getpages(ap)
* now tell them that it is ok to use.
*/
if (!error) {
- if (m->oflags & VPO_WANTED)
+ if (m->oflags & VPO_WANTED) {
+ vm_page_lock(m);
vm_page_activate(m);
- else
+ vm_page_unlock(m);
+ } else {
+ vm_page_lock(m);
vm_page_deactivate(m);
+ vm_page_unlock(m);
+ }
vm_page_wakeup(m);
} else {
+ vm_page_lock(m);
vm_page_free(m);
+ vm_page_unlock(m);
}
}
-
- vm_page_unlock_queues();
- vm_page_unlock(m);
}
VM_OBJECT_UNLOCK(object);
return 0;
OpenPOWER on IntegriCloud