Hi, Currently, each usage of block_range_read_stream_cb is accompanied by the same comment about the safety of using batchmode (there are 7 identical comments)
/* * It is safe to use batchmode as block_range_read_stream_cb takes no * locks. */ The idea is to write it once near block_range_read_stream_cb and drop all duplicates. PFA the small patch that does this. Best regards, Arseniy Mukhin
From bf29b68997fd414d97cd784fea462366c07e40c9 Mon Sep 17 00:00:00 2001 From: Arseniy Mukhin <[email protected]> Date: Sat, 30 Aug 2025 20:16:47 +0300 Subject: [PATCH v1] Moves the comment about block_range_read_stream_cb Currently, each usage of block_range_read_stream_cb is accompanied by the same comment about the safety of using batchmode. Commit moves the comment closer to block_range_read_stream_cb, so no duplicate comments are needed. --- contrib/amcheck/verify_heapam.c | 4 ---- contrib/pg_prewarm/pg_prewarm.c | 4 ---- contrib/pg_visibility/pg_visibility.c | 4 ---- src/backend/access/gist/gistvacuum.c | 4 ---- src/backend/access/nbtree/nbtree.c | 4 ---- src/backend/access/spgist/spgvacuum.c | 4 ---- src/backend/storage/aio/read_stream.c | 3 ++- src/backend/storage/buffer/bufmgr.c | 4 ---- 8 files changed, 2 insertions(+), 29 deletions(-) diff --git a/contrib/amcheck/verify_heapam.c b/contrib/amcheck/verify_heapam.c index 4963e9245cb..bdda345a195 100644 --- a/contrib/amcheck/verify_heapam.c +++ b/contrib/amcheck/verify_heapam.c @@ -447,10 +447,6 @@ verify_heapam(PG_FUNCTION_ARGS) if (skip_option == SKIP_PAGES_NONE) { - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ stream_cb = block_range_read_stream_cb; stream_flags = READ_STREAM_SEQUENTIAL | READ_STREAM_FULL | diff --git a/contrib/pg_prewarm/pg_prewarm.c b/contrib/pg_prewarm/pg_prewarm.c index b968933ea8b..e2ee8711486 100644 --- a/contrib/pg_prewarm/pg_prewarm.c +++ b/contrib/pg_prewarm/pg_prewarm.c @@ -206,10 +206,6 @@ pg_prewarm(PG_FUNCTION_ARGS) p.current_blocknum = first_block; p.last_exclusive = last_block + 1; - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | READ_STREAM_FULL | READ_STREAM_USE_BATCHING, diff --git a/contrib/pg_visibility/pg_visibility.c b/contrib/pg_visibility/pg_visibility.c index d79ef35006b..6d4ad5d243e 100644 --- a/contrib/pg_visibility/pg_visibility.c +++ b/contrib/pg_visibility/pg_visibility.c @@ -527,10 +527,6 @@ collect_visibility_data(Oid relid, bool include_pd) p.current_blocknum = 0; p.last_exclusive = nblocks; - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ stream = read_stream_begin_relation(READ_STREAM_FULL | READ_STREAM_USE_BATCHING, bstrategy, diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index dca236b6e57..ea2b47ce4da 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -211,10 +211,6 @@ gistvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, p.current_blocknum = GIST_ROOT_BLKNO; - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | READ_STREAM_FULL | READ_STREAM_USE_BATCHING, diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index fdff960c130..ba56b8bf3ea 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -1260,10 +1260,6 @@ btvacuumscan(IndexVacuumInfo *info, IndexBulkDeleteResult *stats, p.current_blocknum = BTREE_METAPAGE + 1; - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | READ_STREAM_FULL | READ_STREAM_USE_BATCHING, diff --git a/src/backend/access/spgist/spgvacuum.c b/src/backend/access/spgist/spgvacuum.c index 2678f7ab782..9169d860bed 100644 --- a/src/backend/access/spgist/spgvacuum.c +++ b/src/backend/access/spgist/spgvacuum.c @@ -823,10 +823,6 @@ spgvacuumscan(spgBulkDeleteState *bds) needLock = !RELATION_IS_LOCAL(index); p.current_blocknum = SPGIST_METAPAGE_BLKNO + 1; - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ stream = read_stream_begin_relation(READ_STREAM_MAINTENANCE | READ_STREAM_FULL | READ_STREAM_USE_BATCHING, diff --git a/src/backend/storage/aio/read_stream.c b/src/backend/storage/aio/read_stream.c index 031fde9f4cb..aac0d43d3b0 100644 --- a/src/backend/storage/aio/read_stream.c +++ b/src/backend/storage/aio/read_stream.c @@ -156,7 +156,8 @@ get_per_buffer_data(ReadStream *stream, int16 buffer_index) /* * General-use ReadStreamBlockNumberCB for block range scans. Loops over the - * blocks [current_blocknum, last_exclusive). + * blocks [current_blocknum, last_exclusive). It is safe to use batchmode with + * block_range_read_stream_cb as it takes no locks. */ BlockNumber block_range_read_stream_cb(ReadStream *stream, diff --git a/src/backend/storage/buffer/bufmgr.c b/src/backend/storage/buffer/bufmgr.c index fd7e21d96d3..808fe89d0f1 100644 --- a/src/backend/storage/buffer/bufmgr.c +++ b/src/backend/storage/buffer/bufmgr.c @@ -5168,10 +5168,6 @@ RelationCopyStorageUsingBuffer(RelFileLocator srclocator, p.last_exclusive = nblocks; src_smgr = smgropen(srclocator, INVALID_PROC_NUMBER); - /* - * It is safe to use batchmode as block_range_read_stream_cb takes no - * locks. - */ src_stream = read_stream_begin_smgr_relation(READ_STREAM_FULL | READ_STREAM_USE_BATCHING, bstrategy_src, -- 2.43.0
