Hi Neil, On 25 August 2017 at 07:32, NeilBrown <neilb@xxxxxxxx> wrote: > > Expand on the relationship between fstatat() and the other > three functions, and improve the description of AT_NO_AUTOMOUNT. > Specifically, both stat() and lstat() act the same way > with respect to automounts, and that behavior matches > fstatat with the AT_NO_AUTOMOUNT flag. > > The text in the NOTES is removed and places with the text for > AT_NO_AUTOMOUNT to improve cohesion. > > New text for a difference to be introduced in 4.14. Has the 4.14 piece gone in? Cheers, Michael > Cc: Ian Kent <ikent@xxxxxxxxxx> > Signed-off-by: NeilBrown <neilb@xxxxxxxx> > --- > > Thanks Ian and Michael. I considered your input and read > through the whole again, and came up with this which is > quite different to what I suggested before. > > If this patch is applied, the result probably shouldn't be released > until the relevant patch actually lands in Linus's tree. > > NeilBrown > > > man2/stat.2 | 37 ++++++++++++++++++++++++------------- > 1 file changed, 24 insertions(+), 13 deletions(-) > > diff --git a/man2/stat.2 b/man2/stat.2 > index d8a9e76b3d9f..c6dddfe0d3a7 100644 > --- a/man2/stat.2 > +++ b/man2/stat.2 > @@ -260,9 +260,12 @@ For further information on the above fields, see > .SS fstatat() > The > .BR fstatat () > -system call operates in exactly the same way as > +system call is a more general interface for accessing file information > +which can still provide exactly the behavior of each of > .BR stat (), > -except for the differences described here. > +.BR lstat (), > +and > +.BR fstat (). > .PP > If the pathname given in > .I pathname > @@ -272,6 +275,8 @@ referred to by the file descriptor > (rather than relative to the current working directory of > the calling process, as is done by > .BR stat () > +and > +.BR lstat () > for a relative pathname). > .PP > If > @@ -284,7 +289,9 @@ then > .I pathname > is interpreted relative to the current working > directory of the calling process (like > -.BR stat ()). > +.BR stat () > +and > +.BR lstat ()). > .PP > If > .I pathname > @@ -307,7 +314,11 @@ is an empty string, operate on the file referred to by > flag). > In this case, > .I dirfd > -can refer to any type of file, not just a directory. > +can refer to any type of file, not just a directory, and > +the behavior of > +.BR fstatat () > +is similar to that of > +.BR fstat (). > If > .I dirfd > is > @@ -324,6 +335,8 @@ Don't automount the terminal ("basename") component of > if it is a directory that is an automount point. > This allows the caller to gather attributes of an automount point > (rather than the location it would mount). > +Since Linux 4.14, also don't instantiate a non-existent name in an > +on-demand directory such as used for automounter indirect maps. > This flag can be used in tools that scan directories > to prevent mass-automounting of a directory of automount points. > The > @@ -333,6 +346,13 @@ This flag is Linux-specific; define > .B _GNU_SOURCE > .\" Before glibc 2.16, defining _ATFILE_SOURCE sufficed > to obtain its definition. > +Both > +.BR stat () > +and > +.BR lstat () > +act as though > +.B AT_NO_AUTOMOUNT > +was set. > .TP > .B AT_SYMLINK_NOFOLLOW > If > @@ -474,15 +494,6 @@ fields may be less portable. > The interpretation differs between systems, > and possibly on a single system when NFS mounts are involved.) > .SH NOTES > -On Linux, > -.BR lstat () > -will generally not trigger automounter action, whereas > -.BR stat () > -will (but see the description of the > -.BR fstatat () > -.B AT_NO_AUTOMOUNT > -fag, above). > -.\" > .SS Timestamp fields > Older kernels and older standards did not support nanosecond timestamp > fields. > -- > 2.14.0.rc0.dirty > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/