Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Aug 2012 21:12:14 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Bernhard Fr?hlich <decke@freebsd.org>
Cc:        Garrett Cooper <yanegomi@gmail.com>, Current FreeBSD <freebsd-current@freebsd.org>, Paul Schenkeveld <freebsd@psconsult.nl>
Subject:   Re: make package fails in chroot: tar: getvfsbyname failed: No such file or directory
Message-ID:  <20120827181214.GD33100@deviant.kiev.zoral.com.ua>
In-Reply-To: <CAE-m3X3haXMq33eHdfcQ8SxBMhemFr38huNnEXXOdJxbo3d-TQ@mail.gmail.com>
References:  <20120812132047.GA33526@psconsult.nl> <AC39BA73-E244-4A15-9E07-62CE0433B733@kientzle.com> <CAGH67wRJ4cz1vbntk-PiZ0Z58AoYo1-rm5zAhwZeTQzhU_0YQw@mail.gmail.com> <E2CBB30B-9366-429F-92B7-24677AA5E328@kientzle.com> <CAE-m3X3nymg9B5X9kYv9aRy_jKuiLF5_zw1%2B15rbeL_XpS66Hg@mail.gmail.com> <20120820123142.GY33100@deviant.kiev.zoral.com.ua> <CAE-m3X3haXMq33eHdfcQ8SxBMhemFr38huNnEXXOdJxbo3d-TQ@mail.gmail.com>

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

--jWQLpvAamslfamA3
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Aug 27, 2012 at 05:28:09PM +0200, Bernhard Fr?hlich wrote:
> On Mon, Aug 20, 2012 at 2:31 PM, Konstantin Belousov
> <kostikbel@gmail.com> wrote:
> > On Mon, Aug 20, 2012 at 01:42:31PM +0200, Bernhard Fr?hlich wrote:
> >> On Sun, Aug 19, 2012 at 10:01 PM, Tim Kientzle <tim@kientzle.com> wrot=
e:
> >> >
> >> > On Aug 19, 2012, at 12:17 PM, Garrett Cooper wrote:
> >> >
> >> >> On Sun, Aug 19, 2012 at 9:45 AM, Tim Kientzle <tim@kientzle.com> wr=
ote:
> >> >>>
> >> >>> On Aug 12, 2012, at 6:20 AM, Paul Schenkeveld wrote:
> >> >>>
> >> >>>> Hi,
> >> >>>>
> >> >>>> I have a wrapper script that builds packages in a chroot environm=
ent
> >> >>>> which happily runs on release 6 thru 9 and earlier 10 but fails w=
ith:
> >> >>>>
> >> >>>> tar: getvfsbyname failed: No such file or directory
> >> >>>>
> >> >>>> on a recent -CURRENT.
> >> >>>
> >> >>> libarchive does do an initial getvfsbyname() when you ask it
> >> >>> to traverse a directory tree so that it can accurately handle later
> >> >>> requests about mountpoints and filesystem types.  This code
> >> >>> is admittedly a little intricate.
> >> >>
> >> >>    The problem most likely is the fact that all mountpoints are
> >> >> exposed via chroot, thus, if it's checking to see if a mountpoint
> >> >> exists, it may exist outside of the chroot.
> >> >>
> >> >
> >> > I reviewed the code to refresh my memory.   Some
> >> > of what I said before was not quite right.
> >> >
> >> > Libarchive's directory traversal tracks information about
> >> > the filesystem type so that clients such as bsdtar can
> >> > efficiently skip synthetic filesystems (/dev or /proc) or
> >> > network filesystems (NFS or SMB mounts).
> >> >
> >> > The net effect is something like this:
> >> >
> >> >    For each file:
> >> >        stat() or lstat() or fstat() the file
> >> >        look up dev number in an internal cache
> >> >        if the dev number is new:
> >> >             fstatfs() the open fd to get the FS name
> >> >             getvfsbyname() to identify the FS type
> >> >
> >> > Unless there's a logic error in libarchive itself, this
> >> > would suggest that somehow fstatfs() is returning
> >> > a filesystem type that getvfsbyname() can't
> >> > identify.
> >> >
> >> > Paul:
> >> >     What filesystem are you using?
> >> >
> >> >     What does "mount" show?
> >> >
> >> >     Does it work outside the chroot?
> >>
> >> I also see the same on the redports.org build machines.
> >> It builds within a jail there which is completely on a tmpfs.
> >> Interestinly everything is fine with a 10-CURRENT/amd64
> >> jail but it breaks in a 10-CURRENT/i386 jail. Both are
> >> running on the same 10-CURRENT/amd64 which is
> >> around 2 months old.
> >>
> >> https://redports.org/buildarchive/20120814130205-56327/
> >
> > Try this.
>=20
> I've seen that it was committed to head in the meantime so
> I gave that a try. The problem still persists.
>=20
> https://redports.org/~decke/20120827152217-19891-54992/expat-2.0.1_2.log

Are you sure that you tested the right kernel ?
You may use the following test program to verify. Compile it on 32bit
system. Run it like this:
=2E/getvfsbyname devfs ufs nfs
On patched kernel, I get
sandy% ./getvfsbyname devfs ufs nfs                                        =
   ~
name devfs typenum 113 ref 2 flags 0x480000
name ufs typenum 53 ref 1 flags 0x0
name nfs typenum 58 ref 4 flags 0x20000

On unpatched machine, the result is
ooma32% ./getvfsbyname devfs ufs nfs               ~/build/bsd/DEV/stuff/te=
sts
getvfsbyname: getvfsbyname("devfs"): No such file or directory
getvfsbyname: getvfsbyname("ufs"): No such file or directory
getvfsbyname: getvfsbyname("nfs"): No such file or directory


--jWQLpvAamslfamA3
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAlA7uH4ACgkQC3+MBN1Mb4jswwCg2zA2MWxJdUNHas7hGTK7e6HO
0NYAoNlWkA+iEF8Vf7OjugemJLw9oU/A
=BL2n
-----END PGP SIGNATURE-----

--jWQLpvAamslfamA3--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120827181214.GD33100>