[OE-core] [RFC PATCH 1/2] cross-localedef-native: Add hardlink resolver from util-linux

Richard Purdie richard.purdie at linuxfoundation.org
Fri Aug 16 21:25:00 UTC 2019


On Fri, 2019-08-16 at 14:22 -0700, Khem Raj wrote:
> On Fri, Aug 16, 2019 at 2:06 PM Jason Wessel <
> jason.wessel at windriver.com> wrote:
> > The hard link resolver that is built into localedef cannot be run
> > in
> > parallel.  It will search sibling directories (which are be
> > processed
> > in parallel) and perform a creation of a .tmp file and remove the
> > original and move the .tmp file in.  The problem is that if a probe
> > occurs a hard link can be requested to the file that is being
> > removed.
> > This will lead to a stray copy or potentially, on a loaded system
> > cause race condition which pseudo cannot deal with, where it is
> > left
> > with a hard link request to a file that no longer exists.  In this
> > situation psuedo will inherit the permissions of what ever the
> > target
> > inode had to offer.
> > 
> > In short, there are two problems:
> > 
> >   1) You will be left with stray copies when using the hard link
> >      resolution that is built in while running in parallel with
> >      localedef.
> > 
> >   2) When running under pseudo the possibility exists for uid/gid
> >      leakage when the source file is removed before the hard link
> > can
> >      be completed.
> > 
> > The solution is to call localedef with --no-hard-links and
> > separately
> > process the hardlinks at a later point.  To do this requires the
> > inclusion of the hardlink utility found in modern versions of
> > util-linux.  Most host systems do not have this, so it will be
> > included with the cross-localedef binary.
> > 
> 
> can we depend on util-linux-native for this ?

This was discussed on IRC. We really really want to avoid that as a
dependency if we care about build performance. Its really easy to just
add that in but the implications are significant :(

Cheers,

Richard





More information about the Openembedded-core mailing list