Re: Potential problem in git-add may corrupt the index file
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 24, 2012, 01:51 UTC
- Message-ID
- <xmqq4ns9j3rf.fsf@junio.mtv.corp.google.com>
- In-Reply-To
- <CAEJt7hYYJh5dT1Tk99Oze6Hg4QaOqX5ERi0faWjyifQ6dr-pWw@mail.gmail.com>
Gang Hu <ganghu@cs.columbia.edu> writes:
> If a crash happens after the rename(), the data may have not been > completely flushed into the index file, so the user may face an empty > or corrupted index file.
Yeah, probably we should add fsync_or_die() at the end of write_index() in read-cache.c, possibly protect it with fsync_object_files just like we do in close_sha1_file() in sha1_file.c for loose object files.
I think the real fix would be to update the write_index() codepath to use the csum-file API, though. Then sha1close() will give us the fsync behaviour for free.