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;
  	}
  
