lkml.org 
[lkml]   [2018]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 12/17] prmem: linked list: set alignment
Date
As preparation to using write rare on the nodes of various types of
lists, specify that the fields in the basic data structures must be
aligned to sizeof(void *)

It is meant to ensure that any static allocation will not cross a page
boundary, to allow pointers to be updated in one step.

Signed-off-by: Igor Stoppa <igor.stoppa@huawei.com>
CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Masahiro Yamada <yamada.masahiro@socionext.com>
CC: Alexey Dobriyan <adobriyan@gmail.com>
CC: Pekka Enberg <penberg@kernel.org>
CC: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
CC: Lihao Liang <lianglihao@huawei.com>
CC: linux-kernel@vger.kernel.org
---
include/linux/types.h | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/include/linux/types.h b/include/linux/types.h
index 9834e90aa010..53609bbdcf0f 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -183,17 +183,29 @@ typedef struct {
} atomic64_t;
#endif

+#ifdef CONFIG_PRMEM
struct list_head {
- struct list_head *next, *prev;
-};
+ struct list_head *next __aligned(sizeof(void *));
+ struct list_head *prev __aligned(sizeof(void *));
+} __aligned(sizeof(void *));

-struct hlist_head {
- struct hlist_node *first;
+struct hlist_node {
+ struct hlist_node *next __aligned(sizeof(void *));
+ struct hlist_node **pprev __aligned(sizeof(void *));
+} __aligned(sizeof(void *));
+#else
+struct list_head {
+ struct list_head *next, *prev;
};

struct hlist_node {
struct hlist_node *next, **pprev;
};
+#endif
+
+struct hlist_head {
+ struct hlist_node *first;
+};

struct ustat {
__kernel_daddr_t f_tfree;
--
2.17.1
\
 
 \ /
  Last update: 2018-10-23 23:38    [W:0.039 / U:1.880 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site