1. 11 11月, 2013 3 次提交
  2. 25 9月, 2013 1 次提交
    • K
      bcache: Fix a writeback performance regression · c2a4f318
      Kent Overstreet 提交于
      Background writeback works by scanning the btree for dirty data and
      adding those keys into a fixed size buffer, then for each dirty key in
      the keybuf writing it to the backing device.
      
      When read_dirty() finishes and it's time to scan for more dirty data, we
      need to wait for the outstanding writeback IO to finish - they still
      take up slots in the keybuf (so that foreground writes can check for
      them to avoid races) - without that wait, we'll continually rescan when
      we'll be able to add at most a key or two to the keybuf, and that takes
      locks that starves foreground IO.  Doh.
      Signed-off-by: NKent Overstreet <kmo@daterainc.com>
      Cc: linux-stable <stable@vger.kernel.org> # >= v3.10
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c2a4f318
  3. 02 7月, 2013 1 次提交
    • K
      bcache: Use standard utility code · 8e51e414
      Kent Overstreet 提交于
      Some of bcache's utility code has made it into the rest of the kernel,
      so drop the bcache versions.
      
      Bcache used to have a workaround for allocating from a bio set under
      generic_make_request() (if you allocated more than once, the bios you
      already allocated would get stuck on current->bio_list when you
      submitted, and you'd risk deadlock) - bcache would mask out __GFP_WAIT
      when allocating bios under generic_make_request() so that allocation
      could fail and it could retry from workqueue. But bio_alloc_bioset() has
      a workaround now, so we can drop this hack and the associated error
      handling.
      Signed-off-by: NKent Overstreet <koverstreet@google.com>
      8e51e414
  4. 27 6月, 2013 1 次提交
    • K
      bcache: Fix/revamp tracepoints · c37511b8
      Kent Overstreet 提交于
      The tracepoints were reworked to be more sensible, and fixed a null
      pointer deref in one of the tracepoints.
      
      Converted some of the pr_debug()s to tracepoints - this is partly a
      performance optimization; it used to be that with DEBUG or
      CONFIG_DYNAMIC_DEBUG pr_debug() was an empty macro; but at some point it
      was changed to an empty inline function.
      
      Some of the pr_debug() statements had rather expensive function calls as
      part of the arguments, so this code was getting run unnecessarily even
      on non debug kernels - in some fast paths, too.
      Signed-off-by: NKent Overstreet <koverstreet@google.com>
      c37511b8
  5. 29 3月, 2013 1 次提交
  6. 24 3月, 2013 1 次提交