On 31/08/2026 17:34, Iván Ezequiel Rodriguez wrote:
Replace the O(N) scan of watched names on each directory inotify event
with a Hash_table keyed by (parent_wd, basename), addressing the
long-standing FIXME in tail_forever_inotify.
Keep ownership consistent with wd_to_name: parent_by_name is created
only for Follow_name and returned to the caller, so fallback paths can
return without local hash cleanup.
Hash basenames with hash_string() and mix in parent_wd, matching the
existing gnulib helper rather than a hand-rolled string hash.
Matching cost for N directory events that each compare against N names
(illustrative host timings of the scan vs hash lookup alone):
N=1000: ~0.018s -> ~0.000s
N=5000: ~0.39s -> ~0.000s
N=10000: ~1.5s -> ~0.000s
End-to-end recreate storms remain largely file-system bound on this
host; the hash removes the quadratic name-matching CPU from that path.
Thanks for this.
We'll have a look after the impending v9.12 release.
Padraig