mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
mm: rotate_reclaimable_page() cleanup
Clean up messy conditional calling of test_clear_page_writeback() from both rotate_reclaimable_page() and end_page_writeback(). The only user of rotate_reclaimable_page() is end_page_writeback() so this is OK. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f05111f501
commit
ac6aadb24b
@ -177,7 +177,7 @@ extern void activate_page(struct page *);
|
||||
extern void mark_page_accessed(struct page *);
|
||||
extern void lru_add_drain(void);
|
||||
extern int lru_add_drain_all(void);
|
||||
extern int rotate_reclaimable_page(struct page *page);
|
||||
extern void rotate_reclaimable_page(struct page *page);
|
||||
extern void swap_setup(void);
|
||||
|
||||
/* linux/mm/vmscan.c */
|
||||
|
10
mm/filemap.c
10
mm/filemap.c
@ -576,10 +576,12 @@ EXPORT_SYMBOL(unlock_page);
|
||||
*/
|
||||
void end_page_writeback(struct page *page)
|
||||
{
|
||||
if (!TestClearPageReclaim(page) || rotate_reclaimable_page(page)) {
|
||||
if (!test_clear_page_writeback(page))
|
||||
BUG();
|
||||
}
|
||||
if (TestClearPageReclaim(page))
|
||||
rotate_reclaimable_page(page);
|
||||
|
||||
if (!test_clear_page_writeback(page))
|
||||
BUG();
|
||||
|
||||
smp_mb__after_clear_bit();
|
||||
wake_up_page(page, PG_writeback);
|
||||
}
|
||||
|
37
mm/swap.c
37
mm/swap.c
@ -132,34 +132,21 @@ static void pagevec_move_tail(struct pagevec *pvec)
|
||||
* Writeback is about to end against a page which has been marked for immediate
|
||||
* reclaim. If it still appears to be reclaimable, move it to the tail of the
|
||||
* inactive list.
|
||||
*
|
||||
* Returns zero if it cleared PG_writeback.
|
||||
*/
|
||||
int rotate_reclaimable_page(struct page *page)
|
||||
void rotate_reclaimable_page(struct page *page)
|
||||
{
|
||||
struct pagevec *pvec;
|
||||
unsigned long flags;
|
||||
if (!PageLocked(page) && !PageDirty(page) && !PageActive(page) &&
|
||||
PageLRU(page)) {
|
||||
struct pagevec *pvec;
|
||||
unsigned long flags;
|
||||
|
||||
if (PageLocked(page))
|
||||
return 1;
|
||||
if (PageDirty(page))
|
||||
return 1;
|
||||
if (PageActive(page))
|
||||
return 1;
|
||||
if (!PageLRU(page))
|
||||
return 1;
|
||||
|
||||
page_cache_get(page);
|
||||
local_irq_save(flags);
|
||||
pvec = &__get_cpu_var(lru_rotate_pvecs);
|
||||
if (!pagevec_add(pvec, page))
|
||||
pagevec_move_tail(pvec);
|
||||
local_irq_restore(flags);
|
||||
|
||||
if (!test_clear_page_writeback(page))
|
||||
BUG();
|
||||
|
||||
return 0;
|
||||
page_cache_get(page);
|
||||
local_irq_save(flags);
|
||||
pvec = &__get_cpu_var(lru_rotate_pvecs);
|
||||
if (!pagevec_add(pvec, page))
|
||||
pagevec_move_tail(pvec);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user