diff --git a/src/backend/storage/aio/method_worker.c b/src/backend/storage/aio/method_worker.c index efe38e9f113..e24357a7a0a 100644 --- a/src/backend/storage/aio/method_worker.c +++ b/src/backend/storage/aio/method_worker.c @@ -239,8 +239,8 @@ pgaio_worker_needs_synchronous_execution(PgAioHandle *ioh) || !pgaio_io_can_reopen(ioh); } -static void -pgaio_worker_submit_internal(int num_staged_ios, PgAioHandle **staged_ios) +static int +pgaio_worker_submit(uint16 num_staged_ios, PgAioHandle **staged_ios) { PgAioHandle **synchronous_ios = NULL; int nsync = 0; @@ -249,6 +249,9 @@ pgaio_worker_submit_internal(int num_staged_ios, PgAioHandle **staged_ios) Assert(num_staged_ios <= PGAIO_SUBMIT_BATCH_SIZE); + for (int i = 0; i < num_staged_ios; i++) + pgaio_io_prepare_submit(staged_ios[i]); + if (LWLockConditionalAcquire(AioWorkerSubmissionQueueLock, LW_EXCLUSIVE)) { for (int i = 0; i < num_staged_ios; ++i) @@ -299,19 +302,6 @@ pgaio_worker_submit_internal(int num_staged_ios, PgAioHandle **staged_ios) pgaio_io_perform_synchronously(synchronous_ios[i]); } } -} - -static int -pgaio_worker_submit(uint16 num_staged_ios, PgAioHandle **staged_ios) -{ - for (int i = 0; i < num_staged_ios; i++) - { - PgAioHandle *ioh = staged_ios[i]; - - pgaio_io_prepare_submit(ioh); - } - - pgaio_worker_submit_internal(num_staged_ios, staged_ios); return num_staged_ios; }