* _bitmap_xlog_insert_meta() -- update a metapage. */
| 106 | * _bitmap_xlog_insert_meta() -- update a metapage. |
| 107 | */ |
| 108 | static void |
| 109 | _bitmap_xlog_insert_meta(XLogRecPtr lsn, XLogReaderState *record) |
| 110 | { |
| 111 | xl_bm_metapage *xlrec = (xl_bm_metapage *) XLogRecGetData(record); |
| 112 | Buffer metabuf; |
| 113 | Page mp; |
| 114 | BMMetaPage metapage; |
| 115 | |
| 116 | metabuf = XLogReadBufferExtended(xlrec->bm_node, xlrec->bm_fork, BM_METAPAGE, RBM_ZERO_AND_LOCK); |
| 117 | Assert(BufferIsValid(metabuf)); |
| 118 | |
| 119 | mp = BufferGetPage(metabuf); |
| 120 | if (PageIsNew(mp)) |
| 121 | PageInit(mp, BufferGetPageSize(metabuf), 0); |
| 122 | |
| 123 | if (PageGetLSN(mp) < lsn) |
| 124 | { |
| 125 | metapage = (BMMetaPage)PageGetContents(mp); |
| 126 | |
| 127 | metapage->bm_magic = BITMAP_MAGIC; |
| 128 | metapage->bm_version = BITMAP_VERSION; |
| 129 | metapage->bm_lov_heapId = xlrec->bm_lov_heapId; |
| 130 | metapage->bm_lov_indexId = xlrec->bm_lov_indexId; |
| 131 | metapage->bm_lov_lastpage = xlrec->bm_lov_lastpage; |
| 132 | |
| 133 | PageSetLSN(mp, lsn); |
| 134 | _bitmap_wrtbuf(metabuf); |
| 135 | } |
| 136 | else |
| 137 | _bitmap_relbuf(metabuf); |
| 138 | } |
| 139 | |
| 140 | /* |
| 141 | * _bitmap_xlog_insert_bitmap_lastwords() -- update the last two words |
no test coverage detected