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
This commit is contained in:
Thomas Munro 2021-10-26 12:54:55 +13:00
parent a030a0c5cc
commit 8781b0ce25
2 changed files with 9 additions and 1 deletions

View File

@ -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>

View File

@ -703,6 +703,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)));