aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorCesar Eduardo Barros <cesarb@cesarb.net>2011-03-22 19:33:31 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-22 20:44:08 -0400
commit1421ef3cd15b87ef949e965efeb1e527479d3f75 (patch)
tree8bcc6d1047905b205a7061c00bda40197fad2328 /mm
parent38719025384cf7121331bd6d41c062d3c5f7bb91 (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')
-rw-r--r--mm/swapfile.c8
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;