From patchwork Tue Dec 15 11:21:04 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ming Lei X-Patchwork-Id: 556925 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 858F31402ED for ; Tue, 15 Dec 2015 22:22:15 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=Itq/yJ9N; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965209AbbLOLV4 (ORCPT ); Tue, 15 Dec 2015 06:21:56 -0500 Received: from mail-qg0-f43.google.com ([209.85.192.43]:35762 "EHLO mail-qg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964921AbbLOLVy (ORCPT ); Tue, 15 Dec 2015 06:21:54 -0500 Received: by mail-qg0-f43.google.com with SMTP id w101so3597639qge.2; Tue, 15 Dec 2015 03:21:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=COdJUAyFHUJZ76tjn+ZUS/iOxfWiV34vHdsL3wWn8Zs=; b=Itq/yJ9NM/oMkeVbZC7mD3ZB68O1Y0GyRK2ImZLTKGxFmHoMqTPekh9sFmtq9KxSm6 vxultVb7fK9NGupXQvl8Bfh9E6LUHnxAz28ZU8l0Sn/fY8nGDckKS2whjAXLjmC6NUFt gi1hlvdvXxeS0Pkj1DwefmKIFrjzgkOUsyadZtyRazy5cTmfVXAhg40lnA0DZ4KNnzNZ /E/FY7myULztJUmB401qP/vNf/bpWz1GjV9QeuS32ghN3DA+xvUhyGd0dywTbx65dZLG q6+oDAEW/xQ5v8n/be8fgyLIO5u5pnt7zepPTgHD5RcKf4bHfWkA3gKjLpcy70jYuLRm BA7A== X-Received: by 10.140.235.212 with SMTP id g203mr44528506qhc.11.1450178514271; Tue, 15 Dec 2015 03:21:54 -0800 (PST) Received: from localhost (56.34.213.162.lcy-01.canonistack.canonical.com. [162.213.34.56]) by smtp.gmail.com with ESMTPSA id 201sm274451qhf.21.2015.12.15.03.21.52 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Tue, 15 Dec 2015 03:21:53 -0800 (PST) From: Ming Lei To: linux-kernel@vger.kernel.org, Alexei Starovoitov Cc: "David S. Miller" , netdev@vger.kernel.org, Ming Lei Subject: [PATCH 6/6] bpf: hash: reorganize 'struct htab_elem' Date: Tue, 15 Dec 2015 19:21:04 +0800 Message-Id: <1450178464-27721-7-git-send-email-tom.leiming@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1450178464-27721-1-git-send-email-tom.leiming@gmail.com> References: <1450178464-27721-1-git-send-email-tom.leiming@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Lifetime for hash fields and liftime for kfree_rcu fields can't be overlapped, so re-organizing them for better readabilty. Also one sizeof(void *) should be saved with this change, and cache footprint can got improved too. Signed-off-by: Ming Lei --- kernel/bpf/hashtab.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/kernel/bpf/hashtab.c b/kernel/bpf/hashtab.c index c1600c3..5476545 100644 --- a/kernel/bpf/hashtab.c +++ b/kernel/bpf/hashtab.c @@ -17,15 +17,20 @@ /* each htab element is struct htab_elem + key + value */ struct htab_elem { + u32 tag; union { - struct hlist_node hash_node; - - /* used after deleted from hash */ - struct bpf_htab *htab; + /* won't be used after being removed from hash */ + struct { + u32 hash; + struct hlist_node hash_node; + }; + + /* set after being deleted from hash */ + struct { + struct bpf_htab *htab; + struct rcu_head rcu; + }; }; - struct rcu_head rcu; - u32 hash; - u32 tag; char key[0] __aligned(8); };