helix: Opening a file is *very* slow on slow FSes

TL;DR: On a slow network filesystem, opening files takes ~15x longer with helix than other editors such as vim. Helix is doing a bunch of blocking IO to detect git repos, it’d be nice to take this off the critical path or make it optional.

This is related to #6114 and #1987, but just opening files is painfully slow (e.g. when passing their path to hx on the command-line, or after using go-to-definition - there’s no fuzzy-finding going on).


Looking at strace, helix is probing for several paths relative to ancestor directories: [commondir, HEAD (twice), tags/HEAD, heads/HEAD, remotes/HEAD, refs/remotes/HEAD/HEAD, .git]. I don’t know what commondir is, the others all look git-related.

Details about this FS that help understand the log (I don't think you should care about this filesystem per se, but just to give context for the logs - the idea that accessing a bunch of unexpected parts of a network FS might be slow generalizes I think).

On this particular system the layout is /weirdfs/username/workspace/pathinworkspace. The first time you use a particular workspace is really slow - time stat says ~600ms. I guess the FUSE client has to load a bunch of metadata. Fortunately you don’t do this very often, and the metadata is cached. Trying to access a workspace that doesn’t exist is also slow (~200ms), and can’t be cached. Fortunately you never do this… except helix’s VCS probes.

Most of these are fairly fast, but reading nonexistent files in certain directories is slow. On my example helix makes >100 openat calls, of which 22 are slow (most 200ms, some a bit longer) for a total of ~5 seconds. Because their nonexistence is not cacheable, this happens every time a file is opened.

trimmed log for `strace -tT hx /weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/cxx.bnf`

(This is lightly edited:/weirdfs isn’t the real path etc. The log before this is all hx startup which is very fast, and after this it starts writing to the terminal)

16:20:17 getcwd("/weirdfs/sammccall/xkb/repo", 512) = 40 <0.000016>
16:20:17 statx(AT_FDCWD, "/usr/local/sbin/xclip", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9918b0) = -1 ENOENT (No such file or directory) <0.000013>
16:20:17 statx(AT_FDCWD, "/usr/local/bin/xclip", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9918b0) = -1 ENOENT (No such file or directory) <0.000016>
16:20:17 statx(AT_FDCWD, "/usr/sbin/xclip", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9918b0) = -1 ENOENT (No such file or directory) <0.000014>
16:20:17 statx(AT_FDCWD, "/usr/bin/xclip", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=30736, ...}) = 0 <0.000017>
16:20:17 access("/usr/bin/xclip", X_OK) = 0 <0.000017>
16:20:17 statx(AT_FDCWD, "experimental/sammccall/grammar/cxx/cxx.bnf", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0664, stx_size=31436, ...}) = 0 <0.000141>
16:20:17 statx(AT_FDCWD, "experimental/sammccall/grammar/cxx/cxx.bnf", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0664, stx_size=31436, ...}) = 0 <0.000110>
16:20:17 getcwd("/weirdfs/sammccall/xkb/repo", 512) = 40 <0.000012>
16:20:17 readlink("/weirdfs", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000128>
16:20:17 readlink("/weirdfs/sammccall", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000115>
16:20:17 readlink("/weirdfs/sammccall/xkb", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000053>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000129>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000115>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000120>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000120>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000048>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/cxx.bnf", 0x7fffef991950, 1023) = -1 EINVAL (Invalid argument) <0.000121>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/cxx.bnf", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0664, stx_size=31436, ...}) = 0 <0.000125>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/cxx.bnf", O_RDONLY|O_CLOEXEC) = 10 <0.001305>
16:20:17 read(10, "# Omitted for now:\n# - attribute"..., 8192) = 8192 <0.000214>
16:20:17 read(10, "unary-expression := ALIGNOF ( ty"..., 8192) = 8192 <0.000024>
16:20:17 read(10, "pecifier\ntype-specifier := typen"..., 8192) = 8192 <0.000121>
16:20:17 read(10, ":= import-keyword header-name\ngl"..., 8192) = 6860 <0.000016>
16:20:17 read(10, "", 8192)             = 0 <0.000012>
16:20:17 close(10)                      = 0 <0.000139>
16:20:17 readlink("/weirdfs", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000049>
16:20:17 readlink("/weirdfs/sammccall", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000103>
16:20:17 readlink("/weirdfs/sammccall/xkb", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000118>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000109>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000101>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000059>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000115>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000108>
16:20:17 readlink("/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/cxx.bnf", 0x7fffef991690, 1023) = -1 EINVAL (Invalid argument) <0.000208>
16:20:17 brk(0x55927cecc000)            = 0x55927cecc000 <0.000044>
16:20:17 getcwd("/weirdfs/sammccall/xkb/repo", 512) = 40 <0.000039>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000331>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000095>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000131>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000198>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000184>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000174>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000191>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000215>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000181>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000174>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000192>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000088>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000113>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000158>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000133>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000201>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000179>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000157>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000149>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000166>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000161>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000123>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000120>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000161>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000186>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000171>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000175>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000153>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000168>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000162>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000215>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000132>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000100>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000158>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000152>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000167>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000162>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000179>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000144>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000156>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000184>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000095>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000137>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000220>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000165>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000172>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000162>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000126>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000189>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000173>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000118>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000121>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000148>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000153>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000156>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000152>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000150>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000172>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000156>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000163>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000112>
16:20:17 statx(AT_FDCWD, "/weirdfs/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000110>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191226>
16:20:17 openat(AT_FDCWD, "/weirdfs/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191615>
16:20:18 openat(AT_FDCWD, "/weirdfs/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191353>
16:20:18 openat(AT_FDCWD, "/weirdfs/sammccall/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191550>
16:20:18 openat(AT_FDCWD, "/weirdfs/sammccall/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.193934>
16:20:18 openat(AT_FDCWD, "/weirdfs/sammccall/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191565>
16:20:18 openat(AT_FDCWD, "/weirdfs/sammccall/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191614>
16:20:19 statx(AT_FDCWD, "/weirdfs/sammccall/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000190>
16:20:19 statx(AT_FDCWD, "/weirdfs", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0777, stx_size=0, ...}) = 0 <0.000154>
16:20:19 statx(AT_FDCWD, "/weirdfs", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0777, stx_size=0, ...}) = 0 <0.000227>
16:20:19 openat(AT_FDCWD, "/weirdfs/commondir", O_RDONLY|O_CLOEXEC) = 10 <0.000450>
16:20:19 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000136>
16:20:19 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000164>
16:20:19 lseek(10, 0, SEEK_CUR)         = 0 <0.000022>
16:20:19 read(10, 0x55927ce717b0, 512)  = -1 EISDIR (Is a directory) <0.000021>
16:20:19 close(10)                      = 0 <0.000028>
16:20:19 openat(AT_FDCWD, "/weirdfs/HEAD", O_RDONLY|O_CLOEXEC) = 10 <0.000294>
16:20:19 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000128>
16:20:19 lseek(10, 0, SEEK_CUR)         = 0 <0.000022>
16:20:19 read(10, 0x55927ce84710, 128)  = -1 EISDIR (Is a directory) <0.000021>
16:20:19 statx(AT_FDCWD, "/weirdfs/HEAD", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000124>
16:20:19 close(10)                      = 0 <0.000023>
16:20:19 openat(AT_FDCWD, "/weirdfs/HEAD", O_RDONLY|O_CLOEXEC) = 10 <0.000208>
16:20:19 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000142>
16:20:19 lseek(10, 0, SEEK_CUR)         = 0 <0.000021>
16:20:19 read(10, 0x55927ce84710, 128)  = -1 EISDIR (Is a directory) <0.000019>
16:20:19 statx(AT_FDCWD, "/weirdfs/HEAD", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000124>
16:20:19 close(10)                      = 0 <0.000024>
16:20:19 openat(AT_FDCWD, "/weirdfs/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.301772>
16:20:19 openat(AT_FDCWD, "/weirdfs/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.428781>
16:20:19 openat(AT_FDCWD, "/weirdfs/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.296646>
16:20:20 openat(AT_FDCWD, "/weirdfs/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.298887>
16:20:20 statx(AT_FDCWD, "/weirdfs/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903b0) = -1 ENOENT (No such file or directory) <0.000182>
16:20:20 statx(AT_FDCWD, "/etc/localtime", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFLNK|0777, stx_size=33, ...}) = 0 <0.000026>
16:20:20 write(9, "2023-04-24T16:20:20.405 helix_vc"..., 292) = 292 <0.000048>
16:20:20 write(9, "2023-04-24T16:20:20.406 helix_vc"..., 154) = 154 <0.000026>
16:20:20 getcwd("/weirdfs/sammccall/xkb/repo", 512) = 40 <0.000023>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.001493>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000165>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000134>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000185>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000226>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000204>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000188>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000166>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000197>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/cxx/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000167>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000128>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000155>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000165>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000164>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000172>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000167>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000164>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/grammar/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000208>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000090>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000131>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000165>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000179>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000182>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000187>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000152>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000152>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/sammccall/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000172>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000138>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000147>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000184>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000165>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000176>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000164>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000147>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000156>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000104>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/experimental/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000165>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000108>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000131>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000158>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000153>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000174>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000176>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000161>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000149>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000166>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/repo/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000183>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000123>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000156>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000161>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000125>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000174>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000163>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000146>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000147>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/xkb/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000137>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall/xkb/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000197>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000108>
16:20:20 statx(AT_FDCWD, "/weirdfs/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000131>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.368557>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.192890>
16:20:20 openat(AT_FDCWD, "/weirdfs/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.193549>
16:20:21 openat(AT_FDCWD, "/weirdfs/sammccall/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191203>
16:20:21 openat(AT_FDCWD, "/weirdfs/sammccall/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.194199>
16:20:21 openat(AT_FDCWD, "/weirdfs/sammccall/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.191563>
16:20:21 openat(AT_FDCWD, "/weirdfs/sammccall/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.192426>
16:20:21 statx(AT_FDCWD, "/weirdfs/sammccall/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000183>
16:20:21 statx(AT_FDCWD, "/weirdfs", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0777, stx_size=0, ...}) = 0 <0.000189>
16:20:21 statx(AT_FDCWD, "/weirdfs", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0777, stx_size=0, ...}) = 0 <0.000165>
16:20:21 openat(AT_FDCWD, "/weirdfs/commondir", O_RDONLY|O_CLOEXEC) = 10 <0.000445>
16:20:21 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000130>
16:20:21 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000150>
16:20:21 lseek(10, 0, SEEK_CUR)         = 0 <0.000019>
16:20:21 read(10, 0x55927ccb5e80, 512)  = -1 EISDIR (Is a directory) <0.000024>
16:20:21 close(10)                      = 0 <0.000025>
16:20:21 openat(AT_FDCWD, "/weirdfs/HEAD", O_RDONLY|O_CLOEXEC) = 10 <0.000317>
16:20:21 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000132>
16:20:21 lseek(10, 0, SEEK_CUR)         = 0 <0.000019>
16:20:21 read(10, 0x55927ce84710, 128)  = -1 EISDIR (Is a directory) <0.000019>
16:20:21 statx(AT_FDCWD, "/weirdfs/HEAD", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000128>
16:20:21 close(10)                      = 0 <0.000022>
16:20:21 openat(AT_FDCWD, "/weirdfs/HEAD", O_RDONLY|O_CLOEXEC) = 10 <0.000182>
16:20:21 statx(10, "", AT_STATX_SYNC_AS_STAT|AT_EMPTY_PATH, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000130>
16:20:21 lseek(10, 0, SEEK_CUR)         = 0 <0.000023>
16:20:21 read(10, 0x55927ce84710, 128)  = -1 EISDIR (Is a directory) <0.000031>
16:20:21 statx(AT_FDCWD, "/weirdfs/HEAD", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000121>
16:20:21 close(10)                      = 0 <0.000023>
16:20:21 openat(AT_FDCWD, "/weirdfs/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.300257>
16:20:22 openat(AT_FDCWD, "/weirdfs/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.351909>
16:20:22 openat(AT_FDCWD, "/weirdfs/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.445647>
16:20:23 openat(AT_FDCWD, "/weirdfs/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.310794>
16:20:23 statx(AT_FDCWD, "/weirdfs/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7fffef9903a0) = -1 ENOENT (No such file or directory) <0.000500>
16:20:23 statx(AT_FDCWD, "/etc/localtime", AT_STATX_SYNC_AS_STAT|AT_SYMLINK_NOFOLLOW, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFLNK|0777, stx_size=33, ...}) = 0 <0.000042>
16:20:23 write(9, "2023-04-24T16:20:23.364 helix_vc"..., 292) = 292 <0.000047>
16:20:23 write(9, "2023-04-24T16:20:23.365 helix_vc"..., 164) = 164 <0.000025>
16:20:23 socketpair(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0, [10, 11]) = 0 <0.000054>

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 21 (20 by maintainers)

Commits related to this issue

Most upvoted comments

Also @Byron thanks for the quick patch! ❤️

@sam-mccall You can now test this via #6890 and I am very curious about the results 😃. Thanks for sharing.

Thanks @Byron! Results are similar to what I saw through invoking hx and git above: gix checks 8 suffixes (including HEAD twice), git checks 3.

git check-ignore -vn cxx.bnf (32 stats, ~0.2s)
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/cxx", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000881>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/cxx/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.067965>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/cxx/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000308>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/cxx/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000206>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000137>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.000268>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000143>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/grammar/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000168>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000129>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.000166>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000161>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/sammccall/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000163>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000126>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.000163>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000154>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/experimental/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000126>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000118>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.000161>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000158>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/repo/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000166>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000119>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.052788>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000299>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/clean/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000230>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall", {st_mode=S_IFDIR|0775, st_size=0, ...}, 0) = 0 <0.000163>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.000153>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000133>
11:28:22 newfstatat(AT_FDCWD, "/weirdfs/sammccall/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.209315>
11:28:23 newfstatat(AT_FDCWD, "/weirdfs", {st_mode=S_IFDIR|0777, st_size=0, ...}, 0) = 0 <0.000195>
11:28:23 newfstatat(AT_FDCWD, "/weirdfs/.git", 0x7fffe4739260, 0) = -1 ENOENT (No such file or directory) <0.000108>
11:28:23 newfstatat(AT_FDCWD, "/weirdfs/.git/HEAD", 0x7fffe4739120, AT_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory) <0.000101>
11:28:23 newfstatat(AT_FDCWD, "/weirdfs/HEAD", {st_mode=S_IFDIR|0775, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0 <0.000320>
gix exclude query cxx.bnf (23 stats, 43 opens, ~1.4s)
11:36:34 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000880>
11:36:34 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000060>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000168>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000219>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000165>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000260>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000142>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000151>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000181>
11:36:34 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/grammar/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffcc17bac10) = -1 ENOENT (No such file or directory) <0.000159>
11:36:34 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000136>
11:36:34 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000119>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000161>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000119>
11:36:34 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000176>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000163>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000168>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000179>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/sammccall/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffcc17bac10) = -1 ENOENT (No such file or directory) <0.000180>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000179>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000134>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000160>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000125>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000141>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000115>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000167>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000156>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000178>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/experimental/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffcc17bac10) = -1 ENOENT (No such file or directory) <0.000152>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000113>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000075>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000159>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000152>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000155>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000147>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000136>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000105>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000151>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/repo/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffcc17bac10) = -1 ENOENT (No such file or directory) <0.000173>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000113>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000107>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.045372>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000167>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000201>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000179>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000162>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/clean2/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000157>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall/clean2/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffcc17bac10) = -1 ENOENT (No such file or directory) <0.000119>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000134>
11:36:35 statx(AT_FDCWD, "/weirdfs/sammccall", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=0, ...}) = 0 <0.000115>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/commondir", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.208847>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.190773>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.192313>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/tags/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.195357>
11:36:35 openat(AT_FDCWD, "/weirdfs/sammccall/heads/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.192372>
11:36:36 openat(AT_FDCWD, "/weirdfs/sammccall/remotes/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.193387>
11:36:36 openat(AT_FDCWD, "/weirdfs/sammccall/refs/remotes/HEAD/HEAD", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.192397>
11:36:36 statx(AT_FDCWD, "/weirdfs/sammccall/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffcc17bac10) = -1 ENOENT (No such file or directory) <0.000239>
11:36:36 statx(AT_FDCWD, "/weirdfs", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0777, stx_size=0, ...}) = 0 <0.000191>
11:36:36 statx(AT_FDCWD, "/weirdfs", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_BASIC_STATS|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0777, stx_size=0, ...}) = 0 <0.000151>
11:36:36 openat(AT_FDCWD, "/weirdfs/commondir", O_RDONLY|O_CLOEXEC) = 3 <0.000377>

(Random aside: git could be faster here too, it appears to check .git/HEAD even after .git doesn’t exist)

@pascalkuthe This is still an issue on the latest version of the editor on Linux. When typing :o ~ in order to open a file in my home directory, the editor completely locks up up for about 30s until it loads all of the other user’s home directories for completion.

It may be good to place a timer on the autocomplete and give up if it exceeds 1s of waiting. That way typing remains responsive in the worst-case scenarios.

Oh and because real numbers are more fun!

Time from start (execve(hx...)) until the first file content gets written to screen: Before: 5.9s After: 0.12s

I’m going to go open some more files now 😃

Wow, thanks so much for the quick patch!

I can confirm I only see stats of .git directories now, and most importantly, opening files is really fast!

Zooming out a bit, on startup of hx some/path, I do see this scan happening twice (which would be fixed by caching I guess), and also a scan for [.git, .helix] which also runs twice. On my FS none of these operations are slow (I managed to find the code - it won’t try to look up any workspaces with . in the name), so I’m very happy to call this fixed. OTOH, certainly happy to provide logs if it’s still interesting.

And for good measure, I have added an option just for helix and applications like it that will only find repos with worktree, which changes the search pattern to this:

statx(AT_FDCWD, ".", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0755, stx_size=4096, ...}) = 0
statx(AT_FDCWD, "./.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0xffffc012e300) = -1 ENOENT (No such file or directory)
statx(0, NULL, AT_STATX_SYNC_AS_STAT, STATX_ALL, NULL) = -1 EFAULT (Bad address)
statx(AT_FDCWD, "/home/parallels/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0xffffc012e300) = -1 ENOENT (No such file or directory)
statx(AT_FDCWD, "/home/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0xffffc012e300) = -1 ENOENT (No such file or directory)
statx(AT_FDCWD, "/.git", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0xffffc012e300) = -1 ENOENT (No such file or directory)
Error: Could not find a git repository in '.' or in any of its parents

5 stats compared to 12 stats! Wow - unexpected!

Rust has no ergonomic interface for calling fstatat so that’s pretty hard to change and probably not worth doing judt for the directory lookup. Not sure about looking at more directories that’s probably intentional.

Cc @Byron