]> Git Repo - linux.git/commit - fs/nfsd/nfsfh.c
nfsd: add a new EXPORT_OP_NOWCC flag to struct export_operations
authorJeff Layton <[email protected]>
Mon, 30 Nov 2020 22:03:14 +0000 (17:03 -0500)
committerChuck Lever <[email protected]>
Wed, 9 Dec 2020 14:39:38 +0000 (09:39 -0500)
commitdaab110e47f8d7aa6da66923e3ac1a8dbd2b2a72
treef285bca50c5e78114c3e8e45e895a8525a33cc70
parent1631087ba8727db03c0ab2815dc06dc25d962b80
nfsd: add a new EXPORT_OP_NOWCC flag to struct export_operations

With NFSv3 nfsd will always attempt to send along WCC data to the
client. This generally involves saving off the in-core inode information
prior to doing the operation on the given filehandle, and then issuing a
vfs_getattr to it after the op.

Some filesystems (particularly clustered or networked ones) have an
expensive ->getattr inode operation. Atomicity is also often difficult
or impossible to guarantee on such filesystems. For those, we're best
off not trying to provide WCC information to the client at all, and to
simply allow it to poll for that information as needed with a GETATTR
RPC.

This patch adds a new flags field to struct export_operations, and
defines a new EXPORT_OP_NOWCC flag that filesystems can use to indicate
that nfsd should not attempt to provide WCC info in NFSv3 replies. It
also adds a blurb about the new flags field and flag to the exporting
documentation.

The server will also now skip collecting this information for NFSv2 as
well, since that info is never used there anyway.

Note that this patch does not add this flag to any filesystem
export_operations structures. This was originally developed to allow
reexporting nfs via nfsd.

Other filesystems may want to consider enabling this flag too. It's hard
to tell however which ones have export operations to enable export via
knfsd and which ones mostly rely on them for open-by-filehandle support,
so I'm leaving that up to the individual maintainers to decide. I am
cc'ing the relevant lists for those filesystems that I think may want to
consider adding this though.

Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Jeff Layton <[email protected]>
Signed-off-by: Lance Shelton <[email protected]>
Signed-off-by: Trond Myklebust <[email protected]>
Signed-off-by: Chuck Lever <[email protected]>
Documentation/filesystems/nfs/exporting.rst
fs/nfs/export.c
fs/nfsd/nfs3xdr.c
fs/nfsd/nfsfh.c
fs/nfsd/nfsfh.h
include/linux/exportfs.h
This page took 0.049193 seconds and 4 git commands to generate.