linux/fs/nfs
Al Viro c64cd6e34e reimplement path_mountpoint() with less magic
... and get rid of a bunch of bugs in it.  Background:
the reason for path_mountpoint() is that umount() really doesn't
want attempts to revalidate the root of what it's trying to umount.
The thing we want to avoid actually happen from complete_walk();
solution was to do something parallel to normal path_lookupat()
and it both went overboard and got the boilerplate subtly
(and not so subtly) wrong.

A better solution is to do pretty much what the normal path_lookupat()
does, but instead of complete_walk() do unlazy_walk().  All it takes
to avoid that ->d_weak_revalidate() call...  mountpoint_last() goes
away, along with everything it got wrong, and so does the magic around
LOOKUP_NO_REVAL.

Another source of bugs is that when we traverse mounts at the final
location (and we need to do that - umount . expects to get whatever's
overmounting ., if any, out of the lookup) we really ought to take
care of ->d_manage() - as it is, manual umount of autofs automount
in progress can lead to unpleasant surprises for the daemon.  Easily
solved by using handle_lookup_down() instead of follow_mount().

Tested-by: Ian Kent <raven@themaw.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2020-01-15 01:36:06 -05:00
..
blocklayout treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
filelayout pNFS/filelayout: enable LAYOUTGET on OPEN 2019-09-24 16:28:38 -04:00
flexfilelayout pNFS/flexfiles: Don't time out requests on hard mounts 2019-08-26 15:31:29 -04:00
cache_lib.c NFS client updates for Linux 4.15 2017-11-17 14:18:00 -08:00
cache_lib.h NFS client updates for Linux 4.15 2017-11-17 14:18:00 -08:00
callback_proc.c NFSv4: nfs4_callback_getattr() should ignore revoked delegations 2019-11-03 21:28:45 -05:00
callback_xdr.c NFSv4: NFSv4 callbacks also support 64-bit timestamps 2019-11-03 21:28:44 -05:00
callback.c SUNRPC: Cache the process user cred in the RPC server listener 2019-04-24 09:46:35 -04:00
callback.h NFSv4: NFSv4 callbacks also support 64-bit timestamps 2019-11-03 21:28:44 -05:00
client.c NFSv4.1: Don't rebind to the same source port when reconnecting to the server 2019-11-03 21:28:45 -05:00
delegation.c NFSv4: Handle NFS4ERR_OLD_STATEID in delegreturn 2019-11-03 21:28:46 -05:00
delegation.h NFSv4: Revoke the delegation on success in nfs4_delegreturn_done() 2019-11-03 21:28:46 -05:00
dir.c NFS Client Updates for Linux 5.3 2019-09-26 12:20:14 -07:00
direct.c NFS: Remove redundant mirror tracking in O_DIRECT 2019-10-09 11:45:59 -04:00
dns_resolve.c keys: Pass the network namespace into request_key mechanism 2019-06-27 23:02:12 +01:00
dns_resolve.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
export.c NFS: Add a tracepoint in nfs_fh_to_dentry() 2019-11-03 21:28:46 -05:00
file.c NFS: Return -ETXTBSY when attempting to write to a swapfile 2019-11-18 10:43:24 +01:00
fscache-index.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
fscache.c NFS: Fix regression whereby fscache errors are appearing on 'nofsc' mounts 2019-08-04 22:35:41 -04:00
fscache.h NFS: Fix regression whereby fscache errors are appearing on 'nofsc' mounts 2019-08-04 22:35:41 -04:00
getroot.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
inode.c NFS: Convert struct nfs_fattr to use struct timespec64 2019-11-03 21:28:44 -05:00
internal.h NFS: Convert struct nfs_fattr to use struct timespec64 2019-11-03 21:28:44 -05:00
io.c NFS: Fix up documentation warnings 2019-02-20 15:14:21 -05:00
iostat.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile NFS: Create a root NFS directory in /sys/fs/nfs 2019-07-06 14:54:49 -04:00
mount_clnt.c SUNRPC: Cache cred of process creating the rpc_client 2019-04-26 16:00:48 -04:00
namespace.c NFS: If nfs_mountpoint_expiry_timeout < 0, do not expire submounts 2019-11-03 21:28:44 -05:00
netns.h NFS: Add sysfs support for per-container identifier 2019-07-06 14:54:49 -04:00
nfs2super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs2xdr.c NFSv2: Clean up timespec encode 2019-11-03 21:28:44 -05:00
nfs3_fs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs3acl.c nfs: fix xfstest generic/099 failed on nfsv3 2019-02-20 17:33:55 -05:00
nfs3client.c NFS/pnfs: Separate NFSv3 DS and MDS traffic 2019-11-03 21:28:45 -05:00
nfs3proc.c NFSv3: use nfs_add_or_obtain() to create and reference inodes 2019-09-20 15:15:24 -04:00
nfs3super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs3xdr.c NFSv3: Clean up timespec encode 2019-11-03 21:28:44 -05:00
nfs4_fs.h NFS4: Trace lock reclaims 2019-11-18 11:04:32 +01:00
nfs4client.c Merge branch 'linux-ssc-for-5.5' 2019-11-06 08:55:23 -05:00
nfs4file.c NFSv4.2 fix memory leak in nfs42_ssc_open 2019-11-18 10:50:41 +01:00
nfs4getroot.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs4idmap.c Revert "Merge tag 'keys-acl-20190703' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs" 2019-07-10 18:43:43 -07:00
nfs4idmap.h NFS: Move nfs_idmap.h into fs/nfs/ 2015-04-23 15:16:14 -04:00
nfs4namespace.c NFS: Fix up documentation warnings 2019-02-20 15:14:21 -05:00
nfs4proc.c NFSv4: add declaration of current_stateid 2019-11-18 10:36:45 +01:00
nfs4renewd.c NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'. 2018-12-19 13:52:46 -05:00
nfs4session.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
nfs4session.h NFSv4.1: Bump the default callback session slot count to 16 2019-03-02 16:25:26 -05:00
nfs4state.c NFS4: Trace lock reclaims 2019-11-18 11:04:32 +01:00
nfs4super.c NFS: Rename nfs_inode_return_delegation_noreclaim() 2019-11-03 21:28:45 -05:00
nfs4sysctl.c nfs: Do not convert nfs_idmap_cache_timeout to jiffies 2018-01-18 15:10:47 -05:00
nfs4trace.c pnfs/flexfiles: Add tracepoints for detecting pnfs fallback to MDS 2019-07-18 15:50:28 -04:00
nfs4trace.h NFS4: Trace lock reclaims 2019-11-18 11:04:32 +01:00
nfs4xdr.c Merge branch 'linux-ssc-for-5.5' 2019-11-06 08:55:23 -05:00
nfs42.h NFS based on file size issue sync copy or fallback to generic copy offload 2019-10-09 12:06:22 -04:00
nfs42proc.c NFSv4: Make _nfs42_proc_copy_notify() static 2019-11-18 10:47:38 +01:00
nfs42xdr.c NFS: add ca_source_server<> to COPY 2019-10-09 12:05:49 -04:00
nfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfsroot.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfstrace.c NFS: Add trace events to report non-zero NFS status codes 2019-02-13 12:03:21 -05:00
nfstrace.h reimplement path_mountpoint() with less magic 2020-01-15 01:36:06 -05:00
pagelist.c NFS: Fix initialisation of I/O result struct in nfs_pgio_rpcsetup 2019-08-19 08:56:04 -04:00
pnfs_dev.c NFS/flexfiles: Speed up read failover when DSes are down 2019-03-01 22:37:38 -05:00
pnfs_nfs.c pNFS/flexfiles: Turn off soft RPC calls 2019-08-26 15:31:29 -04:00
pnfs.c NFSv4: add declaration of current_stateid 2019-11-18 10:36:45 +01:00
pnfs.h pNFS: Handle NFS4ERR_OLD_STATEID on layoutreturn by bumping the state seqid 2019-09-20 15:48:35 -04:00
proc.c NFSv2: Fix write regression 2019-08-27 10:24:56 -04:00
read.c NFS: Fix spurious EIO read errors 2019-08-26 15:31:29 -04:00
super.c NFS: remove unneeded semicolon 2019-11-18 10:37:58 +01:00
symlink.c nfs: pass the correct prototype to read_cache_page 2019-05-09 16:26:57 -04:00
sysctl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sysfs.c fs: nfs: sysfs: Remove NULL check before kfree 2019-11-18 10:38:04 +01:00
sysfs.h NFS: Add sysfs support for per-container identifier 2019-07-06 14:54:49 -04:00
unlink.c fsnotify: move fsnotify_nameremove() hook out of d_delete() 2019-06-20 14:47:44 +02:00
write.c nfs: Fix nfsi->nrequests count error on nfs_inode_remove_request 2019-10-02 08:52:17 -04:00