@ -2672,34 +2672,16 @@ InstallXLogFileSegment(uint32 *log, uint32 *seg, char *tmppath,
}
/*
* Prefer link ( ) to rename ( ) here just to be really sure that we don ' t
* overwrite an existing logfile . However , there shouldn ' t be one , so
* rename ( ) is an acceptable substitute except for the truly paranoid .
* Perform the rename using link if available , paranoidly trying to avoid
* overwriting an existing file ( there shouldn ' t be one ) .
*/
# if HAVE_WORKING_LINK
if ( link ( tmppath , path ) < 0 )
if ( durable_link_or_rename ( tmppath , path , LOG ) ! = 0 )
{
if ( use_lock )
LWLockRelease ( ControlFileLock ) ;
ereport ( LOG ,
( errcode_for_file_access ( ) ,
errmsg ( " could not link file \" %s \" to \" %s \" (initialization of log file %u, segment %u): %m " ,
tmppath , path , * log , * seg ) ) ) ;
/* durable_link_or_rename already emitted log message */
return false ;
}
unlink ( tmppath ) ;
# else
if ( rename ( tmppath , path ) < 0 )
{
if ( use_lock )
LWLockRelease ( ControlFileLock ) ;
ereport ( LOG ,
( errcode_for_file_access ( ) ,
errmsg ( " could not rename file \" %s \" to \" %s \" (initialization of log file %u, segment %u): %m " ,
tmppath , path , * log , * seg ) ) ) ;
return false ;
}
# endif
if ( use_lock )
LWLockRelease ( ControlFileLock ) ;
@ -4620,24 +4602,10 @@ writeTimeLineHistory(TimeLineID newTLI, TimeLineID parentTLI,
TLHistoryFilePath ( path , newTLI ) ;
/*
* Prefer link ( ) to rename ( ) here just to be really sure that we don ' t
* overwrite an existing logfile . However , there shouldn ' t be one , so
* rename ( ) is an acceptable substitute except for the truly paranoid .
* Perform the rename using link if available , paranoidly trying to avoid
* overwriting an existing file ( there shouldn ' t be one ) .
*/
# if HAVE_WORKING_LINK
if ( link ( tmppath , path ) < 0 )
ereport ( ERROR ,
( errcode_for_file_access ( ) ,
errmsg ( " could not link file \" %s \" to \" %s \" : %m " ,
tmppath , path ) ) ) ;
unlink ( tmppath ) ;
# else
if ( rename ( tmppath , path ) < 0 )
ereport ( ERROR ,
( errcode_for_file_access ( ) ,
errmsg ( " could not rename file \" %s \" to \" %s \" : %m " ,
tmppath , path ) ) ) ;
# endif
durable_link_or_rename ( tmppath , path , ERROR ) ;
/* The history file can be archived immediately. */
if ( XLogArchivingActive ( ) )
@ -5595,11 +5563,7 @@ exitArchiveRecovery(TimeLineID endTLI, uint32 endLogId, uint32 endLogSeg)
( errmsg_internal ( " moving last restored xlog to \" %s \" " ,
xlogpath ) ) ) ;
unlink ( xlogpath ) ; /* might or might not exist */
if ( rename ( recoveryPath , xlogpath ) ! = 0 )
ereport ( FATAL ,
( errcode_for_file_access ( ) ,
errmsg ( " could not rename file \" %s \" to \" %s \" : %m " ,
recoveryPath , xlogpath ) ) ) ;
durable_rename ( recoveryPath , xlogpath , FATAL ) ;
/* XXX might we need to fix permissions on the file? */
}
else
@ -5648,11 +5612,7 @@ exitArchiveRecovery(TimeLineID endTLI, uint32 endLogId, uint32 endLogSeg)
* re - enter archive recovery mode in a subsequent crash .
*/
unlink ( RECOVERY_COMMAND_DONE ) ;
if ( rename ( RECOVERY_COMMAND_FILE , RECOVERY_COMMAND_DONE ) ! = 0 )
ereport ( FATAL ,
( errcode_for_file_access ( ) ,
errmsg ( " could not rename file \" %s \" to \" %s \" : %m " ,
RECOVERY_COMMAND_FILE , RECOVERY_COMMAND_DONE ) ) ) ;
durable_rename ( RECOVERY_COMMAND_FILE , RECOVERY_COMMAND_DONE , FATAL ) ;
ereport ( LOG ,
( errmsg ( " archive recovery complete " ) ) ) ;
@ -6548,11 +6508,7 @@ StartupXLOG(void)
if ( haveBackupLabel )
{
unlink ( BACKUP_LABEL_OLD ) ;
if ( rename ( BACKUP_LABEL_FILE , BACKUP_LABEL_OLD ) ! = 0 )
ereport ( FATAL ,
( errcode_for_file_access ( ) ,
errmsg ( " could not rename file \" %s \" to \" %s \" : %m " ,
BACKUP_LABEL_FILE , BACKUP_LABEL_OLD ) ) ) ;
durable_rename ( BACKUP_LABEL_FILE , BACKUP_LABEL_OLD , FATAL ) ;
}
/* Check that the GUCs used to generate the WAL allow recovery */
@ -10148,7 +10104,7 @@ CancelBackup(void)
/* remove leftover file from previously canceled backup if it exists */
unlink ( BACKUP_LABEL_OLD ) ;
if ( rename ( BACKUP_LABEL_FILE , BACKUP_LABEL_OLD ) = = 0 )
if ( durable_ rename( BACKUP_LABEL_FILE , BACKUP_LABEL_OLD , DEBUG1 ) = = 0 )
{
ereport ( LOG ,
( errmsg ( " online backup mode canceled " ) ,