Files
freebsd/include
Jitendra Bhati dd532ad133 fts: reduce fd usage by storing fts_dirfd on directory entries only
Previously fts_build() called _dup(_dirfd(dirp)) for every child
entry, holding N simultaneous fds for a directory with N children.

Redefine fts_dirfd: instead of a fd for the entry's parent
directory, it is now a fd for the entry itself, set only for
directory entries. One dup per directory in fts_build() instead
of one per child.  Close fts_dirfd during the directory post-order
visit, before advancing to its sibling.

To access a file using fd-relative operations, callers should use
openat(ent->fts_parent->fts_dirfd, ent->fts_name, ...) instead of
openat(ent->fts_dirfd, ent->fts_name, ...).  The fd is valid until the
directory's post-order visit (FTS_DP).

Reported by:    Mark Johnston <[email protected]>
Fixes:          4bd01d6ae0 (fts: refactor to use fd-relative operations)
Sponsored by:   Google LLC (GSoC 2026)
Reviewed by:	asomers
Pull Request:	https://github.com/freebsd/freebsd-src/pull/2360
2026-08-10 10:14:16 -06:00
..
…
2026-02-02 21:20:16 +00:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
…
…
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2025-09-11 17:12:22 +02:00
…
2023-11-26 22:23:28 -07:00
…
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
…
2023-11-26 22:23:28 -07:00
2026-06-22 15:23:48 +02:00
…
…
2025-06-11 17:16:20 -06:00
…
2023-11-26 22:23:28 -07:00
2024-10-14 10:26:17 -07:00
…
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
…
2024-08-26 18:27:29 +02:00
2026-05-27 00:05:45 +01:00
…
2026-01-19 18:49:57 +02:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2026-07-06 14:23:50 +02:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
2025-06-11 17:16:22 -06:00
2023-11-26 22:23:28 -07:00
2026-01-06 20:26:59 -05:00
2026-03-06 01:46:53 +02:00
2023-11-26 22:23:28 -07:00
2023-11-26 22:23:28 -07:00
…
2023-11-26 22:23:28 -07:00
…
2023-11-26 22:23:28 -07:00
2025-11-28 16:19:53 +01:00
…
2026-05-10 17:53:20 +03:00
2023-11-26 22:23:28 -07:00
…
…
…
…
…