@ -118,6 +118,7 @@ static const char *authmethodlocal = "";
static bool debug = false ;
static bool noclean = false ;
static bool do_sync = true ;
static bool sync_only = false ;
static bool show_setting = false ;
static char * xlog_dir = " " ;
@ -2796,6 +2797,7 @@ usage(const char *progname)
printf ( _ ( " -n, --noclean do not clean up after errors \n " ) ) ;
printf ( _ ( " -N, --nosync do not wait for changes to be written safely to disk \n " ) ) ;
printf ( _ ( " -s, --show show internal settings \n " ) ) ;
printf ( _ ( " -S, --sync-only only sync data directory \n " ) ) ;
printf ( _ ( " \n Other options: \n " ) ) ;
printf ( _ ( " -V, --version output version information, then exit \n " ) ) ;
printf ( _ ( " -?, --help show this help, then exit \n " ) ) ;
@ -3445,6 +3447,7 @@ main(int argc, char *argv[])
{ " show " , no_argument , NULL , ' s ' } ,
{ " noclean " , no_argument , NULL , ' n ' } ,
{ " nosync " , no_argument , NULL , ' N ' } ,
{ " sync-only " , no_argument , NULL , ' S ' } ,
{ " xlogdir " , required_argument , NULL , ' X ' } ,
{ NULL , 0 , NULL , 0 }
} ;
@ -3476,7 +3479,7 @@ main(int argc, char *argv[])
/* process command-line options */
while ( ( c = getopt_long ( argc , argv , " dD:E:L:nNU:WA:sT:X: " , long_options , & option_index ) ) ! = - 1 )
while ( ( c = getopt_long ( argc , argv , " dD:E:L:nNU:WA:sS T:X: " , long_options , & option_index ) ) ! = - 1 )
{
switch ( c )
{
@ -3522,6 +3525,9 @@ main(int argc, char *argv[])
case ' N ' :
do_sync = false ;
break ;
case ' S ' :
sync_only = true ;
break ;
case ' L ' :
share_path = pg_strdup ( optarg ) ;
break ;
@ -3589,6 +3595,14 @@ main(int argc, char *argv[])
exit ( 1 ) ;
}
/* If we only need to fsync, just to it and exit */
if ( sync_only )
{
setup_pgdata ( ) ;
perform_fsync ( ) ;
return 0 ;
}
if ( pwprompt & & pwfilename )
{
fprintf ( stderr , _ ( " %s: password prompt and password file cannot be specified together \n " ) , progname ) ;