From 4d230b8bd49b128b68f45b8ca11086819665b5f1 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 4 Jun 2014 09:59:47 -0400 Subject: [PATCH] repo: Support fsync=false configuration See rationale in the updated docs. Basically developer use cases as well as UPS-backed servers. --- doc/ostree.repo-config.xml | 24 ++++++++++++++++++++++++ src/libostree/ostree-repo.c | 11 +++++++++++ 2 files changed, 35 insertions(+) diff --git a/doc/ostree.repo-config.xml b/doc/ostree.repo-config.xml index d2f6542..621879c 100644 --- a/doc/ostree.repo-config.xml +++ b/doc/ostree.repo-config.xml @@ -83,6 +83,30 @@ Boston, MA 02111-1307, USA. repo_version Currently, this must be set to 1. + + + fsync + Boolean value controlling whether or not to + ensure files are on stable storage when performing operations + such as commits, pulls, and checkouts. Defaults to + true. + + If you disable fsync, OSTree will no longer be robust + against kernel crashes or power loss. + + + 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. + + + For the system repository, you might choose to disable fsync + if you have uninterruptable power supplies and a well tested + kernel. + + + diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 210ce36..aa2bd2d 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)) -- 1.8.3.1