Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932132AbbDNMgJ (ORCPT ); Tue, 14 Apr 2015 08:36:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51903 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752877AbbDNMgF (ORCPT ); Tue, 14 Apr 2015 08:36:05 -0400 Date: Tue, 14 Apr 2015 14:36:03 +0200 From: Jiri Pirko To: Denys Vlasenko Cc: "David S. Miller" , "Eric W. Biederman" , Jan Engelhardt , linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: Re: [PATCH] netns: deinline net_generic() Message-ID: <20150414123603.GD2022@nanopsycho.lan> References: <1429014311-19868-1-git-send-email-dvlasenk@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1429014311-19868-1-git-send-email-dvlasenk@redhat.com> User-Agent: Mutt/1.5.23.1-rc1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2403 Lines: 84 Tue, Apr 14, 2015 at 02:25:11PM CEST, dvlasenk@redhat.com wrote: >On x86 allyesconfig build: >The function compiles to 130 bytes of machine code. >It has 493 callsites. >Total reduction of vmlinux size: 27906 bytes. Hmm. That is not much. How about performance impacts? > > text data bss dec hex filename >82447071 22255384 20627456 125329911 77861f7 vmlinux4 >82419165 22255384 20627456 125302005 777f4f5 vmlinux5 > >Signed-off-by: Denys Vlasenko >CC: Eric W. Biederman >CC: David S. Miller >CC: Jan Engelhardt >CC: Jiri Pirko >CC: linux-kernel@vger.kernel.org >CC: netdev@vger.kernel.org >--- > include/net/netns/generic.h | 15 +-------------- > net/core/net_namespace.c | 16 ++++++++++++++++ > 2 files changed, 17 insertions(+), 14 deletions(-) > >diff --git a/include/net/netns/generic.h b/include/net/netns/generic.h >index 0931618..61a33bf 100644 >--- a/include/net/netns/generic.h >+++ b/include/net/netns/generic.h >@@ -31,18 +31,5 @@ struct net_generic { > void *ptr[0]; > }; > >-static inline void *net_generic(const struct net *net, int id) >-{ >- struct net_generic *ng; >- void *ptr; >- >- rcu_read_lock(); >- ng = rcu_dereference(net->gen); >- BUG_ON(id == 0 || id > ng->len); >- ptr = ng->ptr[id - 1]; >- rcu_read_unlock(); >- >- BUG_ON(!ptr); >- return ptr; >-} >+void *net_generic(const struct net *net, int id); > #endif >diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c >index cb5290b..66c9ba1 100644 >--- a/net/core/net_namespace.c >+++ b/net/core/net_namespace.c >@@ -42,6 +42,22 @@ EXPORT_SYMBOL(init_net); > > static unsigned int max_gen_ptrs = INITIAL_NET_GEN_PTRS; > >+void *net_generic(const struct net *net, int id) >+{ >+ struct net_generic *ng; >+ void *ptr; >+ >+ rcu_read_lock(); >+ ng = rcu_dereference(net->gen); >+ BUG_ON(id == 0 || id > ng->len); >+ ptr = ng->ptr[id - 1]; >+ rcu_read_unlock(); >+ >+ BUG_ON(!ptr); >+ return ptr; >+} >+EXPORT_SYMBOL(net_generic); >+ > static struct net_generic *net_alloc_generic(void) > { > struct net_generic *ng; >-- >1.8.1.4 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/