Module Name:    src
Committed By:   yamt
Date:           Wed Jan 25 00:41:37 UTC 2012

Modified Files:
        src/sys/fs/tmpfs [yamt-pagecache]: tmpfs_vnops.c
        src/sys/nfs [yamt-pagecache]: nfs_bio.c
        src/sys/ufs/ufs [yamt-pagecache]: ufs_readwrite.c
        src/sys/uvm [yamt-pagecache]: uvm_loan.c uvm_loan.h

Log Message:
uvm_loanabj: take an access pattern hint.


To generate a diff of this commit:
cvs rdiff -u -r1.92.2.1 -r1.92.2.2 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.188.2.2 -r1.188.2.3 src/sys/nfs/nfs_bio.c
cvs rdiff -u -r1.99.2.1 -r1.99.2.2 src/sys/ufs/ufs/ufs_readwrite.c
cvs rdiff -u -r1.81.2.12 -r1.81.2.13 src/sys/uvm/uvm_loan.c
cvs rdiff -u -r1.17.4.1 -r1.17.4.2 src/sys/uvm/uvm_loan.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/fs/tmpfs/tmpfs_vnops.c
diff -u src/sys/fs/tmpfs/tmpfs_vnops.c:1.92.2.1 src/sys/fs/tmpfs/tmpfs_vnops.c:1.92.2.2
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.92.2.1	Wed Jan  4 16:43:37 2012
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Wed Jan 25 00:41:37 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.92.2.1 2012/01/04 16:43:37 yamt Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.92.2.2 2012/01/25 00:41:37 yamt Exp $	*/
 
 /*
  * Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.92.2.1 2012/01/04 16:43:37 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.92.2.2 2012/01/25 00:41:37 yamt Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -545,6 +545,7 @@ tmpfs_read(void *v)
 	const int ioflag = ap->a_ioflag;
 	tmpfs_node_t *node;
 	struct uvm_object *uobj;
+	const int advice = IO_ADV_DECODE(ioflag);
 	int error;
 
 	KASSERT(VOP_ISLOCKED(vp));
@@ -562,7 +563,7 @@ tmpfs_read(void *v)
 	error = 0;
 
 	if (uio->uio_offset + uio->uio_resid <= node->tn_size) {
-		uvm_loanobj(&vp->v_uobj, uio);
+		uvm_loanobj(&vp->v_uobj, uio, advice);
 	}
 	while (error == 0 && uio->uio_resid > 0) {
 		vsize_t len;
@@ -574,7 +575,7 @@ tmpfs_read(void *v)
 		if (len == 0) {
 			break;
 		}
-		error = ubc_uiomove(uobj, uio, len, IO_ADV_DECODE(ioflag),
+		error = ubc_uiomove(uobj, uio, len, advice,
 		    UBC_READ | UBC_PARTIALOK | UBC_UNMAP_FLAG(vp));
 	}
 	return error;

Index: src/sys/nfs/nfs_bio.c
diff -u src/sys/nfs/nfs_bio.c:1.188.2.2 src/sys/nfs/nfs_bio.c:1.188.2.3
--- src/sys/nfs/nfs_bio.c:1.188.2.2	Wed Jan  4 16:43:37 2012
+++ src/sys/nfs/nfs_bio.c	Wed Jan 25 00:41:36 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_bio.c,v 1.188.2.2 2012/01/04 16:43:37 yamt Exp $	*/
+/*	$NetBSD: nfs_bio.c,v 1.188.2.3 2012/01/25 00:41:36 yamt Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_bio.c,v 1.188.2.2 2012/01/04 16:43:37 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_bio.c,v 1.188.2.3 2012/01/25 00:41:36 yamt Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_nfs.h"
@@ -90,7 +90,6 @@ nfs_bioread(struct vnode *vp, struct uio
 	int enough = 0;
 	struct dirent *dp, *pdp, *edp, *ep;
 	off_t curoff = 0;
-	int advice;
 	struct lwp *l = curlwp;
 
 #ifdef DIAGNOSTIC
@@ -135,6 +134,8 @@ nfs_bioread(struct vnode *vp, struct uio
 	}
 
 	do {
+	    int advice;
+
 	    /*
 	     * Don't cache symlinks.
 	     */
@@ -148,7 +149,7 @@ nfs_bioread(struct vnode *vp, struct uio
 
 		advice = IO_ADV_DECODE(ioflag);
 		if (uio->uio_offset + uio->uio_resid <= np->n_size) {
-			uvm_loanobj(&vp->v_uobj, uio);
+			uvm_loanobj(&vp->v_uobj, uio, advice);
 		}
 		while (uio->uio_resid > 0) {
 			vsize_t bytelen;

Index: src/sys/ufs/ufs/ufs_readwrite.c
diff -u src/sys/ufs/ufs/ufs_readwrite.c:1.99.2.1 src/sys/ufs/ufs/ufs_readwrite.c:1.99.2.2
--- src/sys/ufs/ufs/ufs_readwrite.c:1.99.2.1	Wed Jan  4 16:43:37 2012
+++ src/sys/ufs/ufs/ufs_readwrite.c	Wed Jan 25 00:41:36 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ufs_readwrite.c,v 1.99.2.1 2012/01/04 16:43:37 yamt Exp $	*/
+/*	$NetBSD: ufs_readwrite.c,v 1.99.2.2 2012/01/25 00:41:36 yamt Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: ufs_readwrite.c,v 1.99.2.1 2012/01/04 16:43:37 yamt Exp $");
+__KERNEL_RCSID(1, "$NetBSD: ufs_readwrite.c,v 1.99.2.2 2012/01/25 00:41:36 yamt Exp $");
 
 #ifdef LFS_READWRITE
 #define	FS			struct lfs
@@ -124,7 +124,7 @@ READ(void *v)
 		const int advice = IO_ADV_DECODE(ap->a_ioflag);
 
 		if (uio->uio_offset + uio->uio_resid <= vp->v_size) {
-			uvm_loanobj(&vp->v_uobj, uio);
+			uvm_loanobj(&vp->v_uobj, uio, advice);
 		}
 		while (uio->uio_resid > 0) {
 			if (ioflag & IO_DIRECT) {

Index: src/sys/uvm/uvm_loan.c
diff -u src/sys/uvm/uvm_loan.c:1.81.2.12 src/sys/uvm/uvm_loan.c:1.81.2.13
--- src/sys/uvm/uvm_loan.c:1.81.2.12	Wed Jan 18 02:09:06 2012
+++ src/sys/uvm/uvm_loan.c	Wed Jan 25 00:41:36 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_loan.c,v 1.81.2.12 2012/01/18 02:09:06 yamt Exp $	*/
+/*	$NetBSD: uvm_loan.c,v 1.81.2.13 2012/01/25 00:41:36 yamt Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_loan.c,v 1.81.2.12 2012/01/18 02:09:06 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_loan.c,v 1.81.2.13 2012/01/25 00:41:36 yamt Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -110,7 +110,7 @@ static void	uvm_unloananon(struct vm_ano
 static void	uvm_unloanpage(struct vm_page **, int);
 static int	uvm_loanpage(struct vm_page **, int);
 static int	uvm_loanobj_read(struct vm_map *, vaddr_t, size_t,
-			struct uvm_object *, off_t);
+			struct uvm_object *, off_t, int);
 
 
 /*
@@ -1296,7 +1296,7 @@ uvm_loanbreak_anon(struct vm_anon *anon)
 }
 
 int
-uvm_loanobj(struct uvm_object *uobj, struct uio *uio)
+uvm_loanobj(struct uvm_object *uobj, struct uio *uio, int advice)
 {
 	struct iovec *iov;
 	struct vm_map *map;
@@ -1347,7 +1347,7 @@ uvm_loanobj(struct uvm_object *uobj, str
 			va = (vaddr_t)iov->iov_base;
 			len = MIN(iov->iov_len, MAXPHYS);
 			error = uvm_loanobj_read(map, va, len, uobj,
-						 uio->uio_offset);
+						 uio->uio_offset, advice);
 			if (error) {
 				goto out;
 			}
@@ -1374,7 +1374,7 @@ out:
 
 static int
 uvm_loanobj_read(struct vm_map *map, vaddr_t va, size_t len,
-    struct uvm_object *uobj, off_t off)
+    struct uvm_object *uobj, off_t off, int advice)
 {
 	unsigned int npages = len >> PAGE_SHIFT;
 	struct vm_page *pgs[MAXPAGES];
@@ -1492,7 +1492,7 @@ retry:
 	memset(pgs, 0, sizeof(pgs));
 	mutex_enter(uobj->vmobjlock);
 	error = (*uobj->pgops->pgo_get)(uobj, off, pgs, &npages, 0,
-	    VM_PROT_READ, 0, PGO_SYNCIO);
+	    VM_PROT_READ, advice, PGO_SYNCIO);
 	if (error) {
 		UVMHIST_LOG(ubchist, "getpages -> %d", error,0,0,0);
 		return error;

Index: src/sys/uvm/uvm_loan.h
diff -u src/sys/uvm/uvm_loan.h:1.17.4.1 src/sys/uvm/uvm_loan.h:1.17.4.2
--- src/sys/uvm/uvm_loan.h:1.17.4.1	Mon Dec 26 16:03:11 2011
+++ src/sys/uvm/uvm_loan.h	Wed Jan 25 00:41:36 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_loan.h,v 1.17.4.1 2011/12/26 16:03:11 yamt Exp $	*/
+/*	$NetBSD: uvm_loan.h,v 1.17.4.2 2012/01/25 00:41:36 yamt Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -50,7 +50,7 @@ int uvm_loanuobjpages(struct uvm_object 
     struct vm_page **);
 struct vm_page *uvm_loanbreak(struct vm_page *);
 int uvm_loanbreak_anon(struct vm_anon *);
-int uvm_loanobj(struct uvm_object *, struct uio *);
+int uvm_loanobj(struct uvm_object *, struct uio *, int);
 void uvm_loan_resolve_orphan(struct vm_page *, bool);
 
 #endif /* _KERNEL */

Reply via email to