]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reftable/stack: do not die when fsyncing lock file files
authorPatrick Steinhardt <ps@pks.im>
Thu, 8 Aug 2024 14:06:44 +0000 (16:06 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 8 Aug 2024 17:14:43 +0000 (10:14 -0700)
We use `fsync_component_or_die()` when committing an addition to the
"tables.list" lock file, which unsurprisingly dies in case the fsync
fails. Given that this is part of the reftable library, we should never
die and instead let callers handle the error.

Adapt accordingly and use `fsync_component()` instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
reftable/stack.c

index 07e7ffc6b97ef6f79f0e24a487e23481f9e03917..9ca549294f0f7dddaddd47acf767d1fd806b3dd1 100644 (file)
@@ -674,8 +674,11 @@ int reftable_addition_commit(struct reftable_addition *add)
                goto done;
        }
 
-       fsync_component_or_die(FSYNC_COMPONENT_REFERENCE, lock_file_fd,
-                              get_tempfile_path(add->lock_file));
+       err = fsync_component(FSYNC_COMPONENT_REFERENCE, lock_file_fd);
+       if (err < 0) {
+               err = REFTABLE_IO_ERROR;
+               goto done;
+       }
 
        err = rename_tempfile(&add->lock_file, add->stack->list_file);
        if (err < 0) {