summaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorJeff Layton <jeff.layton@primarydata.com>2020-11-30 17:03:15 -0500
committerChuck Lever <chuck.lever@oracle.com>2020-12-09 09:39:38 -0500
commitba5e8187c55555519ae0b63c0fb681391bc42af9 (patch)
treefaf38e3d92e1e1b9f96571a52c4c53810e2fd394 /fs/nfsd
parentdaab110e47f8d7aa6da66923e3ac1a8dbd2b2a72 (diff)
downloadlinux-ba5e8187c55555519ae0b63c0fb681391bc42af9.tar.gz
linux-ba5e8187c55555519ae0b63c0fb681391bc42af9.tar.bz2
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 'fs/nfsd')
-rw-r--r--fs/nfsd/export.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 21e404e7cb68..81e7bb12aca6 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -408,6 +408,12 @@ static int check_export(struct inode *inode, int *flags, unsigned char *uuid)
return -EINVAL;
}
+ if (inode->i_sb->s_export_op->flags & EXPORT_OP_NOSUBTREECHK &&
+ !(*flags & NFSEXP_NOSUBTREECHECK)) {
+ dprintk("%s: %s does not support subtree checking!\n",
+ __func__, inode->i_sb->s_type->name);
+ return -EINVAL;
+ }
return 0;
}