Linus Torvalds wrote:
This consolidates the common operations for closing the new temporary file
that we have written, before we move it into place with the final name.
There's some common code there (make it read-only and check for errors on
close), but more importantly, this also gives a single place to add an
fsync_or_die() call if we want to add a safe mode.
This was triggered due to Denis Bueno apparently twice being able to
corrupt his git repository on OS X due to an unlucky combination of kernel
crashes and a not-very-robust filesystem.
Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
---
Junio, this is just the scaffolding, without the actual fsync_or_die call.
I think it's a worthy place-holder regardless of whether we really want to
do the fsync (whether conditionally with a config option or not, and
whether there are more clever options like aio_fsync()).
sha1_file.c | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c
index adcf37c..f311c79 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2105,6 +2105,15 @@ int hash_sha1_file(const void *buf, unsigned long len, const char *type,
return 0;
}
+/* Finalize a file on disk, and close it. */
+static void close_sha1_file(int fd)
Why close_sha1_file() when it operates on any old file?
I'd name it crash_safe_close() or perhaps close_and_fsync() or
something instead, as it's got nothing to do with sha1's and
everything to do with plain old files.
Other than that, I'm all for it.
--
Andreas Ericsson andreas.ericsson@xxxxxx
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html