diff options
-rw-r--r-- | doc/src/sgml/config.sgml | 64 | ||||
-rw-r--r-- | src/backend/storage/file/fd.c | 8 | ||||
-rw-r--r-- | src/backend/utils/misc/guc_tables.c | 2 | ||||
-rw-r--r-- | src/test/modules/test_misc/t/004_io_direct.pl | 2 |
4 files changed, 38 insertions, 38 deletions
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 909a3f28c79..2073bafa1f1 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -11160,6 +11160,38 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </listitem> </varlistentry> + <varlistentry id="guc-debug-io-direct" xreflabel="debug_io_direct"> + <term><varname>debug_io_direct</varname> (<type>string</type>) + <indexterm> + <primary><varname>debug_io_direct</varname> configuration parameter</primary> + </indexterm> + </term> + <listitem> + <para> + Ask the kernel to minimize caching effects for relation data and WAL + files using <literal>O_DIRECT</literal> (most Unix-like systems), + <literal>F_NOCACHE</literal> (macOS) or + <literal>FILE_FLAG_NO_BUFFERING</literal> (Windows). + </para> + <para> + May be set to an empty string (the default) to disable use of direct + I/O, or a comma-separated list of operations that should use direct I/O. + The valid options are <literal>data</literal> for + main data files, <literal>wal</literal> for WAL files, and + <literal>wal_init</literal> for WAL files when being initially + allocated. + </para> + <para> + Some operating systems and file systems do not support direct I/O, so + non-default settings may be rejected at startup or cause errors. + </para> + <para> + Currently this feature reduces performance, and is intended for + developer testing only. + </para> + </listitem> + </varlistentry> + <varlistentry id="guc-debug-parallel-query" xreflabel="debug_parallel_query"> <term><varname>debug_parallel_query</varname> (<type>enum</type>) <indexterm> @@ -11221,38 +11253,6 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir' </listitem> </varlistentry> - <varlistentry id="guc-io-direct" xreflabel="io_direct"> - <term><varname>io_direct</varname> (<type>string</type>) - <indexterm> - <primary><varname>io_direct</varname> configuration parameter</primary> - </indexterm> - </term> - <listitem> - <para> - Ask the kernel to minimize caching effects for relation data and WAL - files using <literal>O_DIRECT</literal> (most Unix-like systems), - <literal>F_NOCACHE</literal> (macOS) or - <literal>FILE_FLAG_NO_BUFFERING</literal> (Windows). - </para> - <para> - May be set to an empty string (the default) to disable use of direct - I/O, or a comma-separated list of operations that should use direct I/O. - The valid options are <literal>data</literal> for - main data files, <literal>wal</literal> for WAL files, and - <literal>wal_init</literal> for WAL files when being initially - allocated. - </para> - <para> - Some operating systems and file systems do not support direct I/O, so - non-default settings may be rejected at startup or cause errors. - </para> - <para> - Currently this feature reduces performance, and is intended for - developer testing only. - </para> - </listitem> - </varlistentry> - <varlistentry id="guc-post-auth-delay" xreflabel="post_auth_delay"> <term><varname>post_auth_delay</varname> (<type>integer</type>) <indexterm> diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c index 4f86d44d6e3..173476789c7 100644 --- a/src/backend/storage/file/fd.c +++ b/src/backend/storage/file/fd.c @@ -3844,7 +3844,7 @@ check_io_direct(char **newval, void **extra, GucSource source) #if PG_O_DIRECT == 0 if (strcmp(*newval, "") != 0) { - GUC_check_errdetail("io_direct is not supported on this platform."); + GUC_check_errdetail("debug_io_direct is not supported on this platform."); result = false; } flags = 0; @@ -3859,7 +3859,7 @@ check_io_direct(char **newval, void **extra, GucSource source) if (!SplitGUCList(rawstring, ',', &elemlist)) { GUC_check_errdetail("invalid list syntax in parameter \"%s\"", - "io_direct"); + "debug_io_direct"); pfree(rawstring); list_free(elemlist); return false; @@ -3891,14 +3891,14 @@ check_io_direct(char **newval, void **extra, GucSource source) #if XLOG_BLCKSZ < PG_IO_ALIGN_SIZE if (result && (flags & (IO_DIRECT_WAL | IO_DIRECT_WAL_INIT))) { - GUC_check_errdetail("io_direct is not supported for WAL because XLOG_BLCKSZ is too small"); + GUC_check_errdetail("debug_io_direct is not supported for WAL because XLOG_BLCKSZ is too small"); result = false; } #endif #if BLCKSZ < PG_IO_ALIGN_SIZE if (result && (flags & IO_DIRECT_DATA)) { - GUC_check_errdetail("io_direct is not supported for data because BLCKSZ is too small"); + GUC_check_errdetail("debug_io_direct is not supported for data because BLCKSZ is too small"); result = false; } #endif diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 5f90aecd478..efd59a47cf7 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -4568,7 +4568,7 @@ struct config_string ConfigureNamesString[] = }, { - {"io_direct", PGC_POSTMASTER, DEVELOPER_OPTIONS, + {"debug_io_direct", PGC_POSTMASTER, DEVELOPER_OPTIONS, gettext_noop("Use direct I/O for file access."), NULL, GUC_LIST_INPUT | GUC_NOT_IN_SAMPLE diff --git a/src/test/modules/test_misc/t/004_io_direct.pl b/src/test/modules/test_misc/t/004_io_direct.pl index b8814bb6402..dddcfb1aa96 100644 --- a/src/test/modules/test_misc/t/004_io_direct.pl +++ b/src/test/modules/test_misc/t/004_io_direct.pl @@ -40,7 +40,7 @@ my $node = PostgreSQL::Test::Cluster->new('main'); $node->init; $node->append_conf( 'postgresql.conf', qq{ -io_direct = 'data,wal,wal_init' +debug_io_direct = 'data,wal,wal_init' shared_buffers = '256kB' # tiny to force I/O wal_level = replica # minimal runs out of shared_buffers when set so tiny }); |