Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Aug 2026 08:58:04 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        Kyle Evans <kevans@freebsd.org>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org,  dev-commits-src-main@freebsd.org,  Jitendra Bhati <bhatijitendra2022@gmail.com>, Mark Johnston <markj@freebsd.org>
Subject:   Re: git: 4bd01d6ae016 - main - fts: refactor to use fd-relative operations internally
Message-ID:  <CAOtMX2hvXg4dvVz8PhHP2Jrj9H9=RoG79LdGi=cd-4s38wiAjg@mail.gmail.com>
In-Reply-To: <6870a20e-5366-486e-9405-44ad57a89bf4@FreeBSD.org>
References:  <6a70e844.251cb.6995429f@gitrepo.freebsd.org> <anI2QoB7hj7CSMRq@nuc> <CAOtMX2g_U_mspHXdf3HL%2BFr-kh6XSbxR6JSTmVQ9OHDTqfckYw@mail.gmail.com> <CAOtMX2i9NxYuu=LZwLLP7NErLf4i5A7K=wLC%2B-GywchbwUZacw@mail.gmail.com> <anJiX_r4gThay5bk@nuc> <CAOtMX2j0yN9EF5fbMZ3YH7CgPS-KfNVDtgauDLva0uekkXiYDQ@mail.gmail.com> <anX6LVmcB1H5s_DY@nuc> <6870a20e-5366-486e-9405-44ad57a89bf4@FreeBSD.org>

index | next in thread | previous in thread | raw e-mail

On Mon, Aug 10, 2026 at 8:26 AM Kyle Evans <kevans@freebsd.org> wrote:
>
> 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

The "too many open file descriptors" problem should be fixed by
https://github.com/freebsd/freebsd-src/pull/2360 , and I'm doing the
final pre-commit testing of that PR right now.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2hvXg4dvVz8PhHP2Jrj9H9=RoG79LdGi=cd-4s38wiAjg>