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