summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Freund2020-11-25 06:33:39 +0000
committerAndres Freund2020-11-25 06:33:39 +0000
commitca4abfbf68210ae7275cc7f113770e634046daaf (patch)
treef4b1874f634b2c5cf782f6339d83e314f46051f8
parentcb127598299d70828bb93fe840cacd1c045fe278 (diff)
aio: Remove unnecessary waits at commit / abort time.
These caused a lot of unnecessary slowdowns.
-rw-r--r--src/backend/storage/ipc/aio.c27
1 files changed, 2 insertions, 25 deletions
diff --git a/src/backend/storage/ipc/aio.c b/src/backend/storage/ipc/aio.c
index 4fc712c424..3c3cf1027b 100644
--- a/src/backend/storage/ipc/aio.c
+++ b/src/backend/storage/ipc/aio.c
@@ -786,26 +786,14 @@ pgaio_at_abort(void)
pgaio_submit_pending(false);
- while (!dlist_is_empty(&my_aio->issued))
- {
- PgAioInProgress *io = dlist_head_element(PgAioInProgress, owner_node, &my_aio->issued);
-
- if (!pgaio_io_done(io))
- pgaio_io_wait_internal(io, true, /* in_error = */ true);
- pgaio_io_release(io);
- }
-
while (!dlist_is_empty(&my_aio->outstanding))
{
PgAioInProgress *io = dlist_head_element(PgAioInProgress, owner_node, &my_aio->outstanding);
- if (!pgaio_io_done(io))
- pgaio_io_wait_internal(io, true, /* in_error = */ true);
pgaio_io_release(io);
}
Assert(dlist_is_empty(&my_aio->issued));
- Assert(dlist_is_empty(&my_aio->outstanding));
}
void
@@ -819,26 +807,15 @@ pgaio_at_commit(void)
pgaio_submit_pending(false);
}
- while (!dlist_is_empty(&my_aio->issued))
- {
- PgAioInProgress *io = dlist_head_element(PgAioInProgress, owner_node, &my_aio->issued);
-
- elog(WARNING, "leaked io %zu", io - aio_ctl->in_progress_io);
- if (!pgaio_io_done(io))
- pgaio_io_wait(io, true);
- pgaio_io_release(io);
- }
-
while (!dlist_is_empty(&my_aio->outstanding))
{
PgAioInProgress *io = dlist_head_element(PgAioInProgress, owner_node, &my_aio->outstanding);
- if (!pgaio_io_done(io))
- pgaio_io_wait_internal(io, true, /* in_error = */ true);
+ elog(WARNING, "leaked io %zu", io - aio_ctl->in_progress_io);
+
pgaio_io_release(io);
}
- Assert(dlist_is_empty(&my_aio->outstanding));
Assert(dlist_is_empty(&my_aio->issued));
}