mirror of
https://github.com/postgres/postgres.git
synced 2025-11-26 23:43:30 +03:00
Rethink PROCSIGNAL_BARRIER_SMGRRELEASE.
With sufficiently bad luck, it was possible for IssuePendingWritebacks() to reopen a file after we'd processed PROCSIGNAL_BARRIER_SMGRRELEASE and before the file was unlinked by some other backend. That left a small hole in commit 4eb21763's plan to fix all spurious errors from DROP TABLESPACE and similar on Windows. Fix by closing md.c's segments, instead of just closing fd.c's descriptors, and then teaching smgrwriteback() not to open files that aren't already open. Reported-by: Andres Freund <andres@anarazel.de> Reviewed-by: Robert Haas <robertmhaas@gmail.com> Discussion: https://postgr.es/m/20220209220004.kb3dgtn2x2k2gtdm%40alap3.anarazel.de
This commit is contained in:
@@ -23,7 +23,6 @@
|
||||
extern void mdinit(void);
|
||||
extern void mdopen(SMgrRelation reln);
|
||||
extern void mdclose(SMgrRelation reln, ForkNumber forknum);
|
||||
extern void mdrelease(void);
|
||||
extern void mdcreate(SMgrRelation reln, ForkNumber forknum, bool isRedo);
|
||||
extern bool mdexists(SMgrRelation reln, ForkNumber forknum);
|
||||
extern void mdunlink(RelFileNodeBackend rnode, ForkNumber forknum, bool isRedo);
|
||||
|
||||
Reference in New Issue
Block a user