diff options
author | Cesar Eduardo Barros <cesarb@cesarb.net> | 2011-03-22 19:33:31 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-22 20:44:08 -0400 |
commit | 1421ef3cd15b87ef949e965efeb1e527479d3f75 (patch) | |
tree | 8bcc6d1047905b205a7061c00bda40197fad2328 /mm/swapfile.c | |
parent | 38719025384cf7121331bd6d41c062d3c5f7bb91 (diff) |
sys_swapon: call swap_cgroup_swapon() earlier
The call to swap_cgroup_swapon is in the middle of loading the swap map
and extents. As it only does memory allocation and does not depend on
the swapfile layout (map/extents), it can be called earlier (or later).
Move it to just after the allocation of swap_map, since it is
conceptually similar (allocates a map).
Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Tested-by: Eric B Munson <emunson@mgebm.net>
Acked-by: Eric B Munson <emunson@mgebm.net>
Reviewed-by: Pekka Enberg <penberg@kernel.org>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r-- | mm/swapfile.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 058a9dfefefd..10f2b33805f6 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c | |||
@@ -2074,6 +2074,10 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) | |||
2074 | goto bad_swap; | 2074 | goto bad_swap; |
2075 | } | 2075 | } |
2076 | 2076 | ||
2077 | error = swap_cgroup_swapon(p->type, maxpages); | ||
2078 | if (error) | ||
2079 | goto bad_swap; | ||
2080 | |||
2077 | nr_good_pages = maxpages - 1; /* omit header page */ | 2081 | nr_good_pages = maxpages - 1; /* omit header page */ |
2078 | 2082 | ||
2079 | for (i = 0; i < swap_header->info.nr_badpages; i++) { | 2083 | for (i = 0; i < swap_header->info.nr_badpages; i++) { |
@@ -2088,10 +2092,6 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) | |||
2088 | } | 2092 | } |
2089 | } | 2093 | } |
2090 | 2094 | ||
2091 | error = swap_cgroup_swapon(p->type, maxpages); | ||
2092 | if (error) | ||
2093 | goto bad_swap; | ||
2094 | |||
2095 | if (nr_good_pages) { | 2095 | if (nr_good_pages) { |
2096 | swap_map[0] = SWAP_MAP_BAD; | 2096 | swap_map[0] = SWAP_MAP_BAD; |
2097 | p->max = maxpages; | 2097 | p->max = maxpages; |