diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c new file mode 100644 index df4843f..554c720 *** a/src/backend/access/transam/xlog.c --- b/src/backend/access/transam/xlog.c *************** XLogSetAsyncXactLSN(XLogRecPtr asyncXact *** 2623,2633 **** */ if (!sleeping) { /* back off to last completed page boundary */ WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; ! /* if we have already flushed that far, we're done */ ! if (WriteRqstPtr <= LogwrtResult.Flush) return; } --- 2623,2637 ---- */ if (!sleeping) { + int flushbytes; /* back off to last completed page boundary */ WriteRqstPtr -= WriteRqstPtr % XLOG_BLCKSZ; ! flushbytes = ! WriteRqstPtr / XLOG_BLCKSZ - LogwrtResult.Flush / XLOG_BLCKSZ; ! ! /* if there is nothing to write and we don't have enough to flush, we're done */ ! if (WriteRqstPtr <= LogwrtResult.Write && (WalWriterFlushAfter == 0 || flushbytes < WalWriterFlushAfter)) return; }