diff options
author | Thomas Munro <tmunro@postgresql.org> | 2021-10-26 12:54:55 +1300 |
---|---|---|
committer | Thomas Munro <tmunro@postgresql.org> | 2021-10-26 13:09:00 +1300 |
commit | 181361a0c2fec635de10e101f683da9bddbb8178 (patch) | |
tree | dc4df230d5df1fd503d582a27cd941c5f662f7ec | |
parent | a5b9a0000e14663fd814dd51648a544fa40140a4 (diff) | |
download | postgresql-181361a0c2fec635de10e101f683da9bddbb8178.tar.gz postgresql-181361a0c2fec635de10e101f683da9bddbb8178.zip |
Reject huge_pages=on if shared_memory_type=sysv.
It doesn't work (it could, but hasn't been implemented).
Back-patch to 12, where shared_memory_type arrived.
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Reviewed-by: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/163271880203.22789.1125998876173795966@wrigleys.postgresql.org
-rw-r--r-- | doc/src/sgml/config.sgml | 4 | ||||
-rw-r--r-- | src/backend/port/sysv_shmem.c | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 0c3193bfebb..b5d06b49e29 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1664,7 +1664,9 @@ include_dir 'conf.d' <para> At present, this setting is supported only on Linux and Windows. The setting is ignored on other systems when set to - <literal>try</literal>. + <literal>try</literal>. On Linux, it is only supported when + <varname>shared_memory_type</varname> is set to <literal>mmap</literal> + (the default). </para> <para> diff --git a/src/backend/port/sysv_shmem.c b/src/backend/port/sysv_shmem.c index 9de96edf6ad..35cce89e9c9 100644 --- a/src/backend/port/sysv_shmem.c +++ b/src/backend/port/sysv_shmem.c @@ -686,6 +686,12 @@ PGSharedMemoryCreate(Size size, errmsg("huge pages not supported on this platform"))); #endif + /* For now, we don't support huge pages in SysV memory */ + if (huge_pages == HUGE_PAGES_ON && shared_memory_type != SHMEM_TYPE_MMAP) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("huge pages not supported with the current shared_memory_type setting"))); + /* Room for a header? */ Assert(size > MAXALIGN(sizeof(PGShmemHeader))); |