Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Sep 2006 17:43:32 +0400
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        current@FreeBSD.org
Subject:   Re: lockf in installworld -- not a good idea
Message-ID:  <20060929134332.GD4776@rambler-co.ru>
In-Reply-To: <20060929141709.E70454@fledge.watson.org>
References:  <20060929141709.E70454@fledge.watson.org>

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

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

On Fri, Sep 29, 2006 at 02:20:06PM +0100, Robert Watson wrote:
>=20
> >revision 1.72
> >date: 2005/11/03 08:56:39;  author: ru;  state: Exp;  lines: +1 -0
> >Serialize access to the info/dir file; needed for parallel installs.
> >
> >Reported by:    scottl
> >
> >I'm not very fond of using the non-standard lockf(1) here, but I
> >have no better idea at the moment.  NetBSD uses ln(1) to create a
> >lock file, but this approach can result in a deadlock if make is
> >interrupted, leaving an orphaned lock file.
>=20
> I'm not sure why this suddenly showed up in my configuration, but this is=
=20
> preventing me from installing world on an NFS mounted file system without=
=20
> rpc.lockd running.  I get the following:
>=20
> =3D=3D=3D> lib/libcom_err/doc (install)
> lockf -k /usr/share/info/dir  install-info --quiet =20
> --defsection=3D"Programming &
> development tools."  --defentry=3D"* libcom_err: (com_err).        A Comm=
on=20
> Error
> Description Library for UNIX."  com_err.info /usr/share/info/dir
> lockf: cannot open /usr/share/info/dir: Operation not supported
> *** Error code 73
>=20
> Stop in /zoo/rwatson/netperf/RELENG_6/src/lib/libcom_err/doc.
> *** Error code 1
>=20
> Stop in /zoo/rwatson/netperf/RELENG_6/src/lib/libcom_err.
> *** Error code 1
>=20
The necessity to run rpc.lockd is documented in the build(7)
manpage.  Quote:

: installworld     Install everything built by a preceding buildworld step
:                  into the directory hierarchy pointed to by make(1) vari-
:                  able DESTDIR.
:=20
:                  If installing onto an NFS file system, make sure that
:                  rpc.lockd(8) is running on both client and server.  See
:                  rc.conf(5) on how to make it start at boot time.

> I've noticed an increasing intolerance in our tools for system install an=
d=20
> maintenance to locking not being implemented over the past few years.  I =
no=20
> longer get working cron on boxes with neither rpc.lockd nor local locking=
=20
> enabled, for example.  Installworld represents a bigger problem, since I=
=20
> don't want to have to depend on a completely working rpc chain in order t=
o=20
> installworld, nor depend on running in what would effectively be multiuse=
r=20
> mode.  Surely there's a better fix for this than adding lockf use?
>=20
I don't know of a better fix.  Another approach is that mentioned
in the commit log and used by NetBSD.  I tried it, and it was very
fragile -- it could easily leave the temporary file around, and
that would stuck forever another instances.

The problem at hand is that multiple instances of install-info(1)
are attempting to write to the ${DESTDIR}/usr/share/info/dir file.
If you have a better idea, don't hesitate to let me know.  I'd
very much like to get rid of that as well.


Cheers,
--=20
Ruslan Ermilov
ru@FreeBSD.org
FreeBSD committer

--Km1U/tdNT/EmXiR1
Content-Type: application/pgp-signature
Content-Disposition: inline

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

iD8DBQFFHSMEqRfpzJluFF4RAsKRAKCZx4lQziJRibkA15786ZmqHsB+zgCeI77P
SNAAg2xagRiUMTtwlr11gnY=
=mXpp
-----END PGP SIGNATURE-----

--Km1U/tdNT/EmXiR1--



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