author | Linus Torvalds <torvalds@linux-foundation.org> | |
Sat, 14 Jun 2008 18:32:37 +0000 (11:32 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sat, 14 Jun 2008 21:39:22 +0000 (14:39 -0700) | ||
commit | 44d1c19ee8ab405108b90ab9c02cd86a014639e8 | |
tree | b01368f217f11c3963f23f3a0265b5afa92de756 | tree | snapshot |
parent | 5723fe7e3cbbefae78bfb79c46b7716eef76fe52 | commit | diff |
Make loose object file reading more careful
We used to do 'stat()+open()+mmap()+close()' to read the loose object
file data, which does work fine, but has a couple of problems:
- it unnecessarily walks the filename twice (at 'stat()' time and then
again to open it)
- NFS generally has open-close consistency guarantees, which means that
the initial 'stat()' was technically done outside of the normal
consistency rules.
So change it to do 'open()+fstat()+mmap()+close()' instead, which avoids
both these issues.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
We used to do 'stat()+open()+mmap()+close()' to read the loose object
file data, which does work fine, but has a couple of problems:
- it unnecessarily walks the filename twice (at 'stat()' time and then
again to open it)
- NFS generally has open-close consistency guarantees, which means that
the initial 'stat()' was technically done outside of the normal
consistency rules.
So change it to do 'open()+fstat()+mmap()+close()' instead, which avoids
both these issues.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c | diff | blob | history |