From 7021c4f87658018b876719a57b4efdeb8edfc5e6 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 21 Mar 2016 17:54:45 -0400 Subject: [PATCH] repo: Make repo/tmp expiry configurable via tmp-expiry-seconds We were arbitrarily only deleting content after exactly one day. Some use cases may want something else; make it configurable. Closes: #170 Approved by: jlebon --- src/libostree/ostree-repo-commit.c | 7 ++++--- src/libostree/ostree-repo-private.h | 1 + src/libostree/ostree-repo.c | 10 ++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c index 0d7f9bee..60eb6260 100644 --- a/src/libostree/ostree-repo-commit.c +++ b/src/libostree/ostree-repo-commit.c @@ -1349,11 +1349,12 @@ cleanup_tmpdir (OstreeRepo *self, if (stbuf.st_mtime > curtime_secs) continue; - /* Now, we arbitrarily delete files/directories older than a - * day, since that's what we were doing before we had locking. + /* Now, we're pruning content based on the expiry, which + * defaults to a day. That's what we were doing before we + * had locking...but in future we can be smarter here. */ delta = curtime_secs - stbuf.st_mtime; - if (delta > 60*60*24) + if (delta > self->tmp_expiry_seconds) { if (!glnx_shutil_rm_rf_at (dfd_iter.fd, dent->d_name, cancellable, error)) goto out; diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h index 273edd1a..3d59d911 100644 --- a/src/libostree/ostree-repo-private.h +++ b/src/libostree/ostree-repo-private.h @@ -98,6 +98,7 @@ struct OstreeRepo { OstreeRepoMode mode; gboolean enable_uncompressed_cache; gboolean generate_sizes; + guint64 tmp_expiry_seconds; OstreeRepo *parent_repo; }; diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 2c9a7fd3..15452c43 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -2561,6 +2561,16 @@ ostree_repo_open (OstreeRepo *self, ostree_repo_set_disable_fsync (self, TRUE); } + { g_autofree char *tmp_expiry_seconds = NULL; + + /* 86400 secs = one day */ + if (!ot_keyfile_get_value_with_default (self->config, "core", "tmp-expiry-secs", "86400", + &tmp_expiry_seconds, error)) + goto out; + + self->tmp_expiry_seconds = g_ascii_strtoull (tmp_expiry_seconds, NULL, 10); + } + if (!append_remotes_d (self, cancellable, error)) goto out;