diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2009-09-23 18:57:32 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-24 10:21:05 -0400 |
commit | 858f09930b32c11b40fd0c5c467982ba09b10894 (patch) | |
tree | 43972de84d69d61904f4f24ff78f99a3a82c2ff3 | |
parent | b873c2f34ecd4a5a69b41b852cbc365694541c5f (diff) |
aio: ifdef fields in mm_struct
->ioctx_lock and ->ioctx_list are used only under CONFIG_AIO.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Zach Brown <zach.brown@oracle.com>
Cc: Benjamin LaHaise <bcrl@kvack.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/mm_types.h | 5 | ||||
-rw-r--r-- | kernel/fork.c | 11 |
2 files changed, 11 insertions, 5 deletions
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 0042090a4d70..6b7029ab9c8e 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
@@ -259,11 +259,10 @@ struct mm_struct { | |||
259 | unsigned long flags; /* Must use atomic bitops to access the bits */ | 259 | unsigned long flags; /* Must use atomic bitops to access the bits */ |
260 | 260 | ||
261 | struct core_state *core_state; /* coredumping support */ | 261 | struct core_state *core_state; /* coredumping support */ |
262 | 262 | #ifdef CONFIG_AIO | |
263 | /* aio bits */ | ||
264 | spinlock_t ioctx_lock; | 263 | spinlock_t ioctx_lock; |
265 | struct hlist_head ioctx_list; | 264 | struct hlist_head ioctx_list; |
266 | 265 | #endif | |
267 | #ifdef CONFIG_MM_OWNER | 266 | #ifdef CONFIG_MM_OWNER |
268 | /* | 267 | /* |
269 | * "owner" points to a task that is regarded as the canonical | 268 | * "owner" points to a task that is regarded as the canonical |
diff --git a/kernel/fork.c b/kernel/fork.c index b51fd2ccb2f1..e49f181ba1ca 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -434,6 +434,14 @@ __setup("coredump_filter=", coredump_filter_setup); | |||
434 | 434 | ||
435 | #include <linux/init_task.h> | 435 | #include <linux/init_task.h> |
436 | 436 | ||
437 | static void mm_init_aio(struct mm_struct *mm) | ||
438 | { | ||
439 | #ifdef CONFIG_AIO | ||
440 | spin_lock_init(&mm->ioctx_lock); | ||
441 | INIT_HLIST_HEAD(&mm->ioctx_list); | ||
442 | #endif | ||
443 | } | ||
444 | |||
437 | static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p) | 445 | static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p) |
438 | { | 446 | { |
439 | atomic_set(&mm->mm_users, 1); | 447 | atomic_set(&mm->mm_users, 1); |
@@ -447,10 +455,9 @@ static struct mm_struct * mm_init(struct mm_struct * mm, struct task_struct *p) | |||
447 | set_mm_counter(mm, file_rss, 0); | 455 | set_mm_counter(mm, file_rss, 0); |
448 | set_mm_counter(mm, anon_rss, 0); | 456 | set_mm_counter(mm, anon_rss, 0); |
449 | spin_lock_init(&mm->page_table_lock); | 457 | spin_lock_init(&mm->page_table_lock); |
450 | spin_lock_init(&mm->ioctx_lock); | ||
451 | INIT_HLIST_HEAD(&mm->ioctx_list); | ||
452 | mm->free_area_cache = TASK_UNMAPPED_BASE; | 458 | mm->free_area_cache = TASK_UNMAPPED_BASE; |
453 | mm->cached_hole_size = ~0UL; | 459 | mm->cached_hole_size = ~0UL; |
460 | mm_init_aio(mm); | ||
454 | mm_init_owner(mm, p); | 461 | mm_init_owner(mm, p); |
455 | 462 | ||
456 | if (likely(!mm_alloc_pgd(mm))) { | 463 | if (likely(!mm_alloc_pgd(mm))) { |