Print this page
5382 pvn_getpages handles lengths <= PAGESIZE just fine
@@ -18,10 +18,11 @@
*
* CDDL HEADER END
*/
/*
* Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
*/
#include <sys/param.h>
#include <sys/types.h>
#include <sys/systm.h>
@@ -7383,17 +7384,12 @@
if (seg != segkmap) {
error = EFAULT;
break;
}
}
- if (len <= PAGESIZE)
- error = cachefs_getapage(vp, (u_offset_t)off, len,
- protp, pl, plsz, seg, addr, rw, cr);
- else
- error = pvn_getpages(cachefs_getapage, vp,
- (u_offset_t)off, len, protp, pl, plsz, seg, addr,
- rw, cr);
+ error = pvn_getpages(cachefs_getapage, vp, (u_offset_t)off,
+ len, protp, pl, plsz, seg, addr, rw, cr);
if (error == 0)
break;
if (((cp->c_flags & CN_NOCACHE) && (error == ENOSPC)) ||
error == EAGAIN) {
@@ -7409,20 +7405,13 @@
continue;
}
} else {
if (CFS_TIMEOUT(fscp, error)) {
if (cachefs_cd_access_miss(fscp)) {
- if (len <= PAGESIZE)
- error = cachefs_getapage_back(
- vp, (u_offset_t)off,
- len, protp, pl,
- plsz, seg, addr, rw, cr);
- else
error = pvn_getpages(
cachefs_getapage_back, vp,
- (u_offset_t)off, len,
- protp, pl,
+ (u_offset_t)off, len, protp, pl,
plsz, seg, addr, rw, cr);
if (!CFS_TIMEOUT(fscp, error) &&
(error != EAGAIN))
break;
delay(5*hz);
@@ -7496,11 +7485,11 @@
return (error);
}
/*
- * Called from pvn_getpages or cachefs_getpage to get a particular page.
+ * Called from pvn_getpages to get a particular page.
*/
/*ARGSUSED*/
static int
cachefs_getapage(struct vnode *vp, u_offset_t off, size_t len, uint_t *protp,
struct page *pl[], size_t plsz, struct seg *seg, caddr_t addr,