shmem.c (1170532bb49f9468aedabdc1d5a560e2521a2bcc) | shmem.c (2cf938aae17203426a89b5955bd1c9668657bfa8) |
---|---|
1/* 2 * Resizable virtual memory filesystem for Linux. 3 * 4 * Copyright (C) 2000 Linus Torvalds. 5 * 2000 Transmeta Corp. 6 * 2000-2001 Christoph Rohland 7 * 2000-2001 SAP AG 8 * 2002 Red Hat Inc. --- 369 unchanged lines hidden (view full) --- 378 379restart: 380 radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) { 381 if (iter.index >= end) 382 break; 383 384 page = radix_tree_deref_slot(slot); 385 | 1/* 2 * Resizable virtual memory filesystem for Linux. 3 * 4 * Copyright (C) 2000 Linus Torvalds. 5 * 2000 Transmeta Corp. 6 * 2000-2001 Christoph Rohland 7 * 2000-2001 SAP AG 8 * 2002 Red Hat Inc. --- 369 unchanged lines hidden (view full) --- 378 379restart: 380 radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) { 381 if (iter.index >= end) 382 break; 383 384 page = radix_tree_deref_slot(slot); 385 |
386 /* 387 * This should only be possible to happen at index 0, so we 388 * don't need to reset the counter, nor do we risk infinite 389 * restarts. 390 */ 391 if (radix_tree_deref_retry(page)) 392 goto restart; | 386 if (radix_tree_deref_retry(page)) { 387 slot = radix_tree_iter_retry(&iter); 388 continue; 389 } |
393 394 if (radix_tree_exceptional_entry(page)) 395 swapped++; 396 397 if (need_resched()) { 398 cond_resched_rcu(); 399 start = iter.index + 1; 400 goto restart; --- 1545 unchanged lines hidden (view full) --- 1946 lru_add_drain(); 1947 start = 0; 1948 rcu_read_lock(); 1949 1950restart: 1951 radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) { 1952 page = radix_tree_deref_slot(slot); 1953 if (!page || radix_tree_exception(page)) { | 390 391 if (radix_tree_exceptional_entry(page)) 392 swapped++; 393 394 if (need_resched()) { 395 cond_resched_rcu(); 396 start = iter.index + 1; 397 goto restart; --- 1545 unchanged lines hidden (view full) --- 1943 lru_add_drain(); 1944 start = 0; 1945 rcu_read_lock(); 1946 1947restart: 1948 radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) { 1949 page = radix_tree_deref_slot(slot); 1950 if (!page || radix_tree_exception(page)) { |
1954 if (radix_tree_deref_retry(page)) 1955 goto restart; | 1951 if (radix_tree_deref_retry(page)) { 1952 slot = radix_tree_iter_retry(&iter); 1953 continue; 1954 } |
1956 } else if (page_count(page) - page_mapcount(page) > 1) { 1957 spin_lock_irq(&mapping->tree_lock); 1958 radix_tree_tag_set(&mapping->page_tree, iter.index, 1959 SHMEM_TAG_PINNED); 1960 spin_unlock_irq(&mapping->tree_lock); 1961 } 1962 1963 if (need_resched()) { --- 37 unchanged lines hidden (view full) --- 2001 start = 0; 2002 rcu_read_lock(); 2003restart: 2004 radix_tree_for_each_tagged(slot, &mapping->page_tree, &iter, 2005 start, SHMEM_TAG_PINNED) { 2006 2007 page = radix_tree_deref_slot(slot); 2008 if (radix_tree_exception(page)) { | 1955 } else if (page_count(page) - page_mapcount(page) > 1) { 1956 spin_lock_irq(&mapping->tree_lock); 1957 radix_tree_tag_set(&mapping->page_tree, iter.index, 1958 SHMEM_TAG_PINNED); 1959 spin_unlock_irq(&mapping->tree_lock); 1960 } 1961 1962 if (need_resched()) { --- 37 unchanged lines hidden (view full) --- 2000 start = 0; 2001 rcu_read_lock(); 2002restart: 2003 radix_tree_for_each_tagged(slot, &mapping->page_tree, &iter, 2004 start, SHMEM_TAG_PINNED) { 2005 2006 page = radix_tree_deref_slot(slot); 2007 if (radix_tree_exception(page)) { |
2009 if (radix_tree_deref_retry(page)) 2010 goto restart; | 2008 if (radix_tree_deref_retry(page)) { 2009 slot = radix_tree_iter_retry(&iter); 2010 continue; 2011 } |
2011 2012 page = NULL; 2013 } 2014 2015 if (page && 2016 page_count(page) - page_mapcount(page) != 1) { 2017 if (scan < LAST_SCAN) 2018 goto continue_resched; --- 1498 unchanged lines hidden --- | 2012 2013 page = NULL; 2014 } 2015 2016 if (page && 2017 page_count(page) - page_mapcount(page) != 1) { 2018 if (scan < LAST_SCAN) 2019 goto continue_resched; --- 1498 unchanged lines hidden --- |