aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHugh Dickins <hugh@veritas.com>2007-06-08 16:46:46 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-06-08 20:23:32 -0400
commita210906c1b791af1434323f69427286039c9c8b9 (patch)
tree17f3deeda2c7c6972b9a72113a14571c2cabaae7
parent9739ed1c8eafd554788d8e2ba09847b5718a34e7 (diff)
mount -t tmpfs -o mpol=: check nodes online
Randy Dunlap reports that a tmpfs, mounted with NUMA mpol= specifying an offline node, crashes as soon as data is allocated upon it. Now restrict it to online nodes, where before it restricted to MAX_NUMNODES. Signed-off-by: Hugh Dickins <hugh@veritas.com> Cc: Robin Holt <holt@sgi.com> Cc: Christoph Lameter <clameter@sgi.com> Cc: Andi Kleen <ak@suse.de> Tested-and-acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--Documentation/filesystems/tmpfs.txt10
-rw-r--r--mm/shmem.c2
2 files changed, 7 insertions, 5 deletions
diff --git a/Documentation/filesystems/tmpfs.txt b/Documentation/filesystems/tmpfs.txt
index 6dd050878a20..145e44086358 100644
--- a/Documentation/filesystems/tmpfs.txt
+++ b/Documentation/filesystems/tmpfs.txt
@@ -94,10 +94,10 @@ largest node numbers in the range. For example, mpol=bind:0-3,5,7,9-15
94 94
95Note that trying to mount a tmpfs with an mpol option will fail if the 95Note that trying to mount a tmpfs with an mpol option will fail if the
96running kernel does not support NUMA; and will fail if its nodelist 96running kernel does not support NUMA; and will fail if its nodelist
97specifies a node >= MAX_NUMNODES. If your system relies on that tmpfs 97specifies a node which is not online. If your system relies on that
98being mounted, but from time to time runs a kernel built without NUMA 98tmpfs being mounted, but from time to time runs a kernel built without
99capability (perhaps a safe recovery kernel), or configured to support 99NUMA capability (perhaps a safe recovery kernel), or with fewer nodes
100fewer nodes, then it is advisable to omit the mpol option from automatic 100online, then it is advisable to omit the mpol option from automatic
101mount options. It can be added later, when the tmpfs is already mounted 101mount options. It can be added later, when the tmpfs is already mounted
102on MountPoint, by 'mount -o remount,mpol=Policy:NodeList MountPoint'. 102on MountPoint, by 'mount -o remount,mpol=Policy:NodeList MountPoint'.
103 103
@@ -121,4 +121,4 @@ RAM/SWAP in 10240 inodes and it is only accessible by root.
121Author: 121Author:
122 Christoph Rohland <cr@sap.com>, 1.12.01 122 Christoph Rohland <cr@sap.com>, 1.12.01
123Updated: 123Updated:
124 Hugh Dickins <hugh@veritas.com>, 19 February 2006 124 Hugh Dickins <hugh@veritas.com>, 4 June 2007
diff --git a/mm/shmem.c b/mm/shmem.c
index e537317bec4d..b6aae2b33393 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -967,6 +967,8 @@ static inline int shmem_parse_mpol(char *value, int *policy, nodemask_t *policy_
967 *nodelist++ = '\0'; 967 *nodelist++ = '\0';
968 if (nodelist_parse(nodelist, *policy_nodes)) 968 if (nodelist_parse(nodelist, *policy_nodes))
969 goto out; 969 goto out;
970 if (!nodes_subset(*policy_nodes, node_online_map))
971 goto out;
970 } 972 }
971 if (!strcmp(value, "default")) { 973 if (!strcmp(value, "default")) {
972 *policy = MPOL_DEFAULT; 974 *policy = MPOL_DEFAULT;