Skip to content

Port "builtin/add: enable fscache around repo_read_index_preload" to vfs-2.54.0#902

Merged
dscho merged 2 commits into
microsoft:vfs-2.54.0from
tonybaloney:wsl-fscache-add
Apr 28, 2026
Merged

Port "builtin/add: enable fscache around repo_read_index_preload" to vfs-2.54.0#902
dscho merged 2 commits into
microsoft:vfs-2.54.0from
tonybaloney:wsl-fscache-add

Conversation

@dscho

@dscho dscho commented Apr 28, 2026

Copy link
Copy Markdown
Member

This is a companion of #899 and git-for-windows#6216.

Trace2 + GIT_TRACE_FSCACHE evidence on Windows ARM64 (Snapdragon X Elite, ReFS Dev Drive) shows that the heaviest lstat-bound work in git add happens inside repo_read_index_preload(), which currently runs before enable_fscache() is called. Moving the enable up so the preload phase is wrapped lets the existing batched NtQueryDirectoryFile cache cover the bulk of the lstat traffic. This patch gave me a ~30% performance improvement on a large git repo with a batched add.

Also at the end of cmd_add(): the cleanup site called enable_fscache(0) again instead of disable_fscache(), leaking the refcount.

Anthony Shaw added 2 commits April 28, 2026 09:40
Trace2 + GIT_TRACE_FSCACHE evidence on Windows ARM64 (Snapdragon X
Elite, ReFS Dev Drive) shows that the heaviest `lstat()`-bound work in
`git add` happens inside `repo_read_index_preload()`, which currently
runs *before* `enable_fscache()` is called. Moving the enable up so the
preload phase is wrapped lets the existing batched
`NtQueryDirectoryFile()` cache cover the bulk of the lstat traffic.

Signed-off-by: Anthony Shaw <anthonyshaw@microsoft.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Fix a copy-paste bug at the end of `cmd_add()`: the cleanup site called
`enable_fscache(0)` again instead of `disable_fscache()`, leaking the
refcount. Harmless in a one-shot process today, but it confuses the
matching enable/disable contract that callers and reviewers expect.

Signed-off-by: Anthony Shaw <anthonyshaw@microsoft.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
@dscho dscho requested a review from mjcheetham April 28, 2026 13:31
@dscho dscho self-assigned this Apr 28, 2026
@dscho dscho merged commit 6d20654 into microsoft:vfs-2.54.0 Apr 28, 2026
310 of 316 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant