1. 21 4月, 2017 5 次提交
  2. 02 12月, 2016 2 次提交
  3. 08 10月, 2016 1 次提交
  4. 18 5月, 2016 1 次提交
  5. 05 4月, 2016 1 次提交
    • K
      mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros · 09cbfeaf
      Kirill A. Shutemov 提交于
      PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time
      ago with promise that one day it will be possible to implement page
      cache with bigger chunks than PAGE_SIZE.
      
      This promise never materialized.  And unlikely will.
      
      We have many places where PAGE_CACHE_SIZE assumed to be equal to
      PAGE_SIZE.  And it's constant source of confusion on whether
      PAGE_CACHE_* or PAGE_* constant should be used in a particular case,
      especially on the border between fs and mm.
      
      Global switching to PAGE_CACHE_SIZE != PAGE_SIZE would cause to much
      breakage to be doable.
      
      Let's stop pretending that pages in page cache are special.  They are
      not.
      
      The changes are pretty straight-forward:
      
       - <foo> << (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;
      
       - <foo> >> (PAGE_CACHE_SHIFT - PAGE_SHIFT) -> <foo>;
      
       - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -> PAGE_{SIZE,SHIFT,MASK,ALIGN};
      
       - page_cache_get() -> get_page();
      
       - page_cache_release() -> put_page();
      
      This patch contains automated changes generated with coccinelle using
      script below.  For some reason, coccinelle doesn't patch header files.
      I've called spatch for them manually.
      
      The only adjustment after coccinelle is revert of changes to
      PAGE_CAHCE_ALIGN definition: we are going to drop it later.
      
      There are few places in the code where coccinelle didn't reach.  I'll
      fix them manually in a separate patch.  Comments and documentation also
      will be addressed with the separate patch.
      
      virtual patch
      
      @@
      expression E;
      @@
      - E << (PAGE_CACHE_SHIFT - PAGE_SHIFT)
      + E
      
      @@
      expression E;
      @@
      - E >> (PAGE_CACHE_SHIFT - PAGE_SHIFT)
      + E
      
      @@
      @@
      - PAGE_CACHE_SHIFT
      + PAGE_SHIFT
      
      @@
      @@
      - PAGE_CACHE_SIZE
      + PAGE_SIZE
      
      @@
      @@
      - PAGE_CACHE_MASK
      + PAGE_MASK
      
      @@
      expression E;
      @@
      - PAGE_CACHE_ALIGN(E)
      + PAGE_ALIGN(E)
      
      @@
      expression E;
      @@
      - page_cache_get(E)
      + get_page(E)
      
      @@
      expression E;
      @@
      - page_cache_release(E)
      + put_page(E)
      Signed-off-by: NKirill A. Shutemov <kirill.shutemov@linux.intel.com>
      Acked-by: NMichal Hocko <mhocko@suse.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      09cbfeaf
  6. 08 1月, 2016 2 次提交
  7. 01 1月, 2016 1 次提交
  8. 29 12月, 2015 3 次提交
  9. 14 12月, 2015 1 次提交
  10. 18 9月, 2015 1 次提交
  11. 18 8月, 2015 1 次提交
  12. 27 7月, 2015 2 次提交
  13. 01 7月, 2015 1 次提交
  14. 18 6月, 2015 1 次提交
  15. 11 6月, 2015 1 次提交
  16. 16 4月, 2015 1 次提交
  17. 04 2月, 2015 6 次提交
  18. 17 1月, 2015 2 次提交
  19. 25 11月, 2014 1 次提交
    • W
      NFS: fix subtle change in COMMIT behavior · cb1410c7
      Weston Andros Adamson 提交于
      Recent work in the pgio layer made it possible for there to be more than one
      request per page. This caused a subtle change in commit behavior, because
      write.c:nfs_commit_unstable_pages compares the number of *pages* waiting for
      writeback against the number of requests on a commit list to choose when to
      send a COMMIT in a non-blocking flush.
      
      This is probably hard to hit in normal operation - you have to be using
      rsize/wsize < PAGE_SIZE, or pnfs with lots of boundaries that are not page
      aligned to have a noticeable change in behavior.
      Signed-off-by: NWeston Andros Adamson <dros@primarydata.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      cb1410c7
  20. 13 10月, 2014 2 次提交
    • T
      NFS: Fix a bogus warning in nfs_generic_pgio · b8fb9c30
      Trond Myklebust 提交于
      It is OK for pageused == pagecount in the loop, as long as we don't add
      another entry to the *pages array. Move the test so that it only triggers
      in that case.
      Reported-by: NSteve Dickson <SteveD@redhat.com>
      Fixes: bba5c188 (nfs: disallow duplicate pages in pgio page vectors)
      Cc: Weston Andros Adamson <dros@primarydata.com>
      Cc: stable@vger.kernel.org # 3.16.x
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      b8fb9c30
    • T
      NFS: Fix an uninitialised pointer Oops in the writeback error path · 3caa0c6e
      Trond Myklebust 提交于
      SteveD reports the following Oops:
       RIP: 0010:[<ffffffffa053461d>]  [<ffffffffa053461d>] __put_nfs_open_context+0x1d/0x100 [nfs]
       RSP: 0018:ffff880fed687b90  EFLAGS: 00010286
       RAX: 0000000000000024 RBX: 0000000000000000 RCX: 0000000000000006
       RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
       RBP: ffff880fed687bc0 R08: 0000000000000092 R09: 000000000000047a
       R10: 0000000000000000 R11: ffff880fed6878d6 R12: ffff880fed687d20
       R13: ffff880fed687d20 R14: 0000000000000070 R15: ffffea000aa33ec0
       FS:  00007fce290f0740(0000) GS:ffff8807ffc60000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000000000000070 CR3: 00000007f2e79000 CR4: 00000000000007e0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
       Stack:
        0000000000000000 ffff880036c5e510 ffff880fed687d20 ffff880fed687d20
        ffff880036c5e200 ffffea000aa33ec0 ffff880fed687bd0 ffffffffa0534710
        ffff880fed687be8 ffffffffa053d5f0 ffff880036c5e200 ffff880fed687c08
       Call Trace:
        [<ffffffffa0534710>] put_nfs_open_context+0x10/0x20 [nfs]
        [<ffffffffa053d5f0>] nfs_pgio_data_destroy+0x20/0x40 [nfs]
        [<ffffffffa053d672>] nfs_pgio_error+0x22/0x40 [nfs]
        [<ffffffffa053d8f4>] nfs_generic_pgio+0x74/0x2e0 [nfs]
        [<ffffffffa06b18c3>] pnfs_generic_pg_writepages+0x63/0x210 [nfsv4]
        [<ffffffffa053d579>] nfs_pageio_doio+0x19/0x50 [nfs]
        [<ffffffffa053eb84>] nfs_pageio_complete+0x24/0x30 [nfs]
        [<ffffffffa053cb25>] nfs_direct_write_schedule_iovec+0x115/0x1f0 [nfs]
        [<ffffffffa053675f>] ? nfs_get_lock_context+0x4f/0x120 [nfs]
        [<ffffffffa053d252>] nfs_file_direct_write+0x262/0x420 [nfs]
        [<ffffffffa0532d91>] nfs_file_write+0x131/0x1d0 [nfs]
        [<ffffffffa0532c60>] ? nfs_need_sync_write.isra.17+0x40/0x40 [nfs]
        [<ffffffff812127b8>] do_io_submit+0x3b8/0x840
        [<ffffffff81212c50>] SyS_io_submit+0x10/0x20
        [<ffffffff81610f29>] system_call_fastpath+0x16/0x1b
      
      This is due to the calls to nfs_pgio_error() in nfs_generic_pgio(), which
      happen before the nfs_pgio_header's open context is referenced in
      nfs_pgio_rpcsetup().
      Reported-by: NSteve Dickson <SteveD@redhat.com>
      Cc: stable@vger.kernel.org # 3.16.x
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      3caa0c6e
  21. 11 9月, 2014 1 次提交
  22. 23 8月, 2014 3 次提交