From: Donald Buczek <buczek@molgen.mpg.de>
To: Ian Kent <raven@themaw.net>
Cc: autofs <autofs@vger.kernel.org>
Subject: Re: "Too many levels of symbolic links"
Date: Fri, 20 May 2016 16:12:42 +0200 [thread overview]
Message-ID: <573F1B5A.2050700@molgen.mpg.de> (raw)
In-Reply-To: <1458094229.2967.72.camel@themaw.net>
On 03/16/16 03:10, Ian Kent wrote:
> On Wed, 2016-03-09 at 18:44 +0100, Donald Buczek wrote:
>> As a reminder, here is the script we used to demonstrate the problem (
>> assuming /project/mariux32 is served by autofs) :
>>
>> ===
>> #! /bin/sh
>>
>> ls -ld /project/mariux32/.
>> unshare -m -- bash -c "sleep 6;ls -ld /project/mariux32/.;echo
>> exit..." &
>> kill -USR1 `cat /var/run/autofs-running`
>> sleep 3
>> ls -ld /project/mariux32/.
>> wait
>> ===
>>
>> In your mail quoted below you wrote, the error would be avoided if "/"
>> was set to shared before automount is started, but I can't confirm
>> this.
>>
>> ===
>> root:nsa:/scratch/local/# systemctl stop automount.service
>> root:nsa:/scratch/local/# mount --make-rshared /
>> root:nsa:/scratch/local/# systemctl start automount.service
>> root:nsa:/scratch/local/# ./test.sh
>> drwxrwsr-x 6 mx32prj mx32grp 56 Feb 24 2011 /project/mariux32/.
>> ls: cannot access /project/mariux32/.: Too many levels of symbolic
>> links
>> drwxrwsr-x 6 mx32prj mx32grp 56 Feb 24 2011 /project/mariux32/.
>> exit...
>> root:nsa:/scratch/local/#
>> ===
> Actually, assuming /project is an indirect mount, I think that should
> have been OK.
My fault. It does work. I've overlooked
> unshare since util-linux version 2.27 automatically sets
propagation to private in a
> new mount namespace to make sure that the new namespace is really
> unshared. It's possible to disable this feature with option
--propagation unchanged.
So in fact it does
> unshare(CLONE_NEWNS) = 0
> mount("none", "/", NULL, MS_REC|MS_PRIVATE, NULL) = 0
If I add "--propagation unchanged" to the test script, it works. Might
be a solution for our environment.
I understand, that the combined semantics of automount and mount
namespaces are yet to be defined and there is no clear,unique way to do
that.
But independent of that, I think it might be better if autofs would
continue to try to mount on top of a dentry with DCACHE_MOUNTED set and
this might be a requirement for most of the thinkable solutions.
> Again, there's more going on, probably unshare not cloning file handles
> (the -m clones only the mount namespace I think). Without a way of
> sending mount requests to the automount daemon, which needs to be done
> via a file handle (the current pipe implementation or even if it was
> socket based) the symptom will be the same as when / is propagation
> private.
Well, with "mount --make-rshared /" and "unshare -m --propagation
unchanged" it looks like everything seems to be working. And the mounts
can be triggered from the new namespace as well. There is only one
cosmetic thing: When a automount expires, the unmount fails when the
(shared mount) in the other namespace still is busy. This generates some
log.
2016-05-20T15:43:39+02:00 deadbird automount[938]: expiring path
/project/mariux32
2016-05-20T15:43:39+02:00 deadbird automount[938]: >> umount.nfs:
/project/mariux32: device is busy
2016-05-20T15:43:39+02:00 deadbird automount[938]: >> umount.nfs:
/project/mariux32: device is busy
2016-05-20T15:43:39+02:00 deadbird automount[938]: >> umount.nfs:
/project/mariux32: device is busy
2016-05-20T15:43:39+02:00 deadbird automount[938]: Unable to update the
mtab file, /proc/mounts and /etc/mtab will differ
2016-05-20T15:43:39+02:00 deadbird automount[938]: expired /project/mariux32
Regards
Donald
>
> This is just a guess though.
>
>> Thank you!
>>
>> Donald
>>
>>
>> On 03/04/14 07:06, Ian Kent wrote:
>>> On Mon, 2014-03-03 at 10:40 +0800, Ian Kent wrote:
>>>>> That doesn't solve the problem, however, that mounts cloned by a
>>>>> unshare(CLONE_NEWNS) would never expire. Also there is another
>>>>> bug
>>>>> somewhere, because I see, that the mount, visible to the
>>>>> /usr/lib/colord/colord process was logged as "unmounted" in the
>>>>> nfs
>>>>> server when it expired in the global namespace. So I doubt it
>>>>> would be
>>>>> working even for that process. So possibly automounted mounts
>>>>> shouldn't
>>>>> be cloned at all? Together with chroot or pivot_root the
>>>>> sematics would
>>>>> be more than unclear anyway. Your problem now :-)
>>>> Hehe, like I said some people are going to be disappointed.
>>>>
>>>> There's just one question about this that remains.
>>>>
>>>> Assuming systemd is setting "/" shared what happens if "mount
>>>> --make-rprivate /" is run before autofs is started?
>>>>
>>>> So if you can spend a little more time on this an answer to this
>>>> would
>>>> be helpful.
>>> No need for this, thanks to your reproducer.
>>>
>>> In fact the problem doesn't appear happen if "/" is set shared so in
>>> your case "/" must be set either slave or private.
>>>
>>> And expanding the reproducer a bit I see another failure case too,
>>> and
>>> it doesn't appear to be the unreliable d_mountpoint() check, not
>>> sure
>>> yet exactly what it is.
>>>
>>> Thanks
>>> Ian
>>>
>>
--
Donald Buczek
buczek@molgen.mpg.de
Tel: +49 30 8413 1433
--
To unsubscribe from this list: send the line "unsubscribe autofs" in
next prev parent reply other threads:[~2016-05-20 14:12 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-29 16:02 autofs linux 3.8.13 and "Too many levels of symbolic links" Donald Buczek
2014-01-29 17:16 ` Leonardo Chiquitto
2014-01-30 0:19 ` Ian Kent
2014-01-30 10:28 ` Donald Buczek
2014-01-30 14:30 ` Ian Kent
2014-01-31 1:36 ` Ian Kent
2014-01-31 3:31 ` Ian Kent
2014-01-31 5:13 ` Ian Kent
2014-01-31 10:10 ` Donald Buczek
2014-01-31 10:29 ` Donald Buczek
2014-02-19 10:17 ` Donald Buczek
2014-02-19 10:21 ` Donald Buczek
2014-02-20 11:41 ` Ian Kent
2014-02-20 12:18 ` Ian Kent
2014-02-20 15:57 ` Donald Buczek
2014-02-21 1:42 ` Ian Kent
2014-02-21 15:15 ` Donald Buczek
2014-02-28 12:12 ` Donald Buczek
2014-02-28 13:29 ` Alexander Viro
2014-02-28 20:35 ` Donald Buczek
2014-03-01 21:56 ` Donald Buczek
2014-03-02 0:52 ` Donald Buczek
2014-03-02 2:17 ` Ian Kent
2014-03-02 8:28 ` Donald Buczek
2014-03-02 9:41 ` Ian Kent
2014-03-02 10:22 ` Donald Buczek
2014-03-02 11:03 ` Ian Kent
2014-03-02 11:15 ` Donald Buczek
2014-03-02 11:30 ` Ian Kent
2014-03-02 11:35 ` Ian Kent
2014-03-02 11:25 ` Ian Kent
2014-03-02 2:22 ` Ian Kent
2014-03-02 7:10 ` Ian Kent
2014-03-02 14:55 ` Donald Buczek
2014-03-02 18:51 ` Donald Buczek
2014-03-03 2:40 ` Ian Kent
2014-03-03 2:40 ` Ian Kent
2014-03-04 6:06 ` Ian Kent
2016-03-09 17:44 ` Donald Buczek
2016-03-16 1:32 ` Ian Kent
2016-03-16 1:58 ` Ian Kent
2016-03-16 2:10 ` Ian Kent
2016-05-20 14:12 ` Donald Buczek [this message]
2016-05-23 1:53 ` Ian Kent
2014-02-01 1:47 ` autofs linux 3.8.13 and " Ian Kent
2014-02-01 3:32 ` Ian Kent
2014-02-01 13:08 ` Donald Buczek
2014-02-01 2:57 ` Ian Kent
2014-02-01 13:01 ` Donald Buczek
2014-02-02 3:45 ` Ian Kent
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=573F1B5A.2050700@molgen.mpg.de \
--to=buczek@molgen.mpg.de \
--cc=autofs@vger.kernel.org \
--cc=raven@themaw.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.