From: "J. Bruce Fields" Subject: [PATCH 10/12] lockd: move immediate host expiry into separate function Date: Wed, 5 Nov 2008 15:06:49 -0500 Message-ID: <1225915611-2401-10-git-send-email-bfields@citi.umich.edu> References: <20081105172351.7330.50739.stgit@ingres.1015granger.net> <1225915611-2401-1-git-send-email-bfields@citi.umich.edu> <1225915611-2401-2-git-send-email-bfields@citi.umich.edu> <1225915611-2401-3-git-send-email-bfields@citi.umich.edu> <1225915611-2401-4-git-send-email-bfields@citi.umich.edu> <1225915611-2401-5-git-send-email-bfields@citi.umich.edu> <1225915611-2401-6-git-send-email-bfields@citi.umich.edu> <1225915611-2401-7-git-send-email-bfields@citi.umich.edu> <1225915611-2401-8-git-send-email-bfields@citi.umich.edu> <1225915611-2401-9-git-send-email-bfields@citi.umich.edu> Cc: linux-nfs@vger.kernel.org, "J. Bruce Fields" To: Chuck Lever Return-path: Received: from mail.fieldses.org ([66.93.2.214]:39501 "EHLO fieldses.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757577AbYKEUG4 (ORCPT ); Wed, 5 Nov 2008 15:06:56 -0500 In-Reply-To: <1225915611-2401-9-git-send-email-bfields@citi.umich.edu> Sender: linux-nfs-owner@vger.kernel.org List-ID: This code will later be shared. Signed-off-by: J. Bruce Fields --- fs/lockd/host.c | 27 ++++++++++++++++----------- 1 files changed, 16 insertions(+), 11 deletions(-) diff --git a/fs/lockd/host.c b/fs/lockd/host.c index fa006af..588017f 100644 --- a/fs/lockd/host.c +++ b/fs/lockd/host.c @@ -593,29 +593,34 @@ static void warn_host_leak(struct host_table *table) } } -/* - * Shut down the hosts module. - * Note that this routine is called only at server shutdown time. - */ -void -nlm_shutdown_hosts(void) +static void expire_hosts(struct host_table *table) { struct hlist_head *chain; struct hlist_node *pos; struct nlm_host *host; - dprintk("lockd: shutting down host module\n"); - mutex_lock(&nlm_hosts.ht_mutex); - - /* First, make all hosts eligible for gc */ dprintk("lockd: nuking all hosts...\n"); - for_each_host(host, pos, chain, &nlm_hosts) { + for_each_host(host, pos, chain, table) { host->h_expires = jiffies - 1; if (host->h_rpcclnt) { rpc_shutdown_client(host->h_rpcclnt); host->h_rpcclnt = NULL; } } +} + +/* + * Shut down the hosts module. + * Note that this routine is called only at server shutdown time. + */ +void +nlm_shutdown_hosts(void) +{ + dprintk("lockd: shutting down host module\n"); + mutex_lock(&nlm_hosts.ht_mutex); + + /* First, make all hosts eligible for gc */ + expire_hosts(&nlm_hosts); /* Then, perform a garbage collection pass */ nlm_gc_hosts(); -- 1.5.5.rc1