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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/tmpfs/tmp_vnops.c
          +++ new/usr/src/uts/common/fs/tmpfs/tmp_vnops.c
↓ open down ↓ 18 lines elided ↑ open up ↑
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   */
  26   26  
  27   27  /*
  28   28   * Copyright (c) 2012, Joyent, Inc. All rights reserved.
       29 + * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
  29   30   */
  30   31  
  31   32  #include <sys/types.h>
  32   33  #include <sys/param.h>
  33   34  #include <sys/t_lock.h>
  34   35  #include <sys/systm.h>
  35   36  #include <sys/sysmacros.h>
  36   37  #include <sys/user.h>
  37   38  #include <sys/time.h>
  38   39  #include <sys/vfs.h>
↓ open down ↓ 1763 lines elided ↑ open up ↑
1802 1803                                  /* XXX - may allocate mem w. write lock held */
1803 1804                                  (void) anon_set_ptr(tp->tn_anon, btop(toff),
1804 1805                                      anon_alloc(vp, toff), ANON_SLEEP);
1805 1806                                  tp->tn_nblocks++;
1806 1807                          }
1807 1808                  }
1808 1809                  rw_downgrade(&tp->tn_contents);
1809 1810          }
1810 1811  
1811 1812  
1812      -        if (len <= PAGESIZE)
1813      -                err = tmp_getapage(vp, (u_offset_t)off, len, protp, pl, plsz,
1814      -                    seg, addr, rw, cr);
1815      -        else
1816      -                err = pvn_getpages(tmp_getapage, vp, (u_offset_t)off, len,
1817      -                    protp, pl, plsz, seg, addr, rw, cr);
     1813 +        err = pvn_getpages(tmp_getapage, vp, (u_offset_t)off, len, protp,
     1814 +            pl, plsz, seg, addr, rw, cr);
1818 1815  
1819 1816          gethrestime(&now);
1820 1817          tp->tn_atime = now;
1821 1818          if (rw == S_WRITE)
1822 1819                  tp->tn_mtime = now;
1823 1820  
1824 1821  out:
1825 1822          rw_exit(&tp->tn_contents);
1826 1823          return (err);
1827 1824  }
1828 1825  
1829 1826  /*
1830      - * Called from pvn_getpages or swap_getpage to get a particular page.
     1827 + * Called from pvn_getpages to get a particular page.
1831 1828   */
1832 1829  /*ARGSUSED*/
1833 1830  static int
1834 1831  tmp_getapage(
1835 1832          struct vnode *vp,
1836 1833          u_offset_t off,
1837 1834          size_t len,
1838 1835          uint_t *protp,
1839 1836          page_t *pl[],
1840 1837          size_t plsz,
↓ open down ↓ 617 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX