diff options
author | Rik van Riel <riel@redhat.com> | 2010-08-09 20:18:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-09 23:44:55 -0400 |
commit | cba48b98f2348c814316c4b4f411a07a0e4a2bf9 (patch) | |
tree | 49c0426f8d41cb147722305c2c3495dd515c3253 /mm/rmap.c | |
parent | bb4a340e075b7897ece109686bfa177f8518d2db (diff) |
mm: change direct call of spin_lock(anon_vma->lock) to inline function
Subsitute a direct call of spin_lock(anon_vma->lock) with an inline
function doing exactly the same.
This makes it easier to do the substitution to the root anon_vma lock in a
following patch.
We will deal with the handful of special locks (nested, dec_and_lock, etc)
separately.
Signed-off-by: Rik van Riel <riel@redhat.com>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Tested-by: Larry Woodman <lwoodman@redhat.com>
Acked-by: Larry Woodman <lwoodman@redhat.com>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/rmap.c')
-rw-r--r-- | mm/rmap.c | 20 |
1 files changed, 10 insertions, 10 deletions
@@ -134,7 +134,7 @@ int anon_vma_prepare(struct vm_area_struct *vma) | |||
134 | allocated = anon_vma; | 134 | allocated = anon_vma; |
135 | } | 135 | } |
136 | 136 | ||
137 | spin_lock(&anon_vma->lock); | 137 | anon_vma_lock(anon_vma); |
138 | /* page_table_lock to protect against threads */ | 138 | /* page_table_lock to protect against threads */ |
139 | spin_lock(&mm->page_table_lock); | 139 | spin_lock(&mm->page_table_lock); |
140 | if (likely(!vma->anon_vma)) { | 140 | if (likely(!vma->anon_vma)) { |
@@ -147,7 +147,7 @@ int anon_vma_prepare(struct vm_area_struct *vma) | |||
147 | avc = NULL; | 147 | avc = NULL; |
148 | } | 148 | } |
149 | spin_unlock(&mm->page_table_lock); | 149 | spin_unlock(&mm->page_table_lock); |
150 | spin_unlock(&anon_vma->lock); | 150 | anon_vma_unlock(anon_vma); |
151 | 151 | ||
152 | if (unlikely(allocated)) | 152 | if (unlikely(allocated)) |
153 | anon_vma_free(allocated); | 153 | anon_vma_free(allocated); |
@@ -170,9 +170,9 @@ static void anon_vma_chain_link(struct vm_area_struct *vma, | |||
170 | avc->anon_vma = anon_vma; | 170 | avc->anon_vma = anon_vma; |
171 | list_add(&avc->same_vma, &vma->anon_vma_chain); | 171 | list_add(&avc->same_vma, &vma->anon_vma_chain); |
172 | 172 | ||
173 | spin_lock(&anon_vma->lock); | 173 | anon_vma_lock(anon_vma); |
174 | list_add_tail(&avc->same_anon_vma, &anon_vma->head); | 174 | list_add_tail(&avc->same_anon_vma, &anon_vma->head); |
175 | spin_unlock(&anon_vma->lock); | 175 | anon_vma_unlock(anon_vma); |
176 | } | 176 | } |
177 | 177 | ||
178 | /* | 178 | /* |
@@ -246,12 +246,12 @@ static void anon_vma_unlink(struct anon_vma_chain *anon_vma_chain) | |||
246 | if (!anon_vma) | 246 | if (!anon_vma) |
247 | return; | 247 | return; |
248 | 248 | ||
249 | spin_lock(&anon_vma->lock); | 249 | anon_vma_lock(anon_vma); |
250 | list_del(&anon_vma_chain->same_anon_vma); | 250 | list_del(&anon_vma_chain->same_anon_vma); |
251 | 251 | ||
252 | /* We must garbage collect the anon_vma if it's empty */ | 252 | /* We must garbage collect the anon_vma if it's empty */ |
253 | empty = list_empty(&anon_vma->head) && !anonvma_external_refcount(anon_vma); | 253 | empty = list_empty(&anon_vma->head) && !anonvma_external_refcount(anon_vma); |
254 | spin_unlock(&anon_vma->lock); | 254 | anon_vma_unlock(anon_vma); |
255 | 255 | ||
256 | if (empty) | 256 | if (empty) |
257 | anon_vma_free(anon_vma); | 257 | anon_vma_free(anon_vma); |
@@ -302,7 +302,7 @@ struct anon_vma *page_lock_anon_vma(struct page *page) | |||
302 | goto out; | 302 | goto out; |
303 | 303 | ||
304 | anon_vma = (struct anon_vma *) (anon_mapping - PAGE_MAPPING_ANON); | 304 | anon_vma = (struct anon_vma *) (anon_mapping - PAGE_MAPPING_ANON); |
305 | spin_lock(&anon_vma->lock); | 305 | anon_vma_lock(anon_vma); |
306 | return anon_vma; | 306 | return anon_vma; |
307 | out: | 307 | out: |
308 | rcu_read_unlock(); | 308 | rcu_read_unlock(); |
@@ -311,7 +311,7 @@ out: | |||
311 | 311 | ||
312 | void page_unlock_anon_vma(struct anon_vma *anon_vma) | 312 | void page_unlock_anon_vma(struct anon_vma *anon_vma) |
313 | { | 313 | { |
314 | spin_unlock(&anon_vma->lock); | 314 | anon_vma_unlock(anon_vma); |
315 | rcu_read_unlock(); | 315 | rcu_read_unlock(); |
316 | } | 316 | } |
317 | 317 | ||
@@ -1389,7 +1389,7 @@ static int rmap_walk_anon(struct page *page, int (*rmap_one)(struct page *, | |||
1389 | anon_vma = page_anon_vma(page); | 1389 | anon_vma = page_anon_vma(page); |
1390 | if (!anon_vma) | 1390 | if (!anon_vma) |
1391 | return ret; | 1391 | return ret; |
1392 | spin_lock(&anon_vma->lock); | 1392 | anon_vma_lock(anon_vma); |
1393 | list_for_each_entry(avc, &anon_vma->head, same_anon_vma) { | 1393 | list_for_each_entry(avc, &anon_vma->head, same_anon_vma) { |
1394 | struct vm_area_struct *vma = avc->vma; | 1394 | struct vm_area_struct *vma = avc->vma; |
1395 | unsigned long address = vma_address(page, vma); | 1395 | unsigned long address = vma_address(page, vma); |
@@ -1399,7 +1399,7 @@ static int rmap_walk_anon(struct page *page, int (*rmap_one)(struct page *, | |||
1399 | if (ret != SWAP_AGAIN) | 1399 | if (ret != SWAP_AGAIN) |
1400 | break; | 1400 | break; |
1401 | } | 1401 | } |
1402 | spin_unlock(&anon_vma->lock); | 1402 | anon_vma_unlock(anon_vma); |
1403 | return ret; | 1403 | return ret; |
1404 | } | 1404 | } |
1405 | 1405 | ||