Commit cd7569a5 authored by Bruce Momjian's avatar Bruce Momjian

dummy commit

parent db00d837
...@@ -150,6 +150,12 @@ main(int argc, char **argv) ...@@ -150,6 +150,12 @@ main(int argc, char **argv)
new_cluster.pgdata); new_cluster.pgdata);
check_ok(); check_ok();
prep_status("Sync data directory to disk");
exec_prog(UTILITY_LOG_FILE, NULL, true,
"\"%s/initdb\" --sync-only \"%s\"", new_cluster.bindir,
new_cluster.pgdata);
check_ok();
create_script_for_cluster_analyze(&analyze_script_file_name); create_script_for_cluster_analyze(&analyze_script_file_name);
create_script_for_old_cluster_deletion(&deletion_script_file_name); create_script_for_old_cluster_deletion(&deletion_script_file_name);
......
...@@ -209,9 +209,9 @@ start_postmaster(ClusterInfo *cluster) ...@@ -209,9 +209,9 @@ start_postmaster(ClusterInfo *cluster)
* a gap of 2000000000 from the current xid counter, so autovacuum will * a gap of 2000000000 from the current xid counter, so autovacuum will
* not touch them. * not touch them.
* *
* synchronous_commit=off improves object creation speed, and we only * Turn off durability requirements to improve object creation speed, and
* modify the new cluster, so only use it there. If there is a crash, * we only modify the new cluster, so only use it there. If there is a
* the new cluster has to be recreated anyway. * crash, the new cluster has to be recreated anyway.
*/ */
snprintf(cmd, sizeof(cmd), snprintf(cmd, sizeof(cmd),
"\"%s/pg_ctl\" -w -l \"%s\" -D \"%s\" -o \"-p %d%s%s%s%s\" start", "\"%s/pg_ctl\" -w -l \"%s\" -D \"%s\" -o \"-p %d%s%s%s%s\" start",
...@@ -219,7 +219,8 @@ start_postmaster(ClusterInfo *cluster) ...@@ -219,7 +219,8 @@ start_postmaster(ClusterInfo *cluster)
(cluster->controldata.cat_ver >= (cluster->controldata.cat_ver >=
BINARY_UPGRADE_SERVER_FLAG_CAT_VER) ? " -b" : BINARY_UPGRADE_SERVER_FLAG_CAT_VER) ? " -b" :
" -c autovacuum=off -c autovacuum_freeze_max_age=2000000000", " -c autovacuum=off -c autovacuum_freeze_max_age=2000000000",
(cluster == &new_cluster) ? " -c synchronous_commit=off" : "", (cluster == &new_cluster) ?
" -c synchronous_commit=off -c fsync=off -c full_page_writes=off" : "",
cluster->pgopts ? cluster->pgopts : "", socket_string); cluster->pgopts ? cluster->pgopts : "", socket_string);
/* /*
......
...@@ -244,6 +244,17 @@ PostgreSQL documentation ...@@ -244,6 +244,17 @@ PostgreSQL documentation
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term><option>-S</option></term>
<term><option>--sync-only</option></term>
<listitem>
<para>
Safely write all database files to disk and exit. This does not
perform any of the normal <application>initdb</> operations.
</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term><option>-T <replaceable>CFG</></option></term> <term><option>-T <replaceable>CFG</></option></term>
<term><option>--text-search-config=<replaceable>CFG</></option></term> <term><option>--text-search-config=<replaceable>CFG</></option></term>
......
...@@ -118,6 +118,7 @@ static const char *authmethodlocal = ""; ...@@ -118,6 +118,7 @@ static const char *authmethodlocal = "";
static bool debug = false; static bool debug = false;
static bool noclean = false; static bool noclean = false;
static bool do_sync = true; static bool do_sync = true;
static bool sync_only = false;
static bool show_setting = false; static bool show_setting = false;
static char *xlog_dir = ""; static char *xlog_dir = "";
...@@ -2796,6 +2797,7 @@ usage(const char *progname) ...@@ -2796,6 +2797,7 @@ usage(const char *progname)
printf(_(" -n, --noclean do not clean up after errors\n")); 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(_(" -N, --nosync do not wait for changes to be written safely to disk\n"));
printf(_(" -s, --show show internal settings\n")); printf(_(" -s, --show show internal settings\n"));
printf(_(" -S, --sync-only only sync data directory\n"));
printf(_("\nOther options:\n")); printf(_("\nOther options:\n"));
printf(_(" -V, --version output version information, then exit\n")); printf(_(" -V, --version output version information, then exit\n"));
printf(_(" -?, --help show this help, then exit\n")); printf(_(" -?, --help show this help, then exit\n"));
...@@ -3445,6 +3447,7 @@ main(int argc, char *argv[]) ...@@ -3445,6 +3447,7 @@ main(int argc, char *argv[])
{"show", no_argument, NULL, 's'}, {"show", no_argument, NULL, 's'},
{"noclean", no_argument, NULL, 'n'}, {"noclean", no_argument, NULL, 'n'},
{"nosync", no_argument, NULL, 'N'}, {"nosync", no_argument, NULL, 'N'},
{"sync-only", no_argument, NULL, 'S'},
{"xlogdir", required_argument, NULL, 'X'}, {"xlogdir", required_argument, NULL, 'X'},
{NULL, 0, NULL, 0} {NULL, 0, NULL, 0}
}; };
...@@ -3476,7 +3479,7 @@ main(int argc, char *argv[]) ...@@ -3476,7 +3479,7 @@ main(int argc, char *argv[])
/* process command-line options */ /* 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:sST:X:", long_options, &option_index)) != -1)
{ {
switch (c) switch (c)
{ {
...@@ -3522,6 +3525,9 @@ main(int argc, char *argv[]) ...@@ -3522,6 +3525,9 @@ main(int argc, char *argv[])
case 'N': case 'N':
do_sync = false; do_sync = false;
break; break;
case 'S':
sync_only = true;
break;
case 'L': case 'L':
share_path = pg_strdup(optarg); share_path = pg_strdup(optarg);
break; break;
...@@ -3589,6 +3595,14 @@ main(int argc, char *argv[]) ...@@ -3589,6 +3595,14 @@ main(int argc, char *argv[])
exit(1); 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) if (pwprompt && pwfilename)
{ {
fprintf(stderr, _("%s: password prompt and password file cannot be specified together\n"), progname); fprintf(stderr, _("%s: password prompt and password file cannot be specified together\n"), progname);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment