diff options
| author | Kent Overstreet <[email protected]> | 2013-09-24 06:17:31 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2013-09-24 21:41:43 +0000 |
| commit | c2a4f3183a1248f615a695fbd8905da55ad11bba (patch) | |
| tree | 51233866301869506c0728c812fe3668ae1e94ce /fs/btrfs/dev-replace.c | |
| parent | bcache: Correct printf()-style format length modifier (diff) | |
| download | kernel-c2a4f3183a1248f615a695fbd8905da55ad11bba.tar.gz kernel-c2a4f3183a1248f615a695fbd8905da55ad11bba.zip | |
bcache: Fix a writeback performance regression
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: Kent Overstreet <[email protected]>
Cc: linux-stable <[email protected]> # >= v3.10
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'fs/btrfs/dev-replace.c')
0 files changed, 0 insertions, 0 deletions
