]> granicus.if.org Git - postgresql/commitdiff
Improve error reporting for unsupported effective_io_concurrency setting.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 28 Sep 2018 20:12:13 +0000 (16:12 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 28 Sep 2018 20:12:13 +0000 (16:12 -0400)
Give a specific error complaining about lack of posix_fadvise() when
someone tries to set effective_io_concurrency > 0 on platforms
without that.

This probably isn't worth extensive back-patching, but I (tgl) felt
cramming it into v11 was reasonable.

James Robinson

Discussion: https://postgr.es/m/153771876450.14994.560017943128223619@wrigleys.postgresql.org
Discussion: https://postgr.es/m/A3942987-5BC7-4F05-B54D-2A0EC2914B33@jlr-photo.com

src/backend/utils/misc/guc.c
src/include/pg_config_manual.h

index 6264b7fbd04b75607c183c489f15b616687a0f27..110ac0e57fbafc8b4d1e63bab5fe98ade22e2f15 100644 (file)
@@ -2641,10 +2641,11 @@ static struct config_int ConfigureNamesInt[] =
                },
                &effective_io_concurrency,
 #ifdef USE_PREFETCH
-               1, 0, MAX_IO_CONCURRENCY,
+               1,
 #else
-               0, 0, 0,
+               0,
 #endif
+               0, MAX_IO_CONCURRENCY,
                check_effective_io_concurrency, assign_effective_io_concurrency, NULL
        },
 
@@ -10681,6 +10682,11 @@ check_effective_io_concurrency(int *newval, void **extra, GucSource source)
        else
                return false;
 #else
+       if (*newval != 0)
+       {
+               GUC_check_errdetail("effective_io_concurrency must be set to 0 on platforms that lack posix_fadvise()");
+               return false;
+       }
        return true;
 #endif                                                 /* USE_PREFETCH */
 }
index b309395f11c13deabb4a9d9b1d60252d60ff6016..14336acb963d583d96cba901dca1a12c334764ab 100644 (file)
 /*
  * USE_PREFETCH code should be compiled only if we have a way to implement
  * prefetching.  (This is decoupled from USE_POSIX_FADVISE because there
- * might in future be support for alternative low-level prefetch APIs.)
+ * might in future be support for alternative low-level prefetch APIs.
+ * If you change this, you probably need to adjust the error message in
+ * check_effective_io_concurrency.)
  */
 #ifdef USE_POSIX_FADVISE
 #define USE_PREFETCH