#include <linux/kmod.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/mount.h>
#include <linux/namei.h>
#include <linux/slab.h>
#include <linux/sunrpc/cache.h>
#include <linux/sunrpc/rpc_pipe_fs.h>
#include <net/net_namespace.h>
#include "cache_lib.h"
#define NFS_CACHE_UPCALL_PATHLEN …
#define NFS_CACHE_UPCALL_TIMEOUT …
static char nfs_cache_getent_prog[NFS_CACHE_UPCALL_PATHLEN] = …;
static unsigned long nfs_cache_getent_timeout = …;
module_param_string(…);
MODULE_PARM_DESC(…) …;
module_param_named(cache_getent_timeout, nfs_cache_getent_timeout, ulong, 0600);
MODULE_PARM_DESC(…) …;
int nfs_cache_upcall(struct cache_detail *cd, char *entry_name)
{ … }
void nfs_cache_defer_req_put(struct nfs_cache_defer_req *dreq)
{ … }
static void nfs_dns_cache_revisit(struct cache_deferred_req *d, int toomany)
{ … }
static struct cache_deferred_req *nfs_dns_cache_defer(struct cache_req *req)
{ … }
struct nfs_cache_defer_req *nfs_cache_defer_req_alloc(void)
{ … }
int nfs_cache_wait_for_upcall(struct nfs_cache_defer_req *dreq)
{ … }
int nfs_cache_register_sb(struct super_block *sb, struct cache_detail *cd)
{ … }
int nfs_cache_register_net(struct net *net, struct cache_detail *cd)
{ … }
void nfs_cache_unregister_sb(struct super_block *sb, struct cache_detail *cd)
{ … }
void nfs_cache_unregister_net(struct net *net, struct cache_detail *cd)
{ … }