]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Reject huge_pages=on if shared_memory_type=sysv.
authorThomas Munro <tmunro@postgresql.org>
Mon, 25 Oct 2021 23:54:55 +0000 (12:54 +1300)
committerThomas Munro <tmunro@postgresql.org>
Tue, 26 Oct 2021 00:04:40 +0000 (13:04 +1300)
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

doc/src/sgml/config.sgml
src/backend/port/sysv_shmem.c

index 92ac53f9a5eed57c9531b9f8c8b2f245f61ce3fe..661bba994177e19c1b69bec79996e96a666e65f1 100644 (file)
@@ -1568,7 +1568,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>
index 63a4de54b506554dc1e3d8485c877050d9dbe435..4b0b0b226c1eaa15732a38d4af863bdca39723f1 100644 (file)
@@ -658,6 +658,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)));