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>