]> git.ipfire.org Git - thirdparty/git.git/commitdiff
object-file: pass filename to fsync_or_die
authorNeeraj Singh <neerajsi@microsoft.com>
Wed, 30 Mar 2022 18:14:15 +0000 (18:14 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 30 Mar 2022 21:46:47 +0000 (14:46 -0700)
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
object-file.c

index b254bc50d702922ecdb43b492e3415269c6af351..5ffbf3d4fd46de4242bd1ce00c6b3c2dad17322f 100644 (file)
@@ -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;