1. 11 3月, 2012 1 次提交
  2. 01 2月, 2012 1 次提交
  3. 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
  4. 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
  5. 03 11月, 2011 1 次提交
  6. 01 11月, 2011 1 次提交
  7. 20 10月, 2011 2 次提交
  8. 19 10月, 2011 5 次提交
  9. 14 9月, 2011 1 次提交
  10. 20 7月, 2011 1 次提交
  11. 15 7月, 2011 6 次提交
  12. 13 7月, 2011 6 次提交
  13. 29 6月, 2011 1 次提交
  14. 08 6月, 2011 1 次提交
  15. 30 5月, 2011 2 次提交
    • B
      NFSv4.1: unify pnfs_pageio_init functions · dfed206b
      Benny Halevy 提交于
      Use common code for pnfs_pageio_init_{read,write} and use
      a common generic pg_test function.
      
      Note that this function always assumes the the layout driver's
      pg_test method is implemented.
      
      [Fix BUG]
      Signed-off-by: NBoaz Harrosh <bharrosh@panasas.com>
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      dfed206b
    • B
      pnfs: Use byte-range for layoutget · fb3296eb
      Benny Halevy 提交于
      Add offset and count parameters to pnfs_update_layout and use them to get
      the layout in the pageio path.
      
      Order cache layout segments in the following order:
      * offset (ascending)
      * length (descending)
      * iomode (RW before READ)
      
      Test byte range against the layout segment in use in pnfs_{read,write}_pg_test
      so not to coalesce pages not using the same layout segment.
      
      [fix lseg ordering]
      [clean up pnfs_find_lseg lseg arg]
      [remove unnecessary FIXME]
      [fix ordering in pnfs_insert_layout]
      [clean up pnfs_insert_layout]
      Signed-off-by: NBenny Halevy <bhalevy@panasas.com>
      fb3296eb
  16. 12 5月, 2011 1 次提交
  17. 13 4月, 2011 3 次提交
  18. 27 3月, 2011 1 次提交
    • T
      NFS: Fix a hang in the writeback path · 4d65c520
      Trond Myklebust 提交于
      Now that the inode scalability patches have been merged, it is no longer
      safe to call igrab() under the inode->i_lock.
      Now that we no longer call nfs_clear_request() until the nfs_page is
      being freed, we know that we are always holding a reference to the
      nfs_open_context, which again holds a reference to the path, and so
      the inode cannot be freed until the last nfs_page has been removed
      from the radix tree and freed.
      
      We can therefore skip the igrab()/iput() altogether.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      4d65c520
  19. 25 3月, 2011 1 次提交
  20. 24 3月, 2011 2 次提交