[HACKERS] effective_io_concurrency documentation

2014-09-29 Thread Peter Eisentraut
The documentation of effective_io_concurrency says

Asynchronous I/O depends on an effective functionposix_fadvise/
function, which some operating systems lack.  If the function is not
present then setting this parameter to anything but zero will result
in an error.

This is not correct, because on unsupported systems, it is an error to
set this parameter to anything, including zero, because it is set to
PGC_INTERNAL.

I think this is a mistake.  For example, we allow setting ssl to false
even if SSL support is not compiled in.

I propose the attached patch to correct this.
diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index 9494439..0229f54 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1892,6 +1892,10 @@ titleAsynchronous Behavior/title
  in an error.  On some operating systems (e.g., Solaris), the function
  is present but does not actually do anything.
 /para
+
+para
+ The default is 1 on supported systems, otherwise 0.
+/para
/listitem
   /varlistentry
 
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index d208314..d438128 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -2269,11 +2269,7 @@ static struct config_int ConfigureNamesInt[] =
 
 	{
 		{effective_io_concurrency,
-#ifdef USE_PREFETCH
 			PGC_USERSET,
-#else
-			PGC_INTERNAL,
-#endif
 			RESOURCES_ASYNCHRONOUS,
 			gettext_noop(Number of simultaneous requests that can be handled efficiently by the disk subsystem.),
 			gettext_noop(For RAID arrays, this should be approximately the number of drive spindles in the array.)
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index c8ff2cb..e6c9e48 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -1288,6 +1288,12 @@ setup_config(void)
 	conflines = replace_token(conflines, #dynamic_shared_memory_type = posix,
 			  repltok);
 
+#if !USE_PREFETCH
+	conflines = replace_token(conflines,
+			  #effective_io_concurrency = 1,
+			  #effective_io_concurrency = 0);
+#endif
+
 	snprintf(path, sizeof(path), %s/postgresql.conf, pg_data);
 
 	writefile(path, conflines);

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] effective_io_concurrency documentation

2014-09-29 Thread Peter Geoghegan
On Mon, Sep 29, 2014 at 10:41 AM, Peter Eisentraut pete...@gmx.net wrote:
 I think this is a mistake.  For example, we allow setting ssl to false
 even if SSL support is not compiled in.


+1

-- 
Peter Geoghegan


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers