summaryrefslogtreecommitdiffstats
path: root/Documentation/filesystems/nfs/exporting.rst
diff options
context:
space:
mode:
authorJeff Layton <jeff.layton@primarydata.com>2020-11-30 23:03:15 +0100
committerChuck Lever <chuck.lever@oracle.com>2020-12-09 15:39:38 +0100
commitba5e8187c55555519ae0b63c0fb681391bc42af9 (patch)
treefaf38e3d92e1e1b9f96571a52c4c53810e2fd394 /Documentation/filesystems/nfs/exporting.rst
parentnfsd: add a new EXPORT_OP_NOWCC flag to struct export_operations (diff)
downloadlinux-ba5e8187c55555519ae0b63c0fb681391bc42af9.tar.xz
linux-ba5e8187c55555519ae0b63c0fb681391bc42af9.zip
nfsd: allow filesystems to opt out of subtree checking
When we start allowing NFS to be reexported, then we have some problems when it comes to subtree checking. In principle, we could allow it, but it would mean encoding parent info in the filehandles and there may not be enough space for that in a NFSv3 filehandle. To enforce this at export upcall time, we add a new export_ops flag that declares the filesystem ineligible for subtree checking. Signed-off-by: Jeff Layton <jeff.layton@primarydata.com> Signed-off-by: Lance Shelton <lance.shelton@hammerspace.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'Documentation/filesystems/nfs/exporting.rst')
-rw-r--r--Documentation/filesystems/nfs/exporting.rst12
1 files changed, 12 insertions, 0 deletions
diff --git a/Documentation/filesystems/nfs/exporting.rst b/Documentation/filesystems/nfs/exporting.rst
index cbe542ad5233..960be64446cb 100644
--- a/Documentation/filesystems/nfs/exporting.rst
+++ b/Documentation/filesystems/nfs/exporting.rst
@@ -190,3 +190,15 @@ following flags are defined:
this on filesystems that have an expensive ->getattr inode operation,
or when atomicity between pre and post operation attribute collection
is impossible to guarantee.
+
+ EXPORT_OP_NOSUBTREECHK - disallow subtree checking on this fs
+ Many NFS operations deal with filehandles, which the server must then
+ vet to ensure that they live inside of an exported tree. When the
+ export consists of an entire filesystem, this is trivial. nfsd can just
+ ensure that the filehandle live on the filesystem. When only part of a
+ filesystem is exported however, then nfsd must walk the ancestors of the
+ inode to ensure that it's within an exported subtree. This is an
+ expensive operation and not all filesystems can support it properly.
+ This flag exempts the filesystem from subtree checking and causes
+ exportfs to get back an error if it tries to enable subtree checking
+ on it.