From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756079Ab1CAIw2 (ORCPT ); Tue, 1 Mar 2011 03:52:28 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:56423 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1755956Ab1CAIwZ (ORCPT ); Tue, 1 Mar 2011 03:52:25 -0500 Message-ID: <4D6CB414.8050107@cn.fujitsu.com> Date: Tue, 01 Mar 2011 16:53:40 +0800 From: Lai Jiangshan User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.9) Gecko/20100921 Fedora/3.1.4-1.fc14 Thunderbird/3.1.4 MIME-Version: 1.0 To: David Miller CC: mingo@elte.hu, paulmck@linux.vnet.ibm.com, cl@linux-foundation.org, penberg@kernel.org, eric.dumazet@gmail.com, mpm@selenic.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH 4/4 V2] net,rcu: don't assume the size of struct rcu_head References: <4D6CA860.3020409@cn.fujitsu.com> <20110301.001638.104075130.davem@davemloft.net> In-Reply-To: <20110301.001638.104075130.davem@davemloft.net> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-03-01 16:51:15, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-03-01 16:51:16, Serialize complete at 2011-03-01 16:51:16 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/01/2011 04:16 PM, David Miller wrote: > From: Lai Jiangshan > Date: Tue, 01 Mar 2011 16:03:44 +0800 > >> >> struct dst_entry assumes the size of struct rcu_head as 2 * sizeof(long) >> and manually adds pads for aligning for "__refcnt". >> >> When the size of struct rcu_head is changed, these manual padding >> is wrong. Use __attribute__((aligned (64))) instead. >> >> Signed-off-by: Lai Jiangshan > > We don't want to use the align if it's going to waste lots of space. > > Instead we want to rearrange the structure so that the alignment comes > more cheaply. Subject: [PATCH 4/4 V2] net,rcu: don't assume the size of struct rcu_head struct dst_entry assumes the size of struct rcu_head as 2 * sizeof(long) and manually adds pads for aligning for "__refcnt". When the size of struct rcu_head is changed, these manual padding are hardly suit for the changes. So we rearrange the structure, and move the seldom access rcu_head to the end of the structure. Signed-off-by: Lai Jiangshan --- diff --git a/include/net/dst.h b/include/net/dst.h index 93b0310..d8c5296 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -37,7 +37,6 @@ struct sk_buff; struct dst_entry { - struct rcu_head rcu_head; struct dst_entry *child; struct net_device *dev; short error; @@ -78,6 +77,13 @@ struct dst_entry { __u32 __pad2; #endif + unsigned long lastuse; + union { + struct dst_entry *next; + struct rtable __rcu *rt_next; + struct rt6_info *rt6_next; + struct dn_route __rcu *dn_next; + }; /* * Align __refcnt to a 64 bytes alignment @@ -92,13 +98,7 @@ struct dst_entry { */ atomic_t __refcnt; /* client references */ int __use; - unsigned long lastuse; - union { - struct dst_entry *next; - struct rtable __rcu *rt_next; - struct rt6_info *rt6_next; - struct dn_route __rcu *dn_next; - }; + struct rcu_head rcu_head; }; #ifdef __KERNEL__ From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail203.messagelabs.com (mail203.messagelabs.com [216.82.254.243]) by kanga.kvack.org (Postfix) with SMTP id A745D8D0039 for ; Tue, 1 Mar 2011 03:52:31 -0500 (EST) Message-ID: <4D6CB414.8050107@cn.fujitsu.com> Date: Tue, 01 Mar 2011 16:53:40 +0800 From: Lai Jiangshan MIME-Version: 1.0 Subject: [PATCH 4/4 V2] net,rcu: don't assume the size of struct rcu_head References: <4D6CA860.3020409@cn.fujitsu.com> <20110301.001638.104075130.davem@davemloft.net> In-Reply-To: <20110301.001638.104075130.davem@davemloft.net> Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8 Sender: owner-linux-mm@kvack.org List-ID: To: David Miller Cc: mingo@elte.hu, paulmck@linux.vnet.ibm.com, cl@linux-foundation.org, penberg@kernel.org, eric.dumazet@gmail.com, mpm@selenic.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org On 03/01/2011 04:16 PM, David Miller wrote: > From: Lai Jiangshan > Date: Tue, 01 Mar 2011 16:03:44 +0800 > >> >> struct dst_entry assumes the size of struct rcu_head as 2 * sizeof(long) >> and manually adds pads for aligning for "__refcnt". >> >> When the size of struct rcu_head is changed, these manual padding >> is wrong. Use __attribute__((aligned (64))) instead. >> >> Signed-off-by: Lai Jiangshan > > We don't want to use the align if it's going to waste lots of space. > > Instead we want to rearrange the structure so that the alignment comes > more cheaply. Subject: [PATCH 4/4 V2] net,rcu: don't assume the size of struct rcu_head struct dst_entry assumes the size of struct rcu_head as 2 * sizeof(long) and manually adds pads for aligning for "__refcnt". When the size of struct rcu_head is changed, these manual padding are hardly suit for the changes. So we rearrange the structure, and move the seldom access rcu_head to the end of the structure. Signed-off-by: Lai Jiangshan --- diff --git a/include/net/dst.h b/include/net/dst.h index 93b0310..d8c5296 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -37,7 +37,6 @@ struct sk_buff; struct dst_entry { - struct rcu_head rcu_head; struct dst_entry *child; struct net_device *dev; short error; @@ -78,6 +77,13 @@ struct dst_entry { __u32 __pad2; #endif + unsigned long lastuse; + union { + struct dst_entry *next; + struct rtable __rcu *rt_next; + struct rt6_info *rt6_next; + struct dn_route __rcu *dn_next; + }; /* * Align __refcnt to a 64 bytes alignment @@ -92,13 +98,7 @@ struct dst_entry { */ atomic_t __refcnt; /* client references */ int __use; - unsigned long lastuse; - union { - struct dst_entry *next; - struct rtable __rcu *rt_next; - struct rt6_info *rt6_next; - struct dn_route __rcu *dn_next; - }; + struct rcu_head rcu_head; }; #ifdef __KERNEL__ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org