From 2b04dfc4724970231ac338aa71e529c823fc5ff6 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 28 Sep 2018 16:12:13 -0400 Subject: [PATCH] Improve error reporting for unsupported effective_io_concurrency setting. 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 | 10 ++++++++-- src/include/pg_config_manual.h | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index e9f542cfed..d14ea85184 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -2649,10 +2649,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 }, @@ -10709,6 +10710,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 */ } diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h index b0365254f6..cc5eedfc41 100644 --- a/src/include/pg_config_manual.h +++ b/src/include/pg_config_manual.h @@ -136,7 +136,9 @@ /* * 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 -- 2.40.0