diff options
author | Colin Walters <walters@verbum.org> | 2014-06-04 09:59:47 -0400 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2014-06-05 17:35:50 -0400 |
commit | 51bf1fab0f96c4b40bbe9048a1fb81f9037ee5b6 (patch) | |
tree | 63b23ebebc5f8da0d1f806c012f93c83f28949a8 | |
parent | ef0057299945ff1d5e687c46ba65eb470263d3d5 (diff) | |
download | ostree-51bf1fab0f96c4b40bbe9048a1fb81f9037ee5b6.tar.gz |
repo: Support fsync=false configuration
See rationale in the updated docs. Basically developer use cases as
well as UPS-backed servers.
-rw-r--r-- | doc/ostree.repo-config.xml | 24 | ||||
-rw-r--r-- | src/libostree/ostree-repo.c | 11 |
2 files changed, 35 insertions, 0 deletions
diff --git a/doc/ostree.repo-config.xml b/doc/ostree.repo-config.xml index d2f65421..621879c9 100644 --- a/doc/ostree.repo-config.xml +++ b/doc/ostree.repo-config.xml @@ -83,6 +83,30 @@ Boston, MA 02111-1307, USA. <term><varname>repo_version</varname></term> <listitem><para>Currently, this must be set to <literal>1</literal>.</para></listitem> </varlistentry> + + <varlistentry> + <term><varname>fsync</varname></term> + <listitem><para>Boolean value controlling whether or not to + ensure files are on stable storage when performing operations + such as commits, pulls, and checkouts. Defaults to + <literal>true</literal>.</para> + <para> + If you disable fsync, OSTree will no longer be robust + against kernel crashes or power loss. + </para> + <para> + You might choose to disable this for local development + repositories, under the assumption they can be recreated from + source. Similarly, you could disable for a mirror where you could + re-pull. + </para> + <para> + For the system repository, you might choose to disable fsync + if you have uninterruptable power supplies and a well tested + kernel. + </para> + </listitem> + </varlistentry> </variablelist> </refsect1> diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 210ce366..aa2bd2df 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -683,6 +683,17 @@ ostree_repo_open (OstreeRepo *self, goto out; { + gboolean do_fsync; + + if (!ot_keyfile_get_boolean_with_default (self->config, "core", "fsync", + TRUE, &do_fsync, error)) + goto out; + + if (!do_fsync) + ostree_repo_set_disable_fsync (self, TRUE); + } + + { gs_unref_object GFile *default_repo_path = get_default_repo_path (); if (g_file_equal (self->repodir, default_repo_path)) |