Subject: Future-proofed syncing of refs

From: Patrick Steinhardt <[email-masked]>
Date: Thu, 10 Mar 2022 10:53:13 +0100

Hi,

these three patches apply on top of Neeraj's v5 of his "A design for
future-proofing fsync() configuration". I'm sending this as a reply to
his v5 to keep the discussion in one place -- I think ultimately, we may
want to merge both series into a single one anyway. But please shout at
me if this is considered bad style and I'll split it out into a separate
thread.

In any case, these three patches implement fsyncing for loose and packed
references using the proposed `core.fsync` option, with three additional
knobs:

    - "loose-ref" will fsync loose references.
    - "packed-refs" will fsync packed references.
    - "refs" will fsync all references, which should ideally also
      include all new backends like the reftable backend.

I think this extension demonstrates that the design proposed by Neeraj
is quite easy to extend without too much boilerplate.

Patrick

Patrick Steinhardt (3):
  core.fsync: add `fsync_component()` wrapper which doesn't die
  core.fsync: new option to harden loose references
  core.fsync: new option to harden packed references

 Documentation/config/core.txt |  3 +++
 cache.h                       | 22 ++++++++++++++++++----
 config.c                      |  3 +++
 refs/files-backend.c          | 29 +++++++++++++++++++++++++++++
 refs/packed-backend.c         |  3 ++-
 write-or-die.c                | 10 ++++++----
 6 files changed, 61 insertions(+), 9 deletions(-)

-- 
2.35.1