repo: Support fsync=false configuration

See rationale in the updated docs.  Basically developer use cases as
well as UPS-backed servers.
This commit is contained in:
Colin Walters 2014-06-04 09:59:47 -04:00
parent ef00572999
commit 51bf1fab0f
2 changed files with 35 additions and 0 deletions

View File

@ -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>

View File

@ -682,6 +682,17 @@ ostree_repo_open (OstreeRepo *self,
TRUE, &self->enable_uncompressed_cache, error))
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 ();