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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/swapfs/swap_vnops.c
          +++ new/usr/src/uts/common/fs/swapfs/swap_vnops.c
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 1991, 2010, Oracle and/or its affiliates. All rights reserved.
       23 + * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  23   24   */
  24   25  
  25   26  #include <sys/types.h>
  26   27  #include <sys/param.h>
  27   28  #include <sys/systm.h>
  28   29  #include <sys/buf.h>
  29   30  #include <sys/cred.h>
  30   31  #include <sys/errno.h>
  31   32  #include <sys/vnode.h>
  32   33  #include <sys/vfs_opreg.h>
↓ open down ↓ 76 lines elided ↑ open up ↑
 109  110          size_t len,
 110  111          uint_t *protp,
 111  112          page_t *pl[],
 112  113          size_t plsz,
 113  114          struct seg *seg,
 114  115          caddr_t addr,
 115  116          enum seg_rw rw,
 116  117          struct cred *cr,
 117  118          caller_context_t *ct)
 118  119  {
 119      -        int err;
 120      -
 121  120          SWAPFS_PRINT(SWAP_VOPS, "swap_getpage: vp %p, off %llx, len %lx\n",
 122  121              (void *)vp, off, len, 0, 0);
 123  122  
 124  123          TRACE_3(TR_FAC_SWAPFS, TR_SWAPFS_GETPAGE,
 125  124              "swapfs getpage:vp %p off %llx len %ld",
 126  125              (void *)vp, off, len);
 127  126  
 128      -        if (len <= PAGESIZE) {
 129      -                err = swap_getapage(vp, (u_offset_t)off, len, protp, pl, plsz,
 130      -                    seg, addr, rw, cr);
 131      -        } else {
 132      -                err = pvn_getpages(swap_getapage, vp, (u_offset_t)off, len,
 133      -                    protp, pl, plsz, seg, addr, rw, cr);
 134      -        }
 135      -
 136      -        return (err);
      127 +        return (pvn_getpages(swap_getapage, vp, (u_offset_t)off, len, protp,
      128 +            pl, plsz, seg, addr, rw, cr));
 137  129  }
 138  130  
 139  131  /*
 140      - * Called from pvn_getpages or swap_getpage to get a particular page.
      132 + * Called from pvn_getpages to get a particular page.
 141  133   */
 142  134  /*ARGSUSED*/
 143  135  static int
 144  136  swap_getapage(
 145  137          struct vnode *vp,
 146  138          u_offset_t off,
 147  139          size_t len,
 148  140          uint_t *protp,
 149  141          page_t *pl[],
 150  142          size_t plsz,
↓ open down ↓ 640 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX