]> git.ipfire.org Git - thirdparty/git.git/commit - environment.c
core.fsync: introduce granular fsync control infrastructure
authorNeeraj Singh <neerajsi@microsoft.com>
Thu, 10 Mar 2022 22:43:21 +0000 (22:43 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Mar 2022 23:10:22 +0000 (15:10 -0800)
commit020406eaa52e67440d9b78087ec2ce25532cb219
tree1e1946931dc25e380e3cadce28ac08dab9019c1f
parentabf38abec201cded6094801766d69e11a6c112b6
core.fsync: introduce granular fsync control infrastructure

This commit introduces the infrastructure for the core.fsync
configuration knob. The repository components we want to sync
are identified by flags so that we can turn on or off syncing
for specific components.

If core.fsyncObjectFiles is set and the core.fsync configuration
also includes FSYNC_COMPONENT_LOOSE_OBJECT, we will fsync any
loose objects. This picks the strictest data integrity behavior
if core.fsync and core.fsyncObjectFiles are set to conflicting values.

This change introduces the currently unused fsync_component
helper, which will be used by a later patch that adds fsyncing to
the refs backend.

Actual configuration and documentation of the fsync components
list are in other patches in the series to separate review of
the underlying mechanism from the policy of how it's configured.

Helped-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Neeraj Singh <neerajsi@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
15 files changed:
builtin/fast-import.c
builtin/index-pack.c
builtin/pack-objects.c
bulk-checkin.c
cache.h
commit-graph.c
csum-file.c
csum-file.h
environment.c
midx.c
object-file.c
pack-bitmap-write.c
pack-write.c
read-cache.c
write-or-die.c