diff options
author | Yasunori Goto <y-goto@jp.fujitsu.com> | 2006-06-27 05:53:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-27 20:32:36 -0400 |
commit | 0fc44159bfcb5b0afa178f9c3f50db23aebc76ff (patch) | |
tree | d87e47c0f5e6b2eff1d9113d3495d185924734d9 /drivers/base | |
parent | 1f04bbd2d396a701c5af2e5b92bad896c2550c16 (diff) |
[PATCH] Register sysfs file for hotplugged new node
When new node becomes enable by hot-add, new sysfs file must be created for
new node. So, if new node is enabled by add_memory(), register_one_node() is
called to create it. In addition, I386's arch_register_node() and a part of
register_nodes() of powerpc are consolidated to register_one_node() as a
generic_code().
This is tested by Tiger4(IPF) with node hot-plug emulation.
Signed-off-by: Keiichiro Tokunaga <tokuanga.keiich@jp.fujitsu.com>
Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/node.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/base/node.c b/drivers/base/node.c index c80c3aeed004..cbd0f62b4870 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c | |||
@@ -190,6 +190,31 @@ void unregister_node(struct node *node) | |||
190 | sysdev_unregister(&node->sysdev); | 190 | sysdev_unregister(&node->sysdev); |
191 | } | 191 | } |
192 | 192 | ||
193 | struct node node_devices[MAX_NUMNODES]; | ||
194 | |||
195 | int register_one_node(int nid) | ||
196 | { | ||
197 | int error = 0; | ||
198 | |||
199 | if (node_online(nid)) { | ||
200 | int p_node = parent_node(nid); | ||
201 | struct node *parent = NULL; | ||
202 | |||
203 | if (p_node != nid) | ||
204 | parent = &node_devices[p_node]; | ||
205 | |||
206 | error = register_node(&node_devices[nid], nid, parent); | ||
207 | } | ||
208 | |||
209 | return error; | ||
210 | |||
211 | } | ||
212 | |||
213 | void unregister_one_node(int nid) | ||
214 | { | ||
215 | unregister_node(&node_devices[nid]); | ||
216 | } | ||
217 | |||
193 | static int __init register_node_type(void) | 218 | static int __init register_node_type(void) |
194 | { | 219 | { |
195 | return sysdev_class_register(&node_class); | 220 | return sysdev_class_register(&node_class); |