diff options
author | Lee Schermerhorn <lee.schermerhorn@hp.com> | 2008-04-28 05:13:23 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-28 11:58:24 -0400 |
commit | 095f1fc4ebf36c64fddf9b6db29b1ab5517378e6 (patch) | |
tree | 39aae9d5b05d8501d1794e92c6115331c0a40848 /include/linux/mempolicy.h | |
parent | 2291990ab36b4b2d8a81b1f92e7a046e51632a60 (diff) |
mempolicy: rework shmem mpol parsing and display
mm/shmem.c currently contains functions to parse and display memory policy
strings for the tmpfs 'mpol' mount option. Move this to mm/mempolicy.c with
the rest of the mempolicy support. With subsequent patches, we'll be able to
remove knowledge of the details [mode, flags, policy, ...] completely from
shmem.c
1) replace shmem_parse_mpol() in mm/shmem.c with mpol_parse_str() in
mm/mempolicy.c. Rework to use the policy_types[] array [used by
mpol_to_str()] to look up mode by name.
2) use mpol_to_str() to format policy for shmem_show_mpol(). mpol_to_str()
expects a pointer to a struct mempolicy, so temporarily construct one.
This will be replaced with a reference to a struct mempolicy in the tmpfs
superblock in a subsequent patch.
NOTE 1: I changed mpol_to_str() to use a colon ':' rather than an equal
sign '=' as the nodemask delimiter to match mpol_parse_str() and the
tmpfs/shmem mpol mount option formatting that now uses mpol_to_str(). This
is a user visible change to numa_maps, but then the addition of the mode
flags already changed the display. It makes sense to me to have the mounts
and numa_maps display the policy in the same format. However, if anyone
objects strongly, I can pass the desired nodemask delimeter as an arg to
mpol_to_str().
Note 2: Like show_numa_map(), I don't check the return code from
mpol_to_str(). I do use a longer buffer than the one provided by
show_numa_map(), which seems to have sufficed so far.
Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com>
Cc: Christoph Lameter <clameter@sgi.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/mempolicy.h')
-rw-r--r-- | include/linux/mempolicy.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index b0fab9e80655..dcc17378c952 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h | |||
@@ -214,6 +214,13 @@ static inline void check_highest_zone(enum zone_type k) | |||
214 | int do_migrate_pages(struct mm_struct *mm, | 214 | int do_migrate_pages(struct mm_struct *mm, |
215 | const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags); | 215 | const nodemask_t *from_nodes, const nodemask_t *to_nodes, int flags); |
216 | 216 | ||
217 | |||
218 | #ifdef CONFIG_TMPFS | ||
219 | extern int mpol_parse_str(char *str, unsigned short *mode, | ||
220 | unsigned short *mode_flags, nodemask_t *policy_nodes); | ||
221 | |||
222 | extern int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol); | ||
223 | #endif | ||
217 | #else | 224 | #else |
218 | 225 | ||
219 | struct mempolicy {}; | 226 | struct mempolicy {}; |
@@ -313,6 +320,20 @@ static inline int do_migrate_pages(struct mm_struct *mm, | |||
313 | static inline void check_highest_zone(int k) | 320 | static inline void check_highest_zone(int k) |
314 | { | 321 | { |
315 | } | 322 | } |
323 | |||
324 | #ifdef CONFIG_TMPFS | ||
325 | static inline int mpol_parse_str(char *value, unsigned short *policy, | ||
326 | unsigned short flags, nodemask_t *policy_nodes) | ||
327 | { | ||
328 | return 1; | ||
329 | } | ||
330 | |||
331 | static inline int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) | ||
332 | { | ||
333 | return 0; | ||
334 | } | ||
335 | #endif | ||
336 | |||
316 | #endif /* CONFIG_NUMA */ | 337 | #endif /* CONFIG_NUMA */ |
317 | #endif /* __KERNEL__ */ | 338 | #endif /* __KERNEL__ */ |
318 | 339 | ||