Print this page
5382 pvn_getpages handles lengths <= PAGESIZE just fine

*** 25,34 **** --- 25,35 ---- * All rights reserved. */ /* * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright 2015 Nexenta Systems, Inc. All rights reserved. */ #include <sys/param.h> #include <sys/types.h> #include <sys/systm.h>
*** 3679,3695 **** return (EFAULT); /* beyond EOF */ } mutex_exit(&rp->r_statelock); ! if (len <= PAGESIZE) { ! error = nfs_getapage(vp, off, len, protp, pl, plsz, seg, addr, rw, cr); - } else { - error = pvn_getpages(nfs_getapage, vp, off, len, protp, - pl, plsz, seg, addr, rw, cr); - } switch (error) { case NFS_EOF: nfs_purge_caches(vp, NFS_NOPURGE_DNLC, cr); goto retry; --- 3680,3691 ---- return (EFAULT); /* beyond EOF */ } mutex_exit(&rp->r_statelock); ! error = pvn_getpages(nfs_getapage, vp, off, len, protp, pl, plsz, seg, addr, rw, cr); switch (error) { case NFS_EOF: nfs_purge_caches(vp, NFS_NOPURGE_DNLC, cr); goto retry;
*** 3699,3709 **** return (error); } /* ! * Called from pvn_getpages or nfs_getpage to get a particular page. */ /* ARGSUSED */ static int nfs_getapage(vnode_t *vp, u_offset_t off, size_t len, uint_t *protp, page_t *pl[], size_t plsz, struct seg *seg, caddr_t addr, --- 3695,3705 ---- return (error); } /* ! * Called from pvn_getpages to get a particular page. */ /* ARGSUSED */ static int nfs_getapage(vnode_t *vp, u_offset_t off, size_t len, uint_t *protp, page_t *pl[], size_t plsz, struct seg *seg, caddr_t addr,