From: Melanie Plageman Date: Mon, 28 Apr 2025 18:19:45 +0000 (-0400) Subject: Add maintenance_io_concurrency flag to some read stream users X-Git-Url: http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff_plain Add maintenance_io_concurrency flag to some read stream users Index vacuuming and [auto]prewarm AIO concurrency should be governed by maintenance_io_concurrency. As such, pass those read stream users the READ_STREAM_MAINTENANCE flag which will calculate their read stream distance with maintenance_io_concurrency instead of effective_io_concurrency. This was an oversight in the original commits making those operations use the read stream API. Discussion: https://postgr.es/m/flat/CAAKRu_aopDxTo4b41Mt_7Zc-z0_ngocrY8SFCCY6Aph1HgwuNw%40mail.gmail.com --- diff --git a/contrib/pg_prewarm/autoprewarm.c b/contrib/pg_prewarm/autoprewarm.c index bde0523f082..c52f4d4dc9e 100644 --- a/contrib/pg_prewarm/autoprewarm.c +++ b/contrib/pg_prewarm/autoprewarm.c @@ -621,7 +621,8 @@ autoprewarm_database_main(Datum main_arg) .nblocks = nblocks, }; - stream = read_stream_begin_relation(READ_STREAM_DEFAULT | + stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | + READ_STREAM_DEFAULT | READ_STREAM_USE_BATCHING, NULL, rel, diff --git a/contrib/pg_prewarm/pg_prewarm.c b/contrib/pg_prewarm/pg_prewarm.c index c0efb530c4e..50808569bd7 100644 --- a/contrib/pg_prewarm/pg_prewarm.c +++ b/contrib/pg_prewarm/pg_prewarm.c @@ -202,7 +202,8 @@ pg_prewarm(PG_FUNCTION_ARGS) * It is safe to use batchmode as block_range_read_stream_cb takes no * locks. */ - stream = read_stream_begin_relation(READ_STREAM_FULL | + stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | + READ_STREAM_FULL | READ_STREAM_USE_BATCHING, NULL, rel, diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index 6a359c98c60..dca236b6e57 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -215,7 +215,8 @@ gistvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, * It is safe to use batchmode as block_range_read_stream_cb takes no * locks. */ - stream = read_stream_begin_relation(READ_STREAM_FULL | + stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | + READ_STREAM_FULL | READ_STREAM_USE_BATCHING, info->strategy, rel, diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index accc7fe8bbe..765659887af 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -1232,7 +1232,8 @@ btvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, * It is safe to use batchmode as block_range_read_stream_cb takes no * locks. */ - stream = read_stream_begin_relation(READ_STREAM_FULL | + stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | + READ_STREAM_FULL | READ_STREAM_USE_BATCHING, info->strategy, rel, diff --git a/src/backend/access/spgist/spgvacuum.c b/src/backend/access/spgist/spgvacuum.c index 81171f35451..2678f7ab782 100644 --- a/src/backend/access/spgist/spgvacuum.c +++ b/src/backend/access/spgist/spgvacuum.c @@ -827,7 +827,8 @@ spgvacuumscan(spgBulkDeleteState *bds) * It is safe to use batchmode as block_range_read_stream_cb takes no * locks. */ - stream = read_stream_begin_relation(READ_STREAM_FULL | + stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | + READ_STREAM_FULL | READ_STREAM_USE_BATCHING, bds->info->strategy, index,