Skip to contentSkip to conversation

object-file: pass filename to fsync_or_die

PATCH New Neeraj K. Singh via GitGitGadget 1 participant 1 message Mar 30, 2022

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 object-file: pass filename to fsync_or_die

From: Neeraj Singh <[email protected]>

If we die while trying to fsync a loose object file, pass the actual filename we're trying to sync. This is likely to be more helpful for a user trying to diagnose the cause of the failure than the former 'loose object file' string. It also sidesteps any concerns about translating the die message differently for loose objects versus something else that has a real path.

---
object-file: pass filename to fsync_or_die

If we die while trying to fsync a loose object file, pass the actual filename we're trying to sync. This is likely to be more helpful for a user trying to diagnose the cause of the failure than the former 'loose object file' string. It also sidesteps any concerns about translating the die message differently for loose objects versus something else that has a real path.

Neeraj Singh [email protected]

------------------------------------------------------------------------

This is in response to:
https://lore.kernel.org/git/[email protected]/

> Unrelated nit: this API is producing sentence lego unfriendly to > translators.

Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1194%2Fneerajsi-msft%2Fns%2Ffsync-die-filename-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1194/neerajsi-msft/ns/fsync-die-filename-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1194

 object-file.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
object-file.c +4 -4
index b254bc50d70..5ffbf3d4fd4 100644
@@ -1888,16 +1888,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)
+static void close_loose_object(int fd, const char *filename)
 {
 	if (the_repository->objects->odb->will_destroy)
 		goto out;
 
 	if (fsync_object_files > 0)
-		fsync_or_die(fd, "loose object file");
+		fsync_or_die(fd, filename);
 	else
 		fsync_component_or_die(FSYNC_COMPONENT_LOOSE_OBJECT, fd,
-				       "loose object file");
+				       filename);
 
 out:
 	if (close(fd) != 0)
@@ -2011,7 +2011,7 @@ static int write_loose_object(const struct object_id *oid, char *hdr,
 		die(_("confused by unstable object source data for %s"),
 		    oid_to_hex(oid));
 
-	close_loose_object(fd);
+	close_loose_object(fd, tmp_file.buf);
 
 	if (mtime) {
 		struct utimbuf utb;

base-commit: 805e0a68082a217f0112db9ee86a022227a9c81b

Signature · 1 line
gitgitgadget