From 6eb9eba59bf53101b5148ace3ddaf4140592495f Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Wed, 24 Jun 2020 13:37:23 +0200 Subject: [PATCH] bcache: support longer writes When initiated larger write request, it may have happened, bcache got out of free chunks - fix the loop, that is supposed to wait until next free chunk becomes avain available. --- WHATS_NEW | 1 + lib/device/bcache.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index c0267b7a3..c6dad99e2 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.03.10 - ================================= + Fix running out of free buffers for async writing for larger writes. Add integrity with raid capability. Fix support for lvconvert --repair used by foreign apps (i.e. Docker). diff --git a/lib/device/bcache.c b/lib/device/bcache.c index a7d805526..7e7e18542 100644 --- a/lib/device/bcache.c +++ b/lib/device/bcache.c @@ -950,7 +950,7 @@ static struct block *_new_block(struct bcache *cache, int fd, block_address i, b struct block *b; b = _alloc_block(cache); - while (!b && !dm_list_empty(&cache->clean)) { + while (!b) { b = _find_unused_clean_block(cache); if (!b) { if (can_wait) {