NLM: tear down RPC clients in nlm_shutdown_hosts

It's possible for a RPC to outlive the lockd daemon that created it, so
we need to make sure that all RPC's are killed when lockd is coming
down. When nlm_shutdown_hosts is called, kill off all RPC tasks
associated with the host. Since we need to wait until they have all gone
away, we might as well just shut down the RPC client altogether.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

authored by Jeff Layton and committed by J. Bruce Fields d801b861 0113ab34

+6 -1
+6 -1
fs/lockd/host.c
··· 379 /* First, make all hosts eligible for gc */ 380 dprintk("lockd: nuking all hosts...\n"); 381 for (chain = nlm_hosts; chain < nlm_hosts + NLM_HOST_NRHASH; ++chain) { 382 - hlist_for_each_entry(host, pos, chain, h_hash) 383 host->h_expires = jiffies - 1; 384 } 385 386 /* Then, perform a garbage collection pass */
··· 379 /* First, make all hosts eligible for gc */ 380 dprintk("lockd: nuking all hosts...\n"); 381 for (chain = nlm_hosts; chain < nlm_hosts + NLM_HOST_NRHASH; ++chain) { 382 + hlist_for_each_entry(host, pos, chain, h_hash) { 383 host->h_expires = jiffies - 1; 384 + if (host->h_rpcclnt) { 385 + rpc_shutdown_client(host->h_rpcclnt); 386 + host->h_rpcclnt = NULL; 387 + } 388 + } 389 } 390 391 /* Then, perform a garbage collection pass */