summary refs log tree commit diff
path: root/object-file.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-03-25 16:38:24 -0700
committerJunio C Hamano <gitster@pobox.com>2022-03-25 16:38:24 -0700
commiteb804cd405618ef78b772072685c39392aea4ac1 (patch)
treec86dd22ade3bf93d03d9ac01c507c6254c8fee7a /object-file.c
parenta68dfadae5e95c7f255cf38c9efdcbc2e36d1931 (diff)
parentb9f5d0358d2e882d47f496c1a5589f6cebc25578 (diff)
Merge branch 'ns/core-fsyncmethod'
Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.

* ns/core-fsyncmethod:
  core.fsync: documentation and user-friendly aggregate options
  core.fsync: new option to harden the index
  core.fsync: add configuration parsing
  core.fsync: introduce granular fsync control infrastructure
  core.fsyncmethod: add writeout-only mode
  wrapper: make inclusion of Windows csprng header tightly scoped
Diffstat (limited to 'object-file.c')
-rw-r--r--object-file.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/object-file.c b/object-file.c
index bdc5cbdd38..62ebe236c9 100644
--- a/object-file.c
+++ b/object-file.c
@@ -1889,11 +1889,16 @@ void hash_object_file(const struct git_hash_algo *algo, const void *buf,
 /* Finalize a file on disk, and close it. */
 static void close_loose_object(int fd)
 {
-	if (!the_repository->objects->odb->will_destroy) {
-		if (fsync_object_files)
-			fsync_or_die(fd, "loose object file");
-	}
+	if (the_repository->objects->odb->will_destroy)
+		goto out;
 
+	if (fsync_object_files > 0)
+		fsync_or_die(fd, "loose object file");
+	else
+		fsync_component_or_die(FSYNC_COMPONENT_LOOSE_OBJECT, fd,
+				       "loose object file");
+
+out:
 	if (close(fd) != 0)
 		die_errno(_("error when closing loose object file"));
 }