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

Re: [PATCH] dir.c: avoid stat() in valid_cached_dir()

From
Duy Nguyen <pclouds@gmail.com>
Date
Jan 1, 2018, 23:57 UTC
Message-ID
<CACsJy8BnxOz9brnkyZ58guTsUhgKKN_XQvbYaZJz17888pgHoQ@mail.gmail.com>
In-Reply-To
<xmqq608qllcd.fsf@gitster.mtv.corp.google.com>
On Fri, Dec 29, 2017 at 2:10 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 23 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>>>  [1] https://public-inbox.org/git/CACsJy8AmbKSp0mDLRaDCWn45veeNc03B-Gq8r8PQPrDt9bM_EA@mail.gmail.com/
>>>
>>>  dir.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/dir.c b/dir.c
>>> index 7c4b45e30e..edcb7bb462 100644
>>> --- a/dir.c
>>> +++ b/dir.c
>>> @@ -1809,7 +1809,7 @@ static int valid_cached_dir(struct dir_struct *dir,
>>>       */
>>>      refresh_fsmonitor(istate);
>>>      if (!(dir->untracked->use_fsmonitor && untracked->valid)) {
>>> -            if (stat(path->len ? path->buf : ".", &st)) {
>>> +            if (lstat(path->len ? path->buf : ".", &st)) {
>
> Hmph, I have to wonder if this is sufficient, though.  When you got
> "a/b/c" in path->buf, is it sufficient to avoid mistaking 'c' that
> is (eh, rather, "has unexpectedly turned into") a symbolic link to a
> directory as a true directory?  Wouldn't we have to be equally careful
> about "a" and "a/b" as well?

We do. But the way directory traversal works, I believe a and a/b must have been checked (by this function too) before we call valid_cached_dir("a/b/c").

-- 
Duy
Previous: Junio C HamanoNext: Ævar Arnfjörð Bjarmason
Message 4 of 13 in “dir.c: avoid stat() in valid_cached_dir()”
  1. dir.c: avoid stat() in valid_cached_dir()Nguyễn Thái Ngọc Duy, Dec 28, 2017
  2. Junio C HamanoDec 28, 2017
  3. Junio C HamanoDec 28, 2017
  4. Duy NguyenJan 1, 2018
  5. 0/5 untracked cache bug fixesÆvar Arnfjörð Bjarmason, Jan 3, 2018
  6. 1/5 status: add a failing test showing a core.untrackedCache bugÆvar Arnfjörð Bjarmason, Jan 3, 2018
  7. 3/5 dir.c: fix missing dir invalidation in untracked codeÆvar Arnfjörð Bjarmason, Jan 3, 2018
  8. 4/5 update-index doc: note a fixed bug in the untracked cacheÆvar Arnfjörð Bjarmason, Jan 3, 2018
  9. 5/5 dir.c: stop ignoring opendir() error in open_cached_dir()Ævar Arnfjörð Bjarmason, Jan 3, 2018
  10. Duy NguyenJan 7, 2018
  11. 2/5 dir.c: avoid stat() in valid_cached_dir()Ævar Arnfjörð Bjarmason, Jan 3, 2018
  12. Ævar Arnfjörð BjarmasonDec 28, 2017
  13. Duy NguyenJan 2, 2018

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.