* BufferGetTag * Returns the relfilenode, fork number and block number associated with * a buffer. */
| 2931 | * a buffer. |
| 2932 | */ |
| 2933 | void |
| 2934 | BufferGetTag(Buffer buffer, RelFileNode *rnode, ForkNumber *forknum, |
| 2935 | BlockNumber *blknum) |
| 2936 | { |
| 2937 | BufferDesc *bufHdr; |
| 2938 | |
| 2939 | /* Do the same checks as BufferGetBlockNumber. */ |
| 2940 | Assert(BufferIsPinned(buffer)); |
| 2941 | |
| 2942 | if (BufferIsLocal(buffer)) |
| 2943 | bufHdr = GetLocalBufferDescriptor(-buffer - 1); |
| 2944 | else |
| 2945 | bufHdr = GetBufferDescriptor(buffer - 1); |
| 2946 | |
| 2947 | /* pinned, so OK to read tag without spinlock */ |
| 2948 | *rnode = bufHdr->tag.rnode; |
| 2949 | *forknum = bufHdr->tag.forkNum; |
| 2950 | *blknum = bufHdr->tag.blockNum; |
| 2951 | } |
| 2952 | |
| 2953 | /* |
| 2954 | * FlushBuffer |
no outgoing calls
no test coverage detected