mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Revert "Use "transient" files for blind writes, take 2".
This reverts commit fba105b109
.
That approach had problems with the smgr-level state not tracking what
we really want to happen, and with the VFD-level state not tracking the
smgr-level state very well either. In consequence, it was still possible
to hold kernel file descriptors open for long-gone tables (as in recent
report from Tore Halset), and yet there were also cases of FDs being closed
undesirably soon. A replacement implementation will follow.
This commit is contained in:
@ -1882,10 +1882,7 @@ BufferGetTag(Buffer buffer, RelFileNode *rnode, ForkNumber *forknum,
|
||||
* written.)
|
||||
*
|
||||
* If the caller has an smgr reference for the buffer's relation, pass it
|
||||
* as the second parameter. If not, pass NULL. In the latter case, the
|
||||
* relation will be marked as "transient" so that the corresponding
|
||||
* kernel-level file descriptors are closed when the current transaction ends,
|
||||
* if any.
|
||||
* as the second parameter. If not, pass NULL.
|
||||
*/
|
||||
static void
|
||||
FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln)
|
||||
@ -1909,12 +1906,9 @@ FlushBuffer(volatile BufferDesc *buf, SMgrRelation reln)
|
||||
errcontext.previous = error_context_stack;
|
||||
error_context_stack = &errcontext;
|
||||
|
||||
/* Find smgr relation for buffer, and mark it as transient */
|
||||
/* Find smgr relation for buffer */
|
||||
if (reln == NULL)
|
||||
{
|
||||
reln = smgropen(buf->tag.rnode, InvalidBackendId);
|
||||
smgrsettransient(reln);
|
||||
}
|
||||
|
||||
TRACE_POSTGRESQL_BUFFER_FLUSH_START(buf->tag.forkNum,
|
||||
buf->tag.blockNum,
|
||||
|
Reference in New Issue
Block a user