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/node.c | |
| 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/node.c')
| -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 c80c3aeed0..cbd0f62b48 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); |
