lockf in installworld -- not a good idea
Ruslan Ermilov
ru at FreeBSD.org
Fri Sep 29 06:46:28 PDT 2006
On Fri, Sep 29, 2006 at 02:20:06PM +0100, Robert Watson wrote:
>
> >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.
>
> I'm not sure why this suddenly showed up in my configuration, but this is
> preventing me from installing world on an NFS mounted file system without
> rpc.lockd running. I get the following:
>
> ===> lib/libcom_err/doc (install)
> lockf -k /usr/share/info/dir install-info --quiet
> --defsection="Programming &
> development tools." --defentry="* libcom_err: (com_err). A Common
> 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
>
> Stop in /zoo/rwatson/netperf/RELENG_6/src/lib/libcom_err/doc.
> *** Error code 1
>
> Stop in /zoo/rwatson/netperf/RELENG_6/src/lib/libcom_err.
> *** Error code 1
>
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.
:
: 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 and
> maintenance to locking not being implemented over the past few years. I no
> longer get working cron on boxes with neither rpc.lockd nor local locking
> enabled, for example. Installworld represents a bigger problem, since I
> don't want to have to depend on a completely working rpc chain in order to
> installworld, nor depend on running in what would effectively be multiuser
> mode. Surely there's a better fix for this than adding lockf use?
>
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,
--
Ruslan Ermilov
ru at FreeBSD.org
FreeBSD committer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20060929/2efcfbe5/attachment.pgp
More information about the freebsd-current
mailing list