Subject: Re: symbolic links in emulated processes
To: Arto Huusko <arto.huusko@pp2.inet.fi>
From: David Laight <david@l8s.co.uk>
List: current-users
Date: 09/18/2007 08:01:47
On Mon, Sep 17, 2007 at 11:58:42PM +0300, Arto Huusko wrote:
> Hello,
> 
> has the handling of symbolic links in emulated processes changed
> recently?
...
> ktrace of the process revealed this:
> 
>    996      1 java     NAMI  "/emul/linux/etc/nsswitch.conf"
>    996      1 java     RET   open -1 errno -40 Too many levels of
> symbolic links
> 
> /emul/linux/etc/nsswitch.conf was a symbolic link to /etc/nsswitch.conf.
> I guess it tries to resolve the symbolic link under emulation rules,
> so it ends up looking at the link again and again, until it gives up.
...
> I know for sure that this config used to work, even sometime earlier
> this year, so the change should be quite recent?

The behaviour did indeed change earlier in the year.
The change was made so that a root partition for the emulated operating
system can be used as the emulated root filesystem without having to
trawl it for absolute symbolic links and replace them with relative
ones.
This was done as part of the changes that moved the processing of
the emulated root into namei() - instead of doing all the lookup work
several times.
 
> One way to fix the problem is of course to make the symlinks point to
> /../whatever.

Indeed, and the documentation should say that!


	David

-- 
David Laight: david@l8s.co.uk