Module Name:    src
Committed By:   yamt
Date:           Wed Jan  4 16:43: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

Log Message:
enable O->A loaning read for a few filesystems.


To generate a diff of this commit:
cvs rdiff -u -r1.92 -r1.92.2.1 src/sys/fs/tmpfs/tmpfs_vnops.c
cvs rdiff -u -r1.188.2.1 -r1.188.2.2 src/sys/nfs/nfs_bio.c
cvs rdiff -u -r1.99 -r1.99.2.1 src/sys/ufs/ufs/ufs_readwrite.c

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 src/sys/fs/tmpfs/tmpfs_vnops.c:1.92.2.1
--- src/sys/fs/tmpfs/tmpfs_vnops.c:1.92	Tue Sep 27 01:32:21 2011
+++ src/sys/fs/tmpfs/tmpfs_vnops.c	Wed Jan  4 16:43:37 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: tmpfs_vnops.c,v 1.92 2011/09/27 01:32:21 christos Exp $	*/
+/*	$NetBSD: tmpfs_vnops.c,v 1.92.2.1 2012/01/04 16:43: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 2011/09/27 01:32:21 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_vnops.c,v 1.92.2.1 2012/01/04 16:43:37 yamt Exp $");
 
 #include <sys/param.h>
 #include <sys/dirent.h>
@@ -561,6 +561,9 @@ tmpfs_read(void *v)
 	uobj = node->tn_spec.tn_reg.tn_aobj;
 	error = 0;
 
+	if (uio->uio_offset + uio->uio_resid <= node->tn_size) {
+		uvm_loanobj(&vp->v_uobj, uio);
+	}
 	while (error == 0 && uio->uio_resid > 0) {
 		vsize_t len;
 

Index: src/sys/nfs/nfs_bio.c
diff -u src/sys/nfs/nfs_bio.c:1.188.2.1 src/sys/nfs/nfs_bio.c:1.188.2.2
--- src/sys/nfs/nfs_bio.c:1.188.2.1	Wed Nov  2 21:53:59 2011
+++ src/sys/nfs/nfs_bio.c	Wed Jan  4 16:43:37 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_bio.c,v 1.188.2.1 2011/11/02 21:53:59 yamt Exp $	*/
+/*	$NetBSD: nfs_bio.c,v 1.188.2.2 2012/01/04 16:43:37 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.1 2011/11/02 21:53:59 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_bio.c,v 1.188.2.2 2012/01/04 16:43:37 yamt Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_nfs.h"
@@ -147,7 +147,9 @@ nfs_bioread(struct vnode *vp, struct uio
 		nfsstats.biocache_reads++;
 
 		advice = IO_ADV_DECODE(ioflag);
-		error = 0;
+		if (uio->uio_offset + uio->uio_resid <= np->n_size) {
+			uvm_loanobj(&vp->v_uobj, uio);
+		}
 		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 src/sys/ufs/ufs/ufs_readwrite.c:1.99.2.1
--- src/sys/ufs/ufs/ufs_readwrite.c:1.99	Mon Jul 11 08:27:41 2011
+++ src/sys/ufs/ufs/ufs_readwrite.c	Wed Jan  4 16:43:37 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: ufs_readwrite.c,v 1.99 2011/07/11 08:27:41 hannken Exp $	*/
+/*	$NetBSD: ufs_readwrite.c,v 1.99.2.1 2012/01/04 16:43:37 yamt Exp $	*/
 
 /*-
  * Copyright (c) 1993
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: ufs_readwrite.c,v 1.99 2011/07/11 08:27:41 hannken Exp $");
+__KERNEL_RCSID(1, "$NetBSD: ufs_readwrite.c,v 1.99.2.1 2012/01/04 16:43:37 yamt Exp $");
 
 #ifdef LFS_READWRITE
 #define	FS			struct lfs
@@ -123,6 +123,9 @@ READ(void *v)
 	if (usepc) {
 		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);
+		}
 		while (uio->uio_resid > 0) {
 			if (ioflag & IO_DIRECT) {
 				genfs_directio(vp, uio, ioflag);

Reply via email to