diff --git a/WHATS_NEW b/WHATS_NEW index 7dae2ec5e..2cfb79ba0 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.188 - ================================== + Fix bcache when device has too many failing writes. Fix bcache waiting for IO completion with failing disks. Configure use own python path name order to prefer using python3. Enhance reporting and error handling when creating thin volumes. diff --git a/lib/device/bcache.c b/lib/device/bcache.c index 9d4ef90a9..e173129fe 100644 --- a/lib/device/bcache.c +++ b/lib/device/bcache.c @@ -957,6 +957,11 @@ static struct block *_new_block(struct bcache *cache, int fd, block_address i, b if (dm_list_empty(&cache->io_pending)) _writeback(cache, 16); // FIXME: magic number _wait_all(cache); + if (dm_list_size(&cache->errored) >= cache->max_io) { + log_debug("bcache no new blocks for di %d index %u with >%d errors.", + fd, (uint32_t) i, cache->max_io); + return NULL; + } } else { log_error("bcache no new blocks for fd %d index %u", fd, (uint32_t) i);