#include <linux/module.h>
#include <linux/dcache.h>
#include <linux/gfp.h>
#include <linux/mount.h>
#include <linux/namei.h>
#include <linux/nfs_fs.h>
#include <linux/string.h>
#include <linux/sunrpc/clnt.h>
#include <linux/vfs.h>
#include <linux/sunrpc/gss_api.h>
#include "internal.h"
#include "nfs.h"
#define NFSDBG_FACILITY …
static void nfs_expire_automounts(struct work_struct *work);
static LIST_HEAD(nfs_automount_list);
static DECLARE_DELAYED_WORK(nfs_automount_task, nfs_expire_automounts);
int nfs_mountpoint_expiry_timeout = …;
char *nfs_path(char **p, struct dentry *dentry_in, char *buffer,
ssize_t buflen_in, unsigned flags)
{ … }
EXPORT_SYMBOL_GPL(…);
struct vfsmount *nfs_d_automount(struct path *path)
{ … }
static int
nfs_namespace_getattr(struct mnt_idmap *idmap,
const struct path *path, struct kstat *stat,
u32 request_mask, unsigned int query_flags)
{ … }
static int
nfs_namespace_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
struct iattr *attr)
{ … }
const struct inode_operations nfs_mountpoint_inode_operations = …;
const struct inode_operations nfs_referral_inode_operations = …;
static void nfs_expire_automounts(struct work_struct *work)
{ … }
void nfs_release_automount_timer(void)
{ … }
int nfs_do_submount(struct fs_context *fc)
{ … }
EXPORT_SYMBOL_GPL(…);
int nfs_submount(struct fs_context *fc, struct nfs_server *server)
{ … }
EXPORT_SYMBOL_GPL(…);
static int param_set_nfs_timeout(const char *val, const struct kernel_param *kp)
{ … }
static int param_get_nfs_timeout(char *buffer, const struct kernel_param *kp)
{ … }
static const struct kernel_param_ops param_ops_nfs_timeout = …;
#define param_check_nfs_timeout(name, p) …
module_param(nfs_mountpoint_expiry_timeout, nfs_timeout, 0644);
MODULE_PARM_DESC(…) …;