1. 22 6月, 2021 3 次提交
  2. 19 6月, 2021 1 次提交
    • M
      fuse: ignore PG_workingset after stealing · b89ecd60
      Miklos Szeredi 提交于
      Fix the "fuse: trying to steal weird page" warning.
      
      Description from Johannes Weiner:
      
        "Think of it as similar to PG_active. It's just another usage/heat
         indicator of file and anon pages on the reclaim LRU that, unlike
         PG_active, persists across deactivation and even reclaim (we store it in
         the page cache / swapper cache tree until the page refaults).
      
         So if fuse accepts pages that can legally have PG_active set,
         PG_workingset is fine too."
      Reported-by: NThomas Lindroth <thomas.lindroth@gmail.com>
      Fixes: 1899ad18 ("mm: workingset: tell cache transitions from workingset thrashing")
      Cc: <stable@vger.kernel.org> # v4.20
      Signed-off-by: NMiklos Szeredi <mszeredi@redhat.com>
      b89ecd60
  3. 14 4月, 2021 1 次提交
  4. 16 3月, 2021 1 次提交
  5. 25 2月, 2021 1 次提交
  6. 18 9月, 2020 4 次提交
  7. 04 6月, 2020 1 次提交
  8. 21 5月, 2020 1 次提交
  9. 19 5月, 2020 3 次提交
  10. 21 4月, 2020 1 次提交
  11. 20 4月, 2020 2 次提交
  12. 13 2月, 2020 1 次提交
  13. 07 12月, 2019 1 次提交
  14. 16 11月, 2019 1 次提交
    • D
      pipe: Allow pipes to have kernel-reserved slots · 6718b6f8
      David Howells 提交于
      Split pipe->ring_size into two numbers:
      
       (1) pipe->ring_size - indicates the hard size of the pipe ring.
      
       (2) pipe->max_usage - indicates the maximum number of pipe ring slots that
           userspace orchestrated events can fill.
      
      This allows for a pipe that is both writable by the general kernel
      notification facility and by userspace, allowing plenty of ring space for
      notifications to be added whilst preventing userspace from being able to
      pin too much unswappable kernel space.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      6718b6f8
  15. 31 10月, 2019 1 次提交
    • D
      pipe: Use head and tail pointers for the ring, not cursor and length · 8cefc107
      David Howells 提交于
      Convert pipes to use head and tail pointers for the buffer ring rather than
      pointer and length as the latter requires two atomic ops to update (or a
      combined op) whereas the former only requires one.
      
       (1) The head pointer is the point at which production occurs and points to
           the slot in which the next buffer will be placed.  This is equivalent
           to pipe->curbuf + pipe->nrbufs.
      
           The head pointer belongs to the write-side.
      
       (2) The tail pointer is the point at which consumption occurs.  It points
           to the next slot to be consumed.  This is equivalent to pipe->curbuf.
      
           The tail pointer belongs to the read-side.
      
       (3) head and tail are allowed to run to UINT_MAX and wrap naturally.  They
           are only masked off when the array is being accessed, e.g.:
      
      	pipe->bufs[head & mask]
      
           This means that it is not necessary to have a dead slot in the ring as
           head == tail isn't ambiguous.
      
       (4) The ring is empty if "head == tail".
      
           A helper, pipe_empty(), is provided for this.
      
       (5) The occupancy of the ring is "head - tail".
      
           A helper, pipe_occupancy(), is provided for this.
      
       (6) The number of free slots in the ring is "pipe->ring_size - occupancy".
      
           A helper, pipe_space_for_user() is provided to indicate how many slots
           userspace may use.
      
       (7) The ring is full if "head - tail >= pipe->ring_size".
      
           A helper, pipe_full(), is provided for this.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      8cefc107
  16. 23 10月, 2019 1 次提交
  17. 21 10月, 2019 1 次提交
  18. 24 9月, 2019 2 次提交
  19. 12 9月, 2019 6 次提交
  20. 10 9月, 2019 7 次提交