diff options
author | Andres Freund | 2020-11-25 06:33:39 +0000 |
---|---|---|
committer | Andres Freund | 2020-11-25 06:33:39 +0000 |
commit | ca4abfbf68210ae7275cc7f113770e634046daaf (patch) | |
tree | f4b1874f634b2c5cf782f6339d83e314f46051f8 | |
parent | cb127598299d70828bb93fe840cacd1c045fe278 (diff) |
aio: Remove unnecessary waits at commit / abort time.
These caused a lot of unnecessary slowdowns.
-rw-r--r-- | src/backend/storage/ipc/aio.c | 27 |
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)); } |