Date: Wed, 26 Feb 2025 23:13:52 +0200 From: Konstantin Belousov <kostikbel@gmail.com> To: Kyle Evans <kevans@freebsd.org> Cc: Ronald Klop <ronald-lists@klop.ws>, dev-commits-src-all@freebsd.org, src-committers@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: e59991206b14 - main - fts(3): be less strict when automount does its job under us walking autofs mount Message-ID: <Z7-EEDBylca1j5Py@kib.kiev.ua> In-Reply-To: <fadcc483-91b7-4f0d-8190-7a720bd7f101@FreeBSD.org> References: <985139317.7211.1740577017034@localhost> <fadcc483-91b7-4f0d-8190-7a720bd7f101@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Feb 26, 2025 at 08:03:33AM -0600, Kyle Evans wrote: > On 2/26/25 07:36, Ronald Klop wrote: > > > > *Van:* Konstantin Belousov <kib@FreeBSD.org> > > *Datum:* 25 februari 2025 08:20 > > *Aan:* src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev- > > commits-src-main@FreeBSD.org > > *Onderwerp:* git: e59991206b14 - main - fts(3): be less strict when > > automount does its job under us walking autofs mount > > > > The branch main has been updated by kib: > > > > URL: https://cgit.FreeBSD.org/src/commit/? > > id=e59991206b1463b7e85cc8aafde7f1dc03fcedcf <https:// > > cgit.FreeBSD.org/src/commit/? > > id=e59991206b1463b7e85cc8aafde7f1dc03fcedcf> > > > > commit e59991206b1463b7e85cc8aafde7f1dc03fcedcf > > Author: Konstantin Belousov > > AuthorDate: 2025-02-21 13:07:43 +0000 > > Commit: Konstantin Belousov > > CommitDate: 2025-02-25 07:09:29 +0000 > > > > fts(3): be less strict when automount does its job under us > > walking autofs mount > > > > Namely, allow the file id change if the resulting file belongs to > > automounted filesystem. If it is, remember the updated id. > > > > This allows the ids from the automounted volumes to change without > > restrictions, might be a further refinement would be to only > > allow such > > inconsistency once. > > > > PR: 284914 > > Reported and tested by: Lexi Winter > > Sponsored by: The FreeBSD Foundation > > MFC after: 1 week > > Differential revision: https://reviews.freebsd.org/D49094 > > <https://reviews.freebsd.org/D49094> > > --- > > lib/libc/gen/fts.c | 13 ++++++++++--- > > 1 file changed, 10 insertions(+), 3 deletions(-) > > > > diff --git a/lib/libc/gen/fts.c b/lib/libc/gen/fts.c > > index 770a7b2cc322..bd193c7c6cfc 100644 > > --- a/lib/libc/gen/fts.c > > +++ b/lib/libc/gen/fts.c > > @@ -1132,6 +1132,7 @@ fts_safe_changedir(FTS *sp, FTSENT *p, int fd, > > char *path) > > { > > int ret, oerrno, newfd; > > struct stat sb; > > + struct statfs sf; > > > > newfd = fd; > > if (ISSET(FTS_NOCHDIR)) > > @@ -1144,9 +1145,15 @@ fts_safe_changedir(FTS *sp, FTSENT *p, int > > fd, char *path) > > goto bail; > > } > > if (p->fts_dev != sb.st_dev || p->fts_ino != sb.st_ino) { > > - errno = ENOENT; /* disinformation */ > > - ret = -1; > > - goto bail; > > + if (_fstatfs(newfd, &sf) != 0 || > > + (sf.f_flags & MNT_AUTOMOUNTED) == 0) { > > + errno = ENOENT; /* disinformation */ > > + ret = -1; > > + goto bail; > > + } > > + /* autofs might did the mount under us, accept. */ > > + p->fts_dev = sb.st_dev; > > + p->fts_ino == sb.st_ino; > > } > > ret = fchdir(newfd); > > bail: > > > > ------------------------------------------------------------------------ > > > > > > > > /* autofs might did the mount under us, accept. */ > > > > > > I’m not native English so forgive me my question. But what does this > > comment mean? > > > > It might have triggered an autofs mount while we're running, so we just > accept the otherwise suspicious looking change. If you have a better formulation for the comment, please go ahead and commit. I did not wanted to give too formal explanation there, esp. due to the notes given in the commit message.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Z7-EEDBylca1j5Py>