summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-08-04 18:16:43 +0000
committerkib <kib@FreeBSD.org>2012-08-04 18:16:43 +0000
commit4259905d3171a4cdd087436ff1c17eed74830b60 (patch)
tree6ac153a747b185932191fda117e5d5ee749c7fd6 /sys/nfsclient
parent92640c3632022e41b9cbf19c91dc943056036413 (diff)
downloadFreeBSD-src-4259905d3171a4cdd087436ff1c17eed74830b60.zip
FreeBSD-src-4259905d3171a4cdd087436ff1c17eed74830b60.tar.gz
Reduce code duplication and exposure of direct access to struct
vm_page oflags by providing helper function vm_page_readahead_finish(), which handles completed reads for pages with indexes other then the requested one, for VOP_GETPAGES(). Reviewed by: alc MFC after: 1 week
Diffstat (limited to 'sys/nfsclient')
-rw-r--r--sys/nfsclient/nfs_bio.c32
1 files changed, 2 insertions, 30 deletions
diff --git a/sys/nfsclient/nfs_bio.c b/sys/nfsclient/nfs_bio.c
index 2ffd822..568f990 100644
--- a/sys/nfsclient/nfs_bio.c
+++ b/sys/nfsclient/nfs_bio.c
@@ -217,36 +217,8 @@ nfs_getpages(struct vop_getpages_args *ap)
*/
;
}
- if (i != ap->a_reqpage) {
- /*
- * Whether or not to leave the page activated is up in
- * the air, but we should put the page on a page queue
- * somewhere (it already is in the object). Result:
- * It appears that emperical results show that
- * deactivating pages is best.
- */
-
- /*
- * Just in case someone was asking for this page we
- * now tell them that it is ok to use.
- */
- if (!error) {
- if (m->oflags & VPO_WANTED) {
- vm_page_lock(m);
- vm_page_activate(m);
- 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);
- }
- }
+ if (i != ap->a_reqpage)
+ vm_page_readahead_finish(m, error);
}
VM_OBJECT_UNLOCK(object);
return (0);
OpenPOWER on IntegriCloud