1. 01 2月, 2012 4 次提交
  2. 13 1月, 2012 2 次提交
    • M
      mm: compaction: introduce sync-light migration for use by compaction · a6bc32b8
      Mel Gorman 提交于
      This patch adds a lightweight sync migrate operation MIGRATE_SYNC_LIGHT
      mode that avoids writing back pages to backing storage.  Async compaction
      maps to MIGRATE_ASYNC while sync compaction maps to MIGRATE_SYNC_LIGHT.
      For other migrate_pages users such as memory hotplug, MIGRATE_SYNC is
      used.
      
      This avoids sync compaction stalling for an excessive length of time,
      particularly when copying files to a USB stick where there might be a
      large number of dirty pages backed by a filesystem that does not support
      ->writepages.
      
      [aarcange@redhat.com: This patch is heavily based on Andrea's work]
      [akpm@linux-foundation.org: fix fs/nfs/write.c build]
      [akpm@linux-foundation.org: fix fs/btrfs/disk-io.c build]
      Signed-off-by: NMel Gorman <mgorman@suse.de>
      Reviewed-by: NRik van Riel <riel@redhat.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Minchan Kim <minchan.kim@gmail.com>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Jan Kara <jack@suse.cz>
      Cc: Andy Isaacson <adi@hexapodia.org>
      Cc: Nai Xia <nai.xia@gmail.com>
      Cc: Johannes Weiner <jweiner@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a6bc32b8
    • M
      mm: compaction: determine if dirty pages can be migrated without blocking within ->migratepage · b969c4ab
      Mel Gorman 提交于
      Asynchronous compaction is used when allocating transparent hugepages to
      avoid blocking for long periods of time.  Due to reports of stalling,
      there was a debate on disabling synchronous compaction but this severely
      impacted allocation success rates.  Part of the reason was that many dirty
      pages are skipped in asynchronous compaction by the following check;
      
      	if (PageDirty(page) && !sync &&
      		mapping->a_ops->migratepage != migrate_page)
      			rc = -EBUSY;
      
      This skips over all mapping aops using buffer_migrate_page() even though
      it is possible to migrate some of these pages without blocking.  This
      patch updates the ->migratepage callback with a "sync" parameter.  It is
      the responsibility of the callback to fail gracefully if migration would
      block.
      Signed-off-by: NMel Gorman <mgorman@suse.de>
      Reviewed-by: NRik van Riel <riel@redhat.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Minchan Kim <minchan.kim@gmail.com>
      Cc: Dave Jones <davej@redhat.com>
      Cc: Jan Kara <jack@suse.cz>
      Cc: Andy Isaacson <adi@hexapodia.org>
      Cc: Nai Xia <nai.xia@gmail.com>
      Cc: Johannes Weiner <jweiner@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b969c4ab
  3. 06 1月, 2012 1 次提交
    • T
      NFS: Remove pNFS bloat from the generic write path · e2fecb21
      Trond Myklebust 提交于
      We have no business doing any this in the standard write release path.
      Get rid of it, and put it in the pNFS layer.
      
      Also, while we're at it, get rid of the completely bogus unlock/relock
      semantics that were present in nfs_writeback_release_full(). It is
      not only unnecessary, but actually dangerous to release the write lock
      just in order to take it again in nfs_page_async_flush(). Better just
      to open code the pgio operations in a pnfs helper.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      e2fecb21
  4. 11 11月, 2011 1 次提交
  5. 20 10月, 2011 1 次提交
  6. 15 7月, 2011 3 次提交
  7. 13 7月, 2011 2 次提交
  8. 15 6月, 2011 1 次提交
  9. 30 5月, 2011 1 次提交
  10. 25 5月, 2011 1 次提交
  11. 25 3月, 2011 2 次提交
  12. 24 3月, 2011 1 次提交
  13. 17 3月, 2011 3 次提交
  14. 12 3月, 2011 5 次提交
  15. 26 1月, 2011 1 次提交
  16. 16 1月, 2011 1 次提交
  17. 07 1月, 2011 2 次提交
    • A
      NFS refactor nfs_find_client and reference client across callback processing · c36fca52
      Andy Adamson 提交于
      Fixes a bug where the nfs_client could be freed during callback processing.
      Refactor nfs_find_client to use minorversion specific means to locate the
      correct nfs_client structure.
      
      In the NFS layer, V4.0 clients are found using the callback_ident field in the
      CB_COMPOUND header.  V4.1 clients are found using the sessionID in the
      CB_SEQUENCE operation which is also compared against the sessionID associated
      with the back channel thread after a successful CREATE_SESSION.
      
      Each of these methods finds the one an only nfs_client associated
      with the incoming callback request - so nfs_find_client_next is not needed.
      
      In the RPC layer, the pg_authenticate call needs to find the nfs_client. For
      the v4.0 callback service, the callback identifier has not been decoded so a
      search by address, version, and minorversion is used.  The sessionid for the
      sessions based callback service has (usually) not been set for the
      pg_authenticate on a CB_NULL call which can be sent prior to the return
      of a CREATE_SESSION call, so the sessionid associated with the back channel
      thread is not used to find the client in pg_authenticate for CB_NULL calls.
      
      Pass the referenced nfs_client to each CB_COMPOUND operation being proceesed
      via the new cb_process_state structure. The reference is held across
      cb_compound processing.
      
      Use the new cb_process_state struct to move the NFS4ERR_RETRY_UNCACHED_REP
      processing from process_op into nfs4_callback_sequence where it belongs.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      c36fca52
    • A
      NFS implement v4.0 callback_ident · f4eecd5d
      Andy Adamson 提交于
      Use the small id to pointer translator service to provide a unique callback
      identifier per SETCLIENTID call used to identify the v4.0 callback service
      associated with the clientid.
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      f4eecd5d
  18. 17 12月, 2010 3 次提交
  19. 23 11月, 2010 1 次提交
  20. 24 10月, 2010 3 次提交
    • B
      NFS: Readdir plus in v4 · 82f2e547
      Bryan Schumaker 提交于
      By requsting more attributes during a readdir, we can mimic the readdir plus
      operation that was in NFSv3.
      
      To test, I ran the command `ls -lU --color=none` on directories with various
      numbers of files.  Without readdir plus, I see this:
      
      n files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000
      --------+-----------+-----------+-----------+-----------+----------
      real    | 0m00.153s | 0m00.589s | 0m05.601s | 0m56.691s | 9m59.128s
      user    | 0m00.007s | 0m00.007s | 0m00.077s | 0m00.703s | 0m06.800s
      sys     | 0m00.010s | 0m00.070s | 0m00.633s | 0m06.423s | 1m10.005s
      access  | 3         | 1         | 1         | 4         | 31
      getattr | 2         | 1         | 1         | 1         | 1
      lookup  | 104       | 1,003     | 10,003    | 100,003   | 1,000,003
      readdir | 2         | 16        | 158       | 1,575     | 15,749
      total   | 111       | 1,021     | 10,163    | 101,583   | 1,015,784
      
      With readdir plus enabled, I see this:
      
      n files |    100    |   1,000   |  10,000   |  100,000  | 1,000,000
      --------+-----------+-----------+-----------+-----------+----------
      real    | 0m00.115s | 0m00.206s | 0m01.079s | 0m12.521s | 2m07.528s
      user    | 0m00.003s | 0m00.003s | 0m00.040s | 0m00.290s | 0m03.296s
      sys     | 0m00.007s | 0m00.020s | 0m00.120s | 0m01.357s | 0m17.556s
      access  | 3         | 1         | 1         | 1         | 7
      getattr | 2         | 1         | 1         | 1         | 1
      lookup  | 4         | 3         | 3         | 3         | 3
      readdir | 6         | 62        | 630       | 6,300     | 62,993
      total   | 15        | 67        | 635       | 6,305     | 63,004
      
      Readdir plus disabled has about a 16x increase in the number of rpc calls and
      is 4 - 5 times slower on large directories.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      82f2e547
    • B
      NFS: readdir with vmapped pages · 56e4ebf8
      Bryan Schumaker 提交于
      We can use vmapped pages to read more information from the network at once.
      This will reduce the number of calls needed to complete a readdir.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      [trondmy: Added #include for linux/vmalloc.h> in fs/nfs/dir.c]
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      56e4ebf8
    • B
      NFS: decode_dirent should use an xdr_stream · babddc72
      Bryan Schumaker 提交于
      Convert nfs*xdr.c to use an xdr stream in decode_dirent.  This will prevent a
      kernel oops that has been occuring when reading a vmapped page.
      Signed-off-by: NBryan Schumaker <bjschuma@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      babddc72
  21. 10 8月, 2010 1 次提交