mirror of
https://github.com/minio/minio.git
synced 2025-01-24 13:13:16 -05:00
650dccfa9e
Currently, cache purges are triggered as soon as the low watermark is exceeded. To reduce IO this should only be done when reaching the high watermark. This simplifies checks and reduces all calls for a GC to go through `dcache.diskSpaceAvailable(size)`. While a comment claims that `dcache.triggerGC <- struct{}{}` was non-blocking I don't see how that was possible. Instead, we add a 1 size to the queue channel and use channel semantics to avoid blocking when a GC has already been requested. `bytesToClear` now takes the high watermark into account to it will not request any bytes to be cleared until that is reached.