src/backend/transam/README says:

  ...
  4. Mark the shared buffer(s) as dirty with MarkBufferDirty().  (ThisĀ 
  must happen before the WAL record is inserted; see notes inĀ 
  SyncOneBuffer().)
  ...

But GenericXLogFinish() does this:

  ...
  /* Insert xlog record */
  lsn = XLogInsert(RM_GENERIC_ID, 0);

  /* Set LSN and mark buffers dirty */
  for (i = 0; i < MAX_GENERIC_XLOG_PAGES; i++)
  {
      PageData   *pageData = &state->pages[i];

      if (BufferIsInvalid(pageData->buffer))
          continue;
      PageSetLSN(BufferGetPage(pageData->buffer), lsn);
      MarkBufferDirty(pageData->buffer);
  }
  END_CRIT_SECTION();

Am I missing something or is that a problem?

Regards,
        Jeff Davis



Reply via email to