diff options
Diffstat (limited to 'src/backend/storage')
-rw-r--r-- | src/backend/storage/aio/Makefile | 2 | ||||
-rw-r--r-- | src/backend/storage/aio/aio.c | 90 | ||||
-rw-r--r-- | src/backend/storage/aio/aio_init.c | 37 | ||||
-rw-r--r-- | src/backend/storage/aio/meson.build | 2 | ||||
-rw-r--r-- | src/backend/storage/ipc/ipci.c | 3 |
5 files changed, 134 insertions, 0 deletions
diff --git a/src/backend/storage/aio/Makefile b/src/backend/storage/aio/Makefile index 2f29a9ec4d1..eaeaeeee8e3 100644 --- a/src/backend/storage/aio/Makefile +++ b/src/backend/storage/aio/Makefile @@ -9,6 +9,8 @@ top_builddir = ../../../.. include $(top_builddir)/src/Makefile.global OBJS = \ + aio.o \ + aio_init.o \ read_stream.o include $(top_srcdir)/src/backend/common.mk diff --git a/src/backend/storage/aio/aio.c b/src/backend/storage/aio/aio.c new file mode 100644 index 00000000000..828a94efdc3 --- /dev/null +++ b/src/backend/storage/aio/aio.c @@ -0,0 +1,90 @@ +/*------------------------------------------------------------------------- + * + * aio.c + * AIO - Core Logic + * + * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/backend/storage/aio/aio.c + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" + +#include "lib/ilist.h" +#include "storage/aio.h" +#include "storage/aio_subsys.h" +#include "utils/guc.h" +#include "utils/guc_hooks.h" + + +/* Options for io_method. */ +const struct config_enum_entry io_method_options[] = { + {"sync", IOMETHOD_SYNC, false}, + {NULL, 0, false} +}; + +/* GUCs */ +int io_method = DEFAULT_IO_METHOD; +int io_max_concurrency = -1; + + + +/* + * Release IO handle during resource owner cleanup. + */ +void +pgaio_io_release_resowner(dlist_node *ioh_node, bool on_error) +{ +} + +/* + * Perform AIO related cleanup after an error. + * + * This should be called early in the error recovery paths, as later steps may + * need to issue AIO (e.g. to record a transaction abort WAL record). + */ +void +pgaio_error_cleanup(void) +{ +} + +/* + * Perform AIO related checks at (sub-)transactional boundaries. + * + * This should be called late during (sub-)transactional commit/abort, after + * all steps that might need to perform AIO, so that we can verify that the + * AIO subsystem is in a valid state at the end of a transaction. + */ +void +AtEOXact_Aio(bool is_commit) +{ +} + +void +assign_io_method(int newval, void *extra) +{ +} + +bool +check_io_max_concurrency(int *newval, void **extra, GucSource source) +{ + if (*newval == -1) + { + /* + * Auto-tuning will be applied later during startup, as auto-tuning + * depends on the value of various GUCs. + */ + return true; + } + else if (*newval == 0) + { + GUC_check_errdetail("Only -1 or values bigger than 0 are valid."); + return false; + } + + return true; +} diff --git a/src/backend/storage/aio/aio_init.c b/src/backend/storage/aio/aio_init.c new file mode 100644 index 00000000000..aeacc144149 --- /dev/null +++ b/src/backend/storage/aio/aio_init.c @@ -0,0 +1,37 @@ +/*------------------------------------------------------------------------- + * + * aio_init.c + * AIO - Subsystem Initialization + * + * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/backend/storage/aio/aio_init.c + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" + +#include "storage/aio_subsys.h" + + + +Size +AioShmemSize(void) +{ + Size sz = 0; + + return sz; +} + +void +AioShmemInit(void) +{ +} + +void +pgaio_init_backend(void) +{ +} diff --git a/src/backend/storage/aio/meson.build b/src/backend/storage/aio/meson.build index 8abe0eb4863..c822fd4ddf7 100644 --- a/src/backend/storage/aio/meson.build +++ b/src/backend/storage/aio/meson.build @@ -1,5 +1,7 @@ # Copyright (c) 2024-2025, PostgreSQL Global Development Group backend_sources += files( + 'aio.c', + 'aio_init.c', 'read_stream.c', ) diff --git a/src/backend/storage/ipc/ipci.c b/src/backend/storage/ipc/ipci.c index 174eed70367..2fa045e6b0f 100644 --- a/src/backend/storage/ipc/ipci.c +++ b/src/backend/storage/ipc/ipci.c @@ -37,6 +37,7 @@ #include "replication/slotsync.h" #include "replication/walreceiver.h" #include "replication/walsender.h" +#include "storage/aio_subsys.h" #include "storage/bufmgr.h" #include "storage/dsm.h" #include "storage/dsm_registry.h" @@ -148,6 +149,7 @@ CalculateShmemSize(int *num_semaphores) size = add_size(size, WaitEventCustomShmemSize()); size = add_size(size, InjectionPointShmemSize()); size = add_size(size, SlotSyncShmemSize()); + size = add_size(size, AioShmemSize()); /* include additional requested shmem from preload libraries */ size = add_size(size, total_addin_request); @@ -340,6 +342,7 @@ CreateOrAttachShmemStructs(void) StatsShmemInit(); WaitEventCustomShmemInit(); InjectionPointShmemInit(); + AioShmemInit(); } /* |