diff options
author | Andres Freund <andres@anarazel.de> | 2025-03-17 18:51:33 -0400 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2025-03-17 18:51:33 -0400 |
commit | 02844012b304ba80d1c48d51f6fe10bb622490cc (patch) | |
tree | c7753eb6c900a00ebdaa2311b87aefbb21d9f588 /src/backend/access/transam/xact.c | |
parent | 65db3963ae7154b8f01e4d73dc6b1ffd81c70e1e (diff) | |
download | postgresql-02844012b304ba80d1c48d51f6fe10bb622490cc.tar.gz postgresql-02844012b304ba80d1c48d51f6fe10bb622490cc.zip |
aio: Basic subsystem initialization
This commit just does the minimal wiring up of the AIO subsystem, added in the
next commit, to the rest of the system. The next commit contains more details
about motivation and architecture.
This commit is kept separate to make it easier to review, separating the
changes across the tree, from the implementation of the new subsystem.
We discussed squashing this commit with the main commit before merging AIO,
but there has been a mild preference for keeping it separate.
Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>
Reviewed-by: Noah Misch <noah@leadboat.com>
Discussion: https://postgr.es/m/uvrtrknj4kdytuboidbhwclo4gxhswwcpgadptsjvjqcluzmah%40brqs62irg4dt
Diffstat (limited to 'src/backend/access/transam/xact.c')
-rw-r--r-- | src/backend/access/transam/xact.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 1b4f21a88d3..b885513f765 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -51,6 +51,7 @@ #include "replication/origin.h" #include "replication/snapbuild.h" #include "replication/syncrep.h" +#include "storage/aio_subsys.h" #include "storage/condition_variable.h" #include "storage/fd.h" #include "storage/lmgr.h" @@ -2411,6 +2412,8 @@ CommitTransaction(void) RESOURCE_RELEASE_BEFORE_LOCKS, true, true); + AtEOXact_Aio(true); + /* Check we've released all buffer pins */ AtEOXact_Buffers(true); @@ -2716,6 +2719,8 @@ PrepareTransaction(void) RESOURCE_RELEASE_BEFORE_LOCKS, true, true); + AtEOXact_Aio(true); + /* Check we've released all buffer pins */ AtEOXact_Buffers(true); @@ -2830,6 +2835,8 @@ AbortTransaction(void) pgstat_report_wait_end(); pgstat_progress_end_command(); + pgaio_error_cleanup(); + /* Clean up buffer content locks, too */ UnlockBuffers(); @@ -2960,6 +2967,7 @@ AbortTransaction(void) ResourceOwnerRelease(TopTransactionResourceOwner, RESOURCE_RELEASE_BEFORE_LOCKS, false, true); + AtEOXact_Aio(false); AtEOXact_Buffers(false); AtEOXact_RelationCache(false); AtEOXact_TypeCache(); @@ -5232,6 +5240,9 @@ AbortSubTransaction(void) pgstat_report_wait_end(); pgstat_progress_end_command(); + + pgaio_error_cleanup(); + UnlockBuffers(); /* Reset WAL record construction state */ @@ -5326,6 +5337,7 @@ AbortSubTransaction(void) RESOURCE_RELEASE_BEFORE_LOCKS, false, false); + AtEOXact_Aio(false); AtEOSubXact_RelationCache(false, s->subTransactionId, s->parent->subTransactionId); AtEOSubXact_TypeCache(); |