Skip site navigation (1)Skip section navigation (2)
In-Reply-To: <anX6LVmcB1H5s_DY@nuc>

index | | previous in thread | raw e-mail

On 8/7/26 10:30, Mark Johnston wrote:
> On Thu, Aug 06, 2026 at 04:52:55PM -0600, Alan Somers wrote:
>> On Tue, Aug 4, 2026 at 4:06 PM Mark Johnston <markj@freebsd.org> wrote:
>>> On Tue, Aug 04, 2026 at 01:33:40PM -0600, Alan Somers wrote:
>>>> On Tue, Aug 4, 2026 at 1:00 PM Alan Somers <asomers@freebsd.org> wrote:
>>>>>
>>>>> On Tue, Aug 4, 2026 at 12:58 PM Mark Johnston <markj@freebsd.org> wrote:
>>>>>>
>>>>>> On Mon, Aug 03, 2026 at 07:13:08PM +0000, Alan Somers wrote:
>>>>>>> The branch main has been updated by asomers:
>>>>>>>
>>>>>>> URL: https://cgit.FreeBSD.org/src/commit/?id=4bd01d6ae01632501b63438b8d9a401db9744a78
>>>>>>>
>>>>>>> commit 4bd01d6ae01632501b63438b8d9a401db9744a78
>>>>>>> Author:     Jitendra Bhati <bhatijitendra2022@gmail.com>
>>>>>>> AuthorDate: 2026-06-12 17:07:55 +0000
>>>>>>> Commit:     Alan Somers <asomers@FreeBSD.org>
>>>>>>> CommitDate: 2026-08-03 19:12:28 +0000
>>>>>>>
>>>>>>>      fts: refactor to use fd-relative operations internally
>>>>>>>
>>>>>>>      Replace all _open() calls with _openat() in __fts_open(), fts_read(),
>>>>>>>      and fts_children().  Replace statfs() with _fstatfs().
>>>>>>>
>>>>>>>      Add fts_dirfd to struct _ftsent, set to the file descriptor of the
>>>>>>>      parent directory. Callers can use openat(ent->fts_dirfd, ent->fts_name,
>>>>>>>      ...) to access files safely without relying on fts_accpath, which
>>>>>>>      enables programs in capability mode to open the files described by
>>>>>>>      _ftsent.
>>>>>>>
>>>>>>>      This is a preparatory change for fts_openat() which will allow callers
>>>>>>>      to provide a pre-opened directory fd, enabling fts(3) traversal inside
>>>>>>>      Capsicum capability mode.
>>>>>>>
>>>>>>>      Mirror all fts_open() changes to fts_open_b().
>>>>>>>
>>>>>>>      As a result of expanding _ftsend, publish new ELF symbol versions for
>>>>>>>      fts_openat and related functions.
>>>>>>>
>>>>>>>      Sponsored by:   Google LLC (GSoC 2026)
>>>>>>>      Reviewed by:    asomers
>>>>>>>      Pull Request:   https://github.com/freebsd/freebsd-src/pull/2303
>>>>>>
>>>>>> Quite a few regression tests seem to be failing after this commit, e.g.,
>>>>>> some of the makefs tests: https://ci.freebsd.org/job/FreeBSD-main-amd64-test/29201/
>>>>>
>>>>> I'm testing a fix now.  I should have something ready for you soon.
>>
>> The fix is committed now, as 74bd6fb1eb02 .  Sorry for the trouble.
> 
> Thanks, but I think there are still some problems.  I'm still seeing
> vnode exhaustion while running the test suite.
> 
> First, fts_build() appears to dup() the directory entry into every
> single(!) child FTS entry.  That's slow and means that we'll potentially
> acquire a large number of fds when traversing a wide directory, enough
> to hit per-process fd limits.  Second, the return value from dup() is
> not checked, and it's not clear to me whether that's handled elsewhere.
> Finally, I'm fairly sure these dup()ed fds are leaked in various places;
> for instance, isn't fts_lfree() potentially leaking the dirfd of each
> entry it frees?
> 
> The first and last issues are probably straightforward to fix, but I'm
> not sure about the second one.  I don't think FTS can reasonably consume
> an fd for every entry in a directory, that's going to cause a lot of
> problems.
> 

Hi,

Can we go ahead and back this out until the outstanding issues are
resolved, please?

Thanks,

Kyle Evans


home | help