bufmgr: Return early in ScheduleBufferTagForWriteback() if fsync=off

As pg_flush_data() doesn't do anything with fsync disabled, there's no point
in tracking the buffer for writeback. Arguably the better fix would be to
change pg_flush_data() to flush data even with fsync off, but that's a
behavioral change, whereas this is just a small optimization.

Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi>
Reviewed-by: Noah Misch <noah@leadboat.com>
Discussion: https://postgr.es/m/1f6b50a7-38ef-4d87-8246-786d39f46ab9@iki.fi
This commit is contained in:
Andres Freund 2024-10-08 11:37:45 -04:00
parent c01fd93088
commit 488f826c72

View File

@ -5899,7 +5899,12 @@ ScheduleBufferTagForWriteback(WritebackContext *wb_context, IOContext io_context
{
PendingWriteback *pending;
if (io_direct_flags & IO_DIRECT_DATA)
/*
* As pg_flush_data() doesn't do anything with fsync disabled, there's no
* point in tracking in that case.
*/
if (io_direct_flags & IO_DIRECT_DATA ||
!enableFsync)
return;
/*