From patchwork Tue Jan 6 07:23:20 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ying Xue X-Patchwork-Id: 425558 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id EFE4F14009B for ; Tue, 6 Jan 2015 18:24:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753560AbbAFHYN (ORCPT ); Tue, 6 Jan 2015 02:24:13 -0500 Received: from mail.windriver.com ([147.11.1.11]:54307 "EHLO mail.windriver.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752817AbbAFHYJ (ORCPT ); Tue, 6 Jan 2015 02:24:09 -0500 Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail.windriver.com (8.14.9/8.14.5) with ESMTP id t067NaAC004583 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Mon, 5 Jan 2015 23:23:37 -0800 (PST) Received: from ying.corp.ad.wrs.com (128.224.163.180) by ALA-HCA.corp.ad.wrs.com (147.11.189.40) with Microsoft SMTP Server id 14.3.174.1; Mon, 5 Jan 2015 23:23:36 -0800 From: Ying Xue To: CC: , , , , , Subject: [PATCH net-next 2/5] rhashtable: introduce rhashtable_wakeup_worker helper function Date: Tue, 6 Jan 2015 15:23:20 +0800 Message-ID: <1420529003-22244-3-git-send-email-ying.xue@windriver.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1420529003-22244-1-git-send-email-ying.xue@windriver.com> References: <1420529003-22244-1-git-send-email-ying.xue@windriver.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Introduce rhashtable_wakeup_worker() helper function to reduce duplicated code where to wake up worker. Signed-off-by: Ying Xue Cc: Thomas Graf --- lib/rhashtable.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/rhashtable.c b/lib/rhashtable.c index f2fdd7a..6eda22f 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -492,6 +492,17 @@ static void rht_deferred_worker(struct work_struct *work) mutex_unlock(&ht->mutex); } +static void rhashtable_wakeup_worker(struct rhashtable *ht) +{ + struct bucket_table *tbl = rht_dereference_rcu(ht->tbl, ht); + struct bucket_table *new_tbl = rht_dereference_rcu(ht->future_tbl, ht); + + if (ht->tbl != ht->future_tbl && + ((ht->p.grow_decision && ht->p.grow_decision(ht, new_tbl->size)) || + (ht->p.shrink_decision && ht->p.shrink_decision(ht, tbl->size)))) + schedule_delayed_work(&ht->run_work, 0); +} + /** * rhashtable_insert - insert object into hash hash table * @ht: hash table @@ -533,9 +544,7 @@ void rhashtable_insert(struct rhashtable *ht, struct rhash_head *obj) atomic_inc(&ht->nelems); /* Only grow the table if no resizing is currently in progress. */ - if (ht->tbl != ht->future_tbl && - ht->p.grow_decision && ht->p.grow_decision(ht, tbl->size)) - schedule_delayed_work(&ht->run_work, 0); + rhashtable_wakeup_worker(ht); rcu_read_unlock(); } @@ -584,10 +593,7 @@ restart: spin_unlock_bh(lock); - if (ht->tbl != ht->future_tbl && - ht->p.shrink_decision && - ht->p.shrink_decision(ht, tbl->size)) - schedule_delayed_work(&ht->run_work, 0); + rhashtable_wakeup_worker(ht); rcu_read_unlock();