Re: Do we really need d_weak_revalidate???

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Neil,

On 24 August 2017 at 06:07, NeilBrown <neilb@xxxxxxxx> wrote:
> On Wed, Aug 23 2017, Ian Kent wrote:
>
>>
>> That inconsistency has bothered me for quite a while now.
>>
>> It was carried over from the autofs module behavior when automounting
>> support was added to the VFS. What's worse is it prevents the use of
>> the AT_NO_AUTOMOUNT flag from working properly with fstatat(2) and with
>> statx().
>>
>> There is some risk in changing that so it does work but it really does
>> need to work to enable userspace to not trigger an automount by using
>> this flag.
>>
>> So that's (hopefully) going to change soonish, see:
>> http://ozlabs.org/~akpm/mmotm/broken-out/autofs-fix-at_no_automount-not-being-honored.patch
>>
>> The result should be that stat family calls don't trigger automounts except
>> for fstatat(2) and statx() which will require the AT_NO_AUTOMOUNT flag.
>>
>
> oooh, yes.  That's much better - thanks.
>
> We should make sure that change gets into the man pages...
>
> First however, we should probably correct the man page!
> stat.2 says:
>
>
>   NOTES
>        On Linux, lstat() will generally not trigger  automounter
>        action,  whereas  stat()  will  (but  see  the description of
>        fstatat() AT_NO_AUTOMOUNT fag, above).
>
> which is wrong: lstat and stat treat automounts the same.
> @Michael: do you recall why you inserted that text?  The commit message
> in commit 1ef5b2805471 ("stat.2: Cosmetic reworking of timestamp
> discussion in NOTES") is not very helpful.

That commit really was just cosmetic changes. The change that
introduced the text was 82d2be3d9d66b7, based on a note from Peter
Anvin:

[[
    > > Additionally, you may want to make a note in the stat/lstat man page tha
t on
    > > Linux, lstat(2) will generally not trigger automounter action, whereas
    > > stat(2) will.
    >
    > I don't understand this last piece.  Can you say some more.  (I'm not
    > familiar with automounter details.)

    An automounter (either an explicit one, like autofs, or an implicit
    one, such as are used by AFS or NFSv4) is something that triggers
    a mount when something is touched.

    However, it's undesirable to automount, say, everyone's home
    directory just because someone opened up /home in their GUI
    browser or typed "ls -l /home".  The early automounters simply
    didn't list the contents until you accessed it by name;
    this is still the case when you can't enumerate a mapping
    (say, all DNS names under /net).  However, this is extremely
    inconvenient, too.

    The solution we ended up settling on is to create something
    that looks like a directory (i.e. reports S_IFDIR in stat()),
    but behaves somewhat like a symlink.  In particular, when it is
    accessed in a way where a symlink would be dereferenced,
    the automount triggers and the directory is mounted.  However,
    system calls which do *not* cause a symlink to be dereferenced,
    like lstat(), also do not cause the automounter to trigger.
    This means that "ls -l", or a GUI file browser, can see a list
    of directories without causing each one of them to be automounted.

            -hpa
]]

Cheers,

Michael

> I propose correcting to
>
>   NOTES:
>       On Linux, lstat() nor stat() act as though AT_NO_AUTOMOUNT was set
>       and will not trigger automounter action for direct automount
>       points, though they may (prior to 4.14) for indirect automount
>       points.
>
>
> The more precise details, that automount action for indirect automount
> points is not triggered when the 'browse' option is used, is probably
> not necessary.
>
> Ian: if you agree with that text, and Michael doesn't provide alternate
> evidence, I'll submit a formal patch for the man page.... or should we
> just wait until the patch actually lands?
>
> Thanks,
> NeilBrown
>



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux