aboutsummaryrefslogtreecommitdiffstats
path: root/mm/rmap.c
diff options
context:
space:
mode:
authorRik van Riel <riel@redhat.com>2010-08-09 20:18:38 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-08-09 23:44:55 -0400
commitcba48b98f2348c814316c4b4f411a07a0e4a2bf9 (patch)
tree49c0426f8d41cb147722305c2c3495dd515c3253 /mm/rmap.c
parentbb4a340e075b7897ece109686bfa177f8518d2db (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.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/mm/rmap.c b/mm/rmap.c
index 38a336e2eea1..b65f00d1707f 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -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;
307out: 307out:
308 rcu_read_unlock(); 308 rcu_read_unlock();
@@ -311,7 +311,7 @@ out:
311 311
312void page_unlock_anon_vma(struct anon_vma *anon_vma) 312void 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