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

Re: [PATCH v3] diff-lib: Fix check_removed when fsmonitor is on

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 12, 2023, 17:07 UTC
Message-ID
<xmqqfs3jpbg2.fsf@gitster.g>
In-Reply-To
<CAJiyOijMvqK184wFgoXFyX5kmURkX3k2OmuiBpArikj26iHpMA@mail.gmail.com>
Josip Sokcevic <sokcevic@google.com> writes:
> Yes, I agree we should optimize this in a follow up. One thing I'm not
> sure about is if we should try to construct `struct stat` using
> `cache_index`, or we should check for `CE_FSMONITOR_VALID` in a way
> that `stat` would no longer be needed for those code paths.
Good point.  

It seems to be entirely doable, even though the stench from the abstraction layer violation may be horrible.

ie_match_stat(), which is called by match_stat_with_submodule(), does pay attention to CE_FSMONITOR_VALID bit, so none of the members of struct stat matters when the bit is set. But the bit is not set, all members that fill_stat_data() and ce_match_stat_basic() care about do matter. Other code that follows callers of check_removed() do care about at least .st_mode member, and I suspect that in the current code .st_mode is the only member that gets looked at.

So after all, I think your original "fix" was correct, but it took us some time to figure out why it was, which means we would want to explain it in the log message for developers who would want to touch the same area in the future.

Thanks.
Previous: Josip SokcevicNext: Josip Sokcevic
Message 16 of 18 in “Strange diff-index with fsmonitor, submodules”
  1. Jonathan TanAug 29, 2023
  2. Junio C HamanoAug 29, 2023
  3. Jeff HostetlerAug 29, 2023
  4. Jeff HostetlerAug 29, 2023
  5. Jonathan TanAug 29, 2023
  6. [diff-lib] Fix check_removed when fsmonitor is onJosip Sokcevic, Sep 6, 2023
  7. Jonathan TanSep 6, 2023
  8. diff-lib: Fix check_removed when fsmonitor is onJosip Sokcevic, Sep 7, 2023
  9. Jonathan TanSep 7, 2023
  10. Junio C HamanoSep 7, 2023
  11. Josip SokcevicSep 7, 2023
  12. Junio C HamanoSep 8, 2023
  13. diff-lib: Fix check_removed when fsmonitor is onJosip Sokcevic, Sep 11, 2023
  14. Junio C HamanoSep 11, 2023
  15. Josip SokcevicSep 12, 2023
  16. Junio C HamanoSep 12, 2023
  17. Josip SokcevicSep 14, 2023
  18. Junio C HamanoSep 18, 2023

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.