git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] object-file: pass filename to fsync_or_die

From
NGNeeraj K. Singh via GitGitGadget <gitgitgadget@gmail.com>
Date
Mar 30, 2022, 18:14 UTC
Message-ID
<pull.1194.git.1648664055986.gitgitgadget@gmail.com>
From: Neeraj Singh <neerajsi@microsoft.com>

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.

Reported-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Neeraj Singh <neerajsi@microsoft.com>
---
    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.
    
    Reported-by: Ævar Arnfjörð Bjarmason avarab@gmail.com Signed-off-by:
    Neeraj Singh neerajsi@microsoft.com
    
    ------------------------------------------------------------------------
    
    This is in response to:
    https://lore.kernel.org/git/220321.861qyv9rjr.gmgdl@evledraar.gmail.com/
    
    > 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(-)
diff --git a/object-file.c b/object-file.c
index b254bc50d70..5ffbf3d4fd4 100644
--- a/object-file.c
+++ b/object-file.c
@@ -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
-- 
gitgitgadget
Message 1 of 1 in “object-file: pass filename to fsync_or_die”
  1. object-file: pass filename to fsync_or_dieNeeraj K. Singh via GitGitGadget, Mar 30, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.