]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Fix AsyncIO reading seed queueing (#3940)
authorYonatan Komornik <11005061+yoniko@users.noreply.github.com>
Mon, 11 Mar 2024 23:28:32 +0000 (16:28 -0700)
committerGitHub <noreply@github.com>
Mon, 11 Mar 2024 23:28:32 +0000 (16:28 -0700)
Fixes a bug in AsyncIO where we queue reads after opening a file so our queue will always be saturated (or as saturated as possible).
Previous code was looping up to `availableJobsCount` not realizing `availableJobsCount` was also decreasing in each iteration, so instead of queueing 10 jobs we'd queue 5 (and instead of 2 we'd queue 1).
This PR fixes the loop to queue as long as `availableJobsCount` is not 0.

programs/fileio_asyncio.c

index 5f7bd4a4ce18a935aa45fcb2c0309dcb6e20515f..ae6db69e0a95aa302a47f3313e5cb768713f9558 100644 (file)
@@ -514,8 +514,7 @@ static void AIO_ReadPool_enqueueRead(ReadPoolCtx_t* ctx) {
 }
 
 static void AIO_ReadPool_startReading(ReadPoolCtx_t* ctx) {
-    int i;
-    for (i = 0; i < ctx->base.availableJobsCount; i++) {
+    while(ctx->base.availableJobsCount) {
         AIO_ReadPool_enqueueRead(ctx);
     }
 }