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);