git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH/RFC v3 7/9] write_entry(): use fstat() instead of lstat() when file is open

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Feb 6, 2009, 11:26 UTC
Message-ID
<alpine.DEB.1.00.0902061221150.7377@intel-tinevez-2-302>
In-Reply-To
<868wojq0xa.fsf@broadpark.no>
Hi,
On Fri, 6 Feb 2009, Kjetil Barvik wrote:
Show 10 quoted lines
> * Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> | Of course, what we _really_ would do is to provide a flag, say, 
> | FSTAT_UNRELIABLE and test for _that_ (after defining it in the Makefile 
> | for the appropriate platforms).
> 
>   Or, maybe
> 
>      #define FSTAT_RELIABLE 1
> 
>   for Linux only?

No, I think that would be wrong. Especially after Junio's remarks that fstat() is actually required to behave as you expected it, and only Windows (surprise, surprise) has problems following the standard.

Show 8 quoted lines
> Then we can change the if-test inside this patch to the following:
> 
> -  if (state->refresh_cache && !to_tempfile && !state->base_dir_len) {
> +  if (state->refresh_cache && !to_tempfile && !state->base_dir_len && 
> +      FSTAT_RELIABLE) {
> 
>   Then we do not have to have #if-defines inside the source code, only
>   in one header file.
In the spirit of consistency, I would not do that.
>   But, question: is this patch worth the extra lines added to the source
>   code?

You seemed to get a nice speedup on Linux. If Windows cannot follow suit, too bad. But I do not want to be punished because other people's OS is not as good as mine, so I _want_ fstat().

And those few lines will not hurt, they'll be readable enough.

Ciao, Dscho

Previous: Kjetil BarvikNext: Kjetil Barvik
Message 20 of 23 in “git checkout: more cleanups, optimisation, less lstat() calls”
  1. 0/9 git checkout: more cleanups, optimisation, less lstat() callsKjetil Barvik, Feb 4, 2009
  2. 1/9 lstat_cache(): small cleanup and optimisationKjetil Barvik, Feb 4, 2009
  3. 2/9 lstat_cache(): generalise longest_match_lstat_cache()Kjetil Barvik, Feb 4, 2009
  4. 3/9 lstat_cache(): swap func(length, string) into func(string, length)Kjetil Barvik, Feb 4, 2009
  5. 4/9 unlink_entry(): introduce schedule_dir_for_removal()Kjetil Barvik, Feb 4, 2009
  6. Junio C HamanoFeb 4, 2009
  7. Junio C HamanoFeb 4, 2009
  8. Kjetil BarvikFeb 4, 2009
  9. 5/9 create_directories(): remove some memcpy() and strchr() callsKjetil Barvik, Feb 4, 2009
  10. 6/9 write_entry(): cleanup of some duplicated codeKjetil Barvik, Feb 4, 2009
  11. 7/9 write_entry(): use fstat() instead of lstat() when file is openKjetil Barvik, Feb 4, 2009
  12. Johannes SixtFeb 4, 2009
  13. Junio C HamanoFeb 4, 2009
  14. Kjetil BarvikFeb 4, 2009
  15. Junio C HamanoFeb 4, 2009
  16. Johannes SixtFeb 5, 2009
  17. Johannes SchindelinFeb 5, 2009
  18. Junio C HamanoFeb 5, 2009
  19. Kjetil BarvikFeb 6, 2009
  20. Johannes SchindelinFeb 6, 2009
  21. Kjetil BarvikFeb 14, 2009
  22. 8/9 show_patch_diff(): remove a call to fstat()Kjetil Barvik, Feb 4, 2009
  23. 9/9 lstat_cache(): print a warning if doing ping-pong between cache typesKjetil Barvik, Feb 4, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.