@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $ PostgreSQL : pgsql / src / backend / utils / init / miscinit . c , v 1.175 .2 .1 2009 / 12 / 09 21 : 58 : 04 tgl Exp $
* $ PostgreSQL : pgsql / src / backend / utils / init / miscinit . c , v 1.175 .2 .2 2010 / 08 / 16 17 : 33 : 01 tgl Exp $
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
@ -879,6 +879,9 @@ CreateLockFile(const char *filename, bool amPostmaster,
* admin ) but has left orphan backends behind . Check for this by
* looking to see if there is an associated shmem segment that is
* still in use .
*
* Note : because postmaster . pid is written in two steps , we might not
* find the shmem ID values in it ; we can ' t treat that as an error .
*/
if ( isDDLock )
{
@ -942,7 +945,18 @@ CreateLockFile(const char *filename, bool amPostmaster,
( errcode_for_file_access ( ) ,
errmsg ( " could not write lock file \" %s \" : %m " , filename ) ) ) ;
}
if ( close ( fd ) )
if ( pg_fsync ( fd ) ! = 0 )
{
int save_errno = errno ;
close ( fd ) ;
unlink ( filename ) ;
errno = save_errno ;
ereport ( FATAL ,
( errcode_for_file_access ( ) ,
errmsg ( " could not write lock file \" %s \" : %m " , filename ) ) ) ;
}
if ( close ( fd ) ! = 0 )
{
int save_errno = errno ;
@ -1103,7 +1117,14 @@ RecordSharedMemoryInLockFile(unsigned long id1, unsigned long id2)
close ( fd ) ;
return ;
}
if ( close ( fd ) )
if ( pg_fsync ( fd ) ! = 0 )
{
ereport ( LOG ,
( errcode_for_file_access ( ) ,
errmsg ( " could not write to file \" %s \" : %m " ,
DIRECTORY_LOCK_FILE ) ) ) ;
}
if ( close ( fd ) ! = 0 )
{
ereport ( LOG ,
( errcode_for_file_access ( ) ,