SUNRPC: Allow the cache_detail to specify alternative upcall mechanisms
For events that are rare, such as referral DNS lookups, it makes limited sense to have a daemon constantly listening for upcalls on a channel. An alternative in those cases might simply be to run the app that fills the cache using call_usermodehelper_exec() and friends. The following patch allows the cache_detail to specify alternative upcall mechanisms for these particular cases. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@@ -145,6 +145,12 @@ idtoname_request(struct cache_detail *cd, struct cache_head *ch, char **bpp,
|
||||
(*bpp)[-1] = '\n';
|
||||
}
|
||||
|
||||
static int
|
||||
idtoname_upcall(struct cache_detail *cd, struct cache_head *ch)
|
||||
{
|
||||
return sunrpc_cache_pipe_upcall(cd, ch, idtoname_request);
|
||||
}
|
||||
|
||||
static int
|
||||
idtoname_match(struct cache_head *ca, struct cache_head *cb)
|
||||
{
|
||||
@@ -192,7 +198,7 @@ static struct cache_detail idtoname_cache = {
|
||||
.hash_table = idtoname_table,
|
||||
.name = "nfs4.idtoname",
|
||||
.cache_put = ent_put,
|
||||
.cache_request = idtoname_request,
|
||||
.cache_upcall = idtoname_upcall,
|
||||
.cache_parse = idtoname_parse,
|
||||
.cache_show = idtoname_show,
|
||||
.warn_no_listener = warn_no_idmapd,
|
||||
@@ -324,6 +330,12 @@ nametoid_request(struct cache_detail *cd, struct cache_head *ch, char **bpp,
|
||||
(*bpp)[-1] = '\n';
|
||||
}
|
||||
|
||||
static int
|
||||
nametoid_upcall(struct cache_detail *cd, struct cache_head *ch)
|
||||
{
|
||||
return sunrpc_cache_pipe_upcall(cd, ch, nametoid_request);
|
||||
}
|
||||
|
||||
static int
|
||||
nametoid_match(struct cache_head *ca, struct cache_head *cb)
|
||||
{
|
||||
@@ -363,7 +375,7 @@ static struct cache_detail nametoid_cache = {
|
||||
.hash_table = nametoid_table,
|
||||
.name = "nfs4.nametoid",
|
||||
.cache_put = ent_put,
|
||||
.cache_request = nametoid_request,
|
||||
.cache_upcall = nametoid_upcall,
|
||||
.cache_parse = nametoid_parse,
|
||||
.cache_show = nametoid_show,
|
||||
.warn_no_listener = warn_no_idmapd,
|
||||
|
Reference in New Issue
Block a user