Showing error 1611

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: mm/vmscan.c
Line in file: 2462
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-29 20:11:37 UTC


Source:

   1/*
   2 *  linux/mm/vmscan.c
   3 *
   4 *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
   5 *
   6 *  Swap reorganised 29.12.95, Stephen Tweedie.
   7 *  kswapd added: 7.1.96  sct
   8 *  Removed kswapd_ctl limits, and swap out as many pages as needed
   9 *  to bring the system back to freepages.high: 2.4.97, Rik van Riel.
  10 *  Zone aware kswapd started 02/00, Kanoj Sarcar (kanoj@sgi.com).
  11 *  Multiqueue VM started 5.8.00, Rik van Riel.
  12 */
  13
  14#include <linux/mm.h>
  15#include <linux/module.h>
  16#include <linux/slab.h>
  17#include <linux/kernel_stat.h>
  18#include <linux/swap.h>
  19#include <linux/pagemap.h>
  20#include <linux/init.h>
  21#include <linux/highmem.h>
  22#include <linux/vmstat.h>
  23#include <linux/file.h>
  24#include <linux/writeback.h>
  25#include <linux/blkdev.h>
  26#include <linux/buffer_head.h>        /* for try_to_release_page(),
  27                                        buffer_heads_over_limit */
  28#include <linux/mm_inline.h>
  29#include <linux/pagevec.h>
  30#include <linux/backing-dev.h>
  31#include <linux/rmap.h>
  32#include <linux/topology.h>
  33#include <linux/cpu.h>
  34#include <linux/cpuset.h>
  35#include <linux/notifier.h>
  36#include <linux/rwsem.h>
  37#include <linux/delay.h>
  38#include <linux/kthread.h>
  39#include <linux/freezer.h>
  40#include <linux/memcontrol.h>
  41#include <linux/delayacct.h>
  42#include <linux/sysctl.h>
  43
  44#include <asm/tlbflush.h>
  45#include <asm/div64.h>
  46
  47#include <linux/swapops.h>
  48
  49#include "internal.h"
  50
  51struct scan_control {
  52        /* Incremented by the number of inactive pages that were scanned */
  53        unsigned long nr_scanned;
  54
  55        /* This context's GFP mask */
  56        gfp_t gfp_mask;
  57
  58        int may_writepage;
  59
  60        /* Can pages be swapped as part of reclaim? */
  61        int may_swap;
  62
  63        /* This context's SWAP_CLUSTER_MAX. If freeing memory for
  64         * suspend, we effectively ignore SWAP_CLUSTER_MAX.
  65         * In this context, it doesn't matter that we scan the
  66         * whole list at once. */
  67        int swap_cluster_max;
  68
  69        int swappiness;
  70
  71        int all_unreclaimable;
  72
  73        int order;
  74
  75        /* Which cgroup do we reclaim from */
  76        struct mem_cgroup *mem_cgroup;
  77
  78        /* Pluggable isolate pages callback */
  79        unsigned long (*isolate_pages)(unsigned long nr, struct list_head *dst,
  80                        unsigned long *scanned, int order, int mode,
  81                        struct zone *z, struct mem_cgroup *mem_cont,
  82                        int active, int file);
  83};
  84
  85#define lru_to_page(_head) (list_entry((_head)->prev, struct page, lru))
  86
  87#ifdef ARCH_HAS_PREFETCH
  88#define prefetch_prev_lru_page(_page, _base, _field)                        \
  89        do {                                                                \
  90                if ((_page)->lru.prev != _base) {                        \
  91                        struct page *prev;                                \
  92                                                                        \
  93                        prev = lru_to_page(&(_page->lru));                \
  94                        prefetch(&prev->_field);                        \
  95                }                                                        \
  96        } while (0)
  97#else
  98#define prefetch_prev_lru_page(_page, _base, _field) do { } while (0)
  99#endif
 100
 101#ifdef ARCH_HAS_PREFETCHW
 102#define prefetchw_prev_lru_page(_page, _base, _field)                        \
 103        do {                                                                \
 104                if ((_page)->lru.prev != _base) {                        \
 105                        struct page *prev;                                \
 106                                                                        \
 107                        prev = lru_to_page(&(_page->lru));                \
 108                        prefetchw(&prev->_field);                        \
 109                }                                                        \
 110        } while (0)
 111#else
 112#define prefetchw_prev_lru_page(_page, _base, _field) do { } while (0)
 113#endif
 114
 115/*
 116 * From 0 .. 100.  Higher means more swappy.
 117 */
 118int vm_swappiness = 60;
 119long vm_total_pages;        /* The total number of pages which the VM controls */
 120
 121static LIST_HEAD(shrinker_list);
 122static DECLARE_RWSEM(shrinker_rwsem);
 123
 124#ifdef CONFIG_CGROUP_MEM_RES_CTLR
 125#define scan_global_lru(sc)        (!(sc)->mem_cgroup)
 126#else
 127#define scan_global_lru(sc)        (1)
 128#endif
 129
 130/*
 131 * Add a shrinker callback to be called from the vm
 132 */
 133void register_shrinker(struct shrinker *shrinker)
 134{
 135        shrinker->nr = 0;
 136        down_write(&shrinker_rwsem);
 137        list_add_tail(&shrinker->list, &shrinker_list);
 138        up_write(&shrinker_rwsem);
 139}
 140EXPORT_SYMBOL(register_shrinker);
 141
 142/*
 143 * Remove one
 144 */
 145void unregister_shrinker(struct shrinker *shrinker)
 146{
 147        down_write(&shrinker_rwsem);
 148        list_del(&shrinker->list);
 149        up_write(&shrinker_rwsem);
 150}
 151EXPORT_SYMBOL(unregister_shrinker);
 152
 153#define SHRINK_BATCH 128
 154/*
 155 * Call the shrink functions to age shrinkable caches
 156 *
 157 * Here we assume it costs one seek to replace a lru page and that it also
 158 * takes a seek to recreate a cache object.  With this in mind we age equal
 159 * percentages of the lru and ageable caches.  This should balance the seeks
 160 * generated by these structures.
 161 *
 162 * If the vm encountered mapped pages on the LRU it increase the pressure on
 163 * slab to avoid swapping.
 164 *
 165 * We do weird things to avoid (scanned*seeks*entries) overflowing 32 bits.
 166 *
 167 * `lru_pages' represents the number of on-LRU pages in all the zones which
 168 * are eligible for the caller's allocation attempt.  It is used for balancing
 169 * slab reclaim versus page reclaim.
 170 *
 171 * Returns the number of slab objects which we shrunk.
 172 */
 173unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
 174                        unsigned long lru_pages)
 175{
 176        struct shrinker *shrinker;
 177        unsigned long ret = 0;
 178
 179        if (scanned == 0)
 180                scanned = SWAP_CLUSTER_MAX;
 181
 182        if (!down_read_trylock(&shrinker_rwsem))
 183                return 1;        /* Assume we'll be able to shrink next time */
 184
 185        list_for_each_entry(shrinker, &shrinker_list, list) {
 186                unsigned long long delta;
 187                unsigned long total_scan;
 188                unsigned long max_pass = (*shrinker->shrink)(0, gfp_mask);
 189
 190                delta = (4 * scanned) / shrinker->seeks;
 191                delta *= max_pass;
 192                do_div(delta, lru_pages + 1);
 193                shrinker->nr += delta;
 194                if (shrinker->nr < 0) {
 195                        printk(KERN_ERR "%s: nr=%ld\n",
 196                                        __func__, shrinker->nr);
 197                        shrinker->nr = max_pass;
 198                }
 199
 200                /*
 201                 * Avoid risking looping forever due to too large nr value:
 202                 * never try to free more than twice the estimate number of
 203                 * freeable entries.
 204                 */
 205                if (shrinker->nr > max_pass * 2)
 206                        shrinker->nr = max_pass * 2;
 207
 208                total_scan = shrinker->nr;
 209                shrinker->nr = 0;
 210
 211                while (total_scan >= SHRINK_BATCH) {
 212                        long this_scan = SHRINK_BATCH;
 213                        int shrink_ret;
 214                        int nr_before;
 215
 216                        nr_before = (*shrinker->shrink)(0, gfp_mask);
 217                        shrink_ret = (*shrinker->shrink)(this_scan, gfp_mask);
 218                        if (shrink_ret == -1)
 219                                break;
 220                        if (shrink_ret < nr_before)
 221                                ret += nr_before - shrink_ret;
 222                        count_vm_events(SLABS_SCANNED, this_scan);
 223                        total_scan -= this_scan;
 224
 225                        cond_resched();
 226                }
 227
 228                shrinker->nr += total_scan;
 229        }
 230        up_read(&shrinker_rwsem);
 231        return ret;
 232}
 233
 234/* Called without lock on whether page is mapped, so answer is unstable */
 235static inline int page_mapping_inuse(struct page *page)
 236{
 237        struct address_space *mapping;
 238
 239        /* Page is in somebody's page tables. */
 240        if (page_mapped(page))
 241                return 1;
 242
 243        /* Be more reluctant to reclaim swapcache than pagecache */
 244        if (PageSwapCache(page))
 245                return 1;
 246
 247        mapping = page_mapping(page);
 248        if (!mapping)
 249                return 0;
 250
 251        /* File is mmap'd by somebody? */
 252        return mapping_mapped(mapping);
 253}
 254
 255static inline int is_page_cache_freeable(struct page *page)
 256{
 257        return page_count(page) - !!PagePrivate(page) == 2;
 258}
 259
 260static int may_write_to_queue(struct backing_dev_info *bdi)
 261{
 262        if (current->flags & PF_SWAPWRITE)
 263                return 1;
 264        if (!bdi_write_congested(bdi))
 265                return 1;
 266        if (bdi == current->backing_dev_info)
 267                return 1;
 268        return 0;
 269}
 270
 271/*
 272 * We detected a synchronous write error writing a page out.  Probably
 273 * -ENOSPC.  We need to propagate that into the address_space for a subsequent
 274 * fsync(), msync() or close().
 275 *
 276 * The tricky part is that after writepage we cannot touch the mapping: nothing
 277 * prevents it from being freed up.  But we have a ref on the page and once
 278 * that page is locked, the mapping is pinned.
 279 *
 280 * We're allowed to run sleeping lock_page() here because we know the caller has
 281 * __GFP_FS.
 282 */
 283static void handle_write_error(struct address_space *mapping,
 284                                struct page *page, int error)
 285{
 286        lock_page(page);
 287        if (page_mapping(page) == mapping)
 288                mapping_set_error(mapping, error);
 289        unlock_page(page);
 290}
 291
 292/* Request for sync pageout. */
 293enum pageout_io {
 294        PAGEOUT_IO_ASYNC,
 295        PAGEOUT_IO_SYNC,
 296};
 297
 298/* possible outcome of pageout() */
 299typedef enum {
 300        /* failed to write page out, page is locked */
 301        PAGE_KEEP,
 302        /* move page to the active list, page is locked */
 303        PAGE_ACTIVATE,
 304        /* page has been sent to the disk successfully, page is unlocked */
 305        PAGE_SUCCESS,
 306        /* page is clean and locked */
 307        PAGE_CLEAN,
 308} pageout_t;
 309
 310/*
 311 * pageout is called by shrink_page_list() for each dirty page.
 312 * Calls ->writepage().
 313 */
 314static pageout_t pageout(struct page *page, struct address_space *mapping,
 315                                                enum pageout_io sync_writeback)
 316{
 317        /*
 318         * If the page is dirty, only perform writeback if that write
 319         * will be non-blocking.  To prevent this allocation from being
 320         * stalled by pagecache activity.  But note that there may be
 321         * stalls if we need to run get_block().  We could test
 322         * PagePrivate for that.
 323         *
 324         * If this process is currently in generic_file_write() against
 325         * this page's queue, we can perform writeback even if that
 326         * will block.
 327         *
 328         * If the page is swapcache, write it back even if that would
 329         * block, for some throttling. This happens by accident, because
 330         * swap_backing_dev_info is bust: it doesn't reflect the
 331         * congestion state of the swapdevs.  Easy to fix, if needed.
 332         * See swapfile.c:page_queue_congested().
 333         */
 334        if (!is_page_cache_freeable(page))
 335                return PAGE_KEEP;
 336        if (!mapping) {
 337                /*
 338                 * Some data journaling orphaned pages can have
 339                 * page->mapping == NULL while being dirty with clean buffers.
 340                 */
 341                if (PagePrivate(page)) {
 342                        if (try_to_free_buffers(page)) {
 343                                ClearPageDirty(page);
 344                                printk("%s: orphaned page\n", __func__);
 345                                return PAGE_CLEAN;
 346                        }
 347                }
 348                return PAGE_KEEP;
 349        }
 350        if (mapping->a_ops->writepage == NULL)
 351                return PAGE_ACTIVATE;
 352        if (!may_write_to_queue(mapping->backing_dev_info))
 353                return PAGE_KEEP;
 354
 355        if (clear_page_dirty_for_io(page)) {
 356                int res;
 357                struct writeback_control wbc = {
 358                        .sync_mode = WB_SYNC_NONE,
 359                        .nr_to_write = SWAP_CLUSTER_MAX,
 360                        .range_start = 0,
 361                        .range_end = LLONG_MAX,
 362                        .nonblocking = 1,
 363                        .for_reclaim = 1,
 364                };
 365
 366                SetPageReclaim(page);
 367                res = mapping->a_ops->writepage(page, &wbc);
 368                if (res < 0)
 369                        handle_write_error(mapping, page, res);
 370                if (res == AOP_WRITEPAGE_ACTIVATE) {
 371                        ClearPageReclaim(page);
 372                        return PAGE_ACTIVATE;
 373                }
 374
 375                /*
 376                 * Wait on writeback if requested to. This happens when
 377                 * direct reclaiming a large contiguous area and the
 378                 * first attempt to free a range of pages fails.
 379                 */
 380                if (PageWriteback(page) && sync_writeback == PAGEOUT_IO_SYNC)
 381                        wait_on_page_writeback(page);
 382
 383                if (!PageWriteback(page)) {
 384                        /* synchronous write or broken a_ops? */
 385                        ClearPageReclaim(page);
 386                }
 387                inc_zone_page_state(page, NR_VMSCAN_WRITE);
 388                return PAGE_SUCCESS;
 389        }
 390
 391        return PAGE_CLEAN;
 392}
 393
 394/*
 395 * Same as remove_mapping, but if the page is removed from the mapping, it
 396 * gets returned with a refcount of 0.
 397 */
 398static int __remove_mapping(struct address_space *mapping, struct page *page)
 399{
 400        BUG_ON(!PageLocked(page));
 401        BUG_ON(mapping != page_mapping(page));
 402
 403        spin_lock_irq(&mapping->tree_lock);
 404        /*
 405         * The non racy check for a busy page.
 406         *
 407         * Must be careful with the order of the tests. When someone has
 408         * a ref to the page, it may be possible that they dirty it then
 409         * drop the reference. So if PageDirty is tested before page_count
 410         * here, then the following race may occur:
 411         *
 412         * get_user_pages(&page);
 413         * [user mapping goes away]
 414         * write_to(page);
 415         *                                !PageDirty(page)    [good]
 416         * SetPageDirty(page);
 417         * put_page(page);
 418         *                                !page_count(page)   [good, discard it]
 419         *
 420         * [oops, our write_to data is lost]
 421         *
 422         * Reversing the order of the tests ensures such a situation cannot
 423         * escape unnoticed. The smp_rmb is needed to ensure the page->flags
 424         * load is not satisfied before that of page->_count.
 425         *
 426         * Note that if SetPageDirty is always performed via set_page_dirty,
 427         * and thus under tree_lock, then this ordering is not required.
 428         */
 429        if (!page_freeze_refs(page, 2))
 430                goto cannot_free;
 431        /* note: atomic_cmpxchg in page_freeze_refs provides the smp_rmb */
 432        if (unlikely(PageDirty(page))) {
 433                page_unfreeze_refs(page, 2);
 434                goto cannot_free;
 435        }
 436
 437        if (PageSwapCache(page)) {
 438                swp_entry_t swap = { .val = page_private(page) };
 439                __delete_from_swap_cache(page);
 440                spin_unlock_irq(&mapping->tree_lock);
 441                swap_free(swap);
 442        } else {
 443                __remove_from_page_cache(page);
 444                spin_unlock_irq(&mapping->tree_lock);
 445        }
 446
 447        return 1;
 448
 449cannot_free:
 450        spin_unlock_irq(&mapping->tree_lock);
 451        return 0;
 452}
 453
 454/*
 455 * Attempt to detach a locked page from its ->mapping.  If it is dirty or if
 456 * someone else has a ref on the page, abort and return 0.  If it was
 457 * successfully detached, return 1.  Assumes the caller has a single ref on
 458 * this page.
 459 */
 460int remove_mapping(struct address_space *mapping, struct page *page)
 461{
 462        if (__remove_mapping(mapping, page)) {
 463                /*
 464                 * Unfreezing the refcount with 1 rather than 2 effectively
 465                 * drops the pagecache ref for us without requiring another
 466                 * atomic operation.
 467                 */
 468                page_unfreeze_refs(page, 1);
 469                return 1;
 470        }
 471        return 0;
 472}
 473
 474/**
 475 * putback_lru_page - put previously isolated page onto appropriate LRU list
 476 * @page: page to be put back to appropriate lru list
 477 *
 478 * Add previously isolated @page to appropriate LRU list.
 479 * Page may still be unevictable for other reasons.
 480 *
 481 * lru_lock must not be held, interrupts must be enabled.
 482 */
 483#ifdef CONFIG_UNEVICTABLE_LRU
 484void putback_lru_page(struct page *page)
 485{
 486        int lru;
 487        int active = !!TestClearPageActive(page);
 488        int was_unevictable = PageUnevictable(page);
 489
 490        VM_BUG_ON(PageLRU(page));
 491
 492redo:
 493        ClearPageUnevictable(page);
 494
 495        if (page_evictable(page, NULL)) {
 496                /*
 497                 * For evictable pages, we can use the cache.
 498                 * In event of a race, worst case is we end up with an
 499                 * unevictable page on [in]active list.
 500                 * We know how to handle that.
 501                 */
 502                lru = active + page_is_file_cache(page);
 503                lru_cache_add_lru(page, lru);
 504        } else {
 505                /*
 506                 * Put unevictable pages directly on zone's unevictable
 507                 * list.
 508                 */
 509                lru = LRU_UNEVICTABLE;
 510                add_page_to_unevictable_list(page);
 511        }
 512        mem_cgroup_move_lists(page, lru);
 513
 514        /*
 515         * page's status can change while we move it among lru. If an evictable
 516         * page is on unevictable list, it never be freed. To avoid that,
 517         * check after we added it to the list, again.
 518         */
 519        if (lru == LRU_UNEVICTABLE && page_evictable(page, NULL)) {
 520                if (!isolate_lru_page(page)) {
 521                        put_page(page);
 522                        goto redo;
 523                }
 524                /* This means someone else dropped this page from LRU
 525                 * So, it will be freed or putback to LRU again. There is
 526                 * nothing to do here.
 527                 */
 528        }
 529
 530        if (was_unevictable && lru != LRU_UNEVICTABLE)
 531                count_vm_event(UNEVICTABLE_PGRESCUED);
 532        else if (!was_unevictable && lru == LRU_UNEVICTABLE)
 533                count_vm_event(UNEVICTABLE_PGCULLED);
 534
 535        put_page(page);                /* drop ref from isolate */
 536}
 537
 538#else /* CONFIG_UNEVICTABLE_LRU */
 539
 540void putback_lru_page(struct page *page)
 541{
 542        int lru;
 543        VM_BUG_ON(PageLRU(page));
 544
 545        lru = !!TestClearPageActive(page) + page_is_file_cache(page);
 546        lru_cache_add_lru(page, lru);
 547        mem_cgroup_move_lists(page, lru);
 548        put_page(page);
 549}
 550#endif /* CONFIG_UNEVICTABLE_LRU */
 551
 552
 553/*
 554 * shrink_page_list() returns the number of reclaimed pages
 555 */
 556static unsigned long shrink_page_list(struct list_head *page_list,
 557                                        struct scan_control *sc,
 558                                        enum pageout_io sync_writeback)
 559{
 560        LIST_HEAD(ret_pages);
 561        struct pagevec freed_pvec;
 562        int pgactivate = 0;
 563        unsigned long nr_reclaimed = 0;
 564
 565        cond_resched();
 566
 567        pagevec_init(&freed_pvec, 1);
 568        while (!list_empty(page_list)) {
 569                struct address_space *mapping;
 570                struct page *page;
 571                int may_enter_fs;
 572                int referenced;
 573
 574                cond_resched();
 575
 576                page = lru_to_page(page_list);
 577                list_del(&page->lru);
 578
 579                if (!trylock_page(page))
 580                        goto keep;
 581
 582                VM_BUG_ON(PageActive(page));
 583
 584                sc->nr_scanned++;
 585
 586                if (unlikely(!page_evictable(page, NULL)))
 587                        goto cull_mlocked;
 588
 589                if (!sc->may_swap && page_mapped(page))
 590                        goto keep_locked;
 591
 592                /* Double the slab pressure for mapped and swapcache pages */
 593                if (page_mapped(page) || PageSwapCache(page))
 594                        sc->nr_scanned++;
 595
 596                may_enter_fs = (sc->gfp_mask & __GFP_FS) ||
 597                        (PageSwapCache(page) && (sc->gfp_mask & __GFP_IO));
 598
 599                if (PageWriteback(page)) {
 600                        /*
 601                         * Synchronous reclaim is performed in two passes,
 602                         * first an asynchronous pass over the list to
 603                         * start parallel writeback, and a second synchronous
 604                         * pass to wait for the IO to complete.  Wait here
 605                         * for any page for which writeback has already
 606                         * started.
 607                         */
 608                        if (sync_writeback == PAGEOUT_IO_SYNC && may_enter_fs)
 609                                wait_on_page_writeback(page);
 610                        else
 611                                goto keep_locked;
 612                }
 613
 614                referenced = page_referenced(page, 1, sc->mem_cgroup);
 615                /* In active use or really unfreeable?  Activate it. */
 616                if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&
 617                                        referenced && page_mapping_inuse(page))
 618                        goto activate_locked;
 619
 620#ifdef CONFIG_SWAP
 621                /*
 622                 * Anonymous process memory has backing store?
 623                 * Try to allocate it some swap space here.
 624                 */
 625                if (PageAnon(page) && !PageSwapCache(page)) {
 626                        if (!(sc->gfp_mask & __GFP_IO))
 627                                goto keep_locked;
 628                        switch (try_to_munlock(page)) {
 629                        case SWAP_FAIL:                /* shouldn't happen */
 630                        case SWAP_AGAIN:
 631                                goto keep_locked;
 632                        case SWAP_MLOCK:
 633                                goto cull_mlocked;
 634                        case SWAP_SUCCESS:
 635                                ; /* fall thru'; add to swap cache */
 636                        }
 637                        if (!add_to_swap(page, GFP_ATOMIC))
 638                                goto activate_locked;
 639                        may_enter_fs = 1;
 640                }
 641#endif /* CONFIG_SWAP */
 642
 643                mapping = page_mapping(page);
 644
 645                /*
 646                 * The page is mapped into the page tables of one or more
 647                 * processes. Try to unmap it here.
 648                 */
 649                if (page_mapped(page) && mapping) {
 650                        switch (try_to_unmap(page, 0)) {
 651                        case SWAP_FAIL:
 652                                goto activate_locked;
 653                        case SWAP_AGAIN:
 654                                goto keep_locked;
 655                        case SWAP_MLOCK:
 656                                goto cull_mlocked;
 657                        case SWAP_SUCCESS:
 658                                ; /* try to free the page below */
 659                        }
 660                }
 661
 662                if (PageDirty(page)) {
 663                        if (sc->order <= PAGE_ALLOC_COSTLY_ORDER && referenced)
 664                                goto keep_locked;
 665                        if (!may_enter_fs)
 666                                goto keep_locked;
 667                        if (!sc->may_writepage)
 668                                goto keep_locked;
 669
 670                        /* Page is dirty, try to write it out here */
 671                        switch (pageout(page, mapping, sync_writeback)) {
 672                        case PAGE_KEEP:
 673                                goto keep_locked;
 674                        case PAGE_ACTIVATE:
 675                                goto activate_locked;
 676                        case PAGE_SUCCESS:
 677                                if (PageWriteback(page) || PageDirty(page))
 678                                        goto keep;
 679                                /*
 680                                 * A synchronous write - probably a ramdisk.  Go
 681                                 * ahead and try to reclaim the page.
 682                                 */
 683                                if (!trylock_page(page))
 684                                        goto keep;
 685                                if (PageDirty(page) || PageWriteback(page))
 686                                        goto keep_locked;
 687                                mapping = page_mapping(page);
 688                        case PAGE_CLEAN:
 689                                ; /* try to free the page below */
 690                        }
 691                }
 692
 693                /*
 694                 * If the page has buffers, try to free the buffer mappings
 695                 * associated with this page. If we succeed we try to free
 696                 * the page as well.
 697                 *
 698                 * We do this even if the page is PageDirty().
 699                 * try_to_release_page() does not perform I/O, but it is
 700                 * possible for a page to have PageDirty set, but it is actually
 701                 * clean (all its buffers are clean).  This happens if the
 702                 * buffers were written out directly, with submit_bh(). ext3
 703                 * will do this, as well as the blockdev mapping.
 704                 * try_to_release_page() will discover that cleanness and will
 705                 * drop the buffers and mark the page clean - it can be freed.
 706                 *
 707                 * Rarely, pages can have buffers and no ->mapping.  These are
 708                 * the pages which were not successfully invalidated in
 709                 * truncate_complete_page().  We try to drop those buffers here
 710                 * and if that worked, and the page is no longer mapped into
 711                 * process address space (page_count == 1) it can be freed.
 712                 * Otherwise, leave the page on the LRU so it is swappable.
 713                 */
 714                if (PagePrivate(page)) {
 715                        if (!try_to_release_page(page, sc->gfp_mask))
 716                                goto activate_locked;
 717                        if (!mapping && page_count(page) == 1) {
 718                                unlock_page(page);
 719                                if (put_page_testzero(page))
 720                                        goto free_it;
 721                                else {
 722                                        /*
 723                                         * rare race with speculative reference.
 724                                         * the speculative reference will free
 725                                         * this page shortly, so we may
 726                                         * increment nr_reclaimed here (and
 727                                         * leave it off the LRU).
 728                                         */
 729                                        nr_reclaimed++;
 730                                        continue;
 731                                }
 732                        }
 733                }
 734
 735                if (!mapping || !__remove_mapping(mapping, page))
 736                        goto keep_locked;
 737
 738                /*
 739                 * At this point, we have no other references and there is
 740                 * no way to pick any more up (removed from LRU, removed
 741                 * from pagecache). Can use non-atomic bitops now (and
 742                 * we obviously don't have to worry about waking up a process
 743                 * waiting on the page lock, because there are no references.
 744                 */
 745                __clear_page_locked(page);
 746free_it:
 747                nr_reclaimed++;
 748                if (!pagevec_add(&freed_pvec, page)) {
 749                        __pagevec_free(&freed_pvec);
 750                        pagevec_reinit(&freed_pvec);
 751                }
 752                continue;
 753
 754cull_mlocked:
 755                unlock_page(page);
 756                putback_lru_page(page);
 757                continue;
 758
 759activate_locked:
 760                /* Not a candidate for swapping, so reclaim swap space. */
 761                if (PageSwapCache(page) && vm_swap_full())
 762                        remove_exclusive_swap_page_ref(page);
 763                VM_BUG_ON(PageActive(page));
 764                SetPageActive(page);
 765                pgactivate++;
 766keep_locked:
 767                unlock_page(page);
 768keep:
 769                list_add(&page->lru, &ret_pages);
 770                VM_BUG_ON(PageLRU(page) || PageUnevictable(page));
 771        }
 772        list_splice(&ret_pages, page_list);
 773        if (pagevec_count(&freed_pvec))
 774                __pagevec_free(&freed_pvec);
 775        count_vm_events(PGACTIVATE, pgactivate);
 776        return nr_reclaimed;
 777}
 778
 779/* LRU Isolation modes. */
 780#define ISOLATE_INACTIVE 0        /* Isolate inactive pages. */
 781#define ISOLATE_ACTIVE 1        /* Isolate active pages. */
 782#define ISOLATE_BOTH 2                /* Isolate both active and inactive pages. */
 783
 784/*
 785 * Attempt to remove the specified page from its LRU.  Only take this page
 786 * if it is of the appropriate PageActive status.  Pages which are being
 787 * freed elsewhere are also ignored.
 788 *
 789 * page:        page to consider
 790 * mode:        one of the LRU isolation modes defined above
 791 *
 792 * returns 0 on success, -ve errno on failure.
 793 */
 794int __isolate_lru_page(struct page *page, int mode, int file)
 795{
 796        int ret = -EINVAL;
 797
 798        /* Only take pages on the LRU. */
 799        if (!PageLRU(page))
 800                return ret;
 801
 802        /*
 803         * When checking the active state, we need to be sure we are
 804         * dealing with comparible boolean values.  Take the logical not
 805         * of each.
 806         */
 807        if (mode != ISOLATE_BOTH && (!PageActive(page) != !mode))
 808                return ret;
 809
 810        if (mode != ISOLATE_BOTH && (!page_is_file_cache(page) != !file))
 811                return ret;
 812
 813        /*
 814         * When this function is being called for lumpy reclaim, we
 815         * initially look into all LRU pages, active, inactive and
 816         * unevictable; only give shrink_page_list evictable pages.
 817         */
 818        if (PageUnevictable(page))
 819                return ret;
 820
 821        ret = -EBUSY;
 822        if (likely(get_page_unless_zero(page))) {
 823                /*
 824                 * Be careful not to clear PageLRU until after we're
 825                 * sure the page is not being freed elsewhere -- the
 826                 * page release code relies on it.
 827                 */
 828                ClearPageLRU(page);
 829                ret = 0;
 830        }
 831
 832        return ret;
 833}
 834
 835/*
 836 * zone->lru_lock is heavily contended.  Some of the functions that
 837 * shrink the lists perform better by taking out a batch of pages
 838 * and working on them outside the LRU lock.
 839 *
 840 * For pagecache intensive workloads, this function is the hottest
 841 * spot in the kernel (apart from copy_*_user functions).
 842 *
 843 * Appropriate locks must be held before calling this function.
 844 *
 845 * @nr_to_scan:        The number of pages to look through on the list.
 846 * @src:        The LRU list to pull pages off.
 847 * @dst:        The temp list to put pages on to.
 848 * @scanned:        The number of pages that were scanned.
 849 * @order:        The caller's attempted allocation order
 850 * @mode:        One of the LRU isolation modes
 851 * @file:        True [1] if isolating file [!anon] pages
 852 *
 853 * returns how many pages were moved onto *@dst.
 854 */
 855static unsigned long isolate_lru_pages(unsigned long nr_to_scan,
 856                struct list_head *src, struct list_head *dst,
 857                unsigned long *scanned, int order, int mode, int file)
 858{
 859        unsigned long nr_taken = 0;
 860        unsigned long scan;
 861
 862        for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) {
 863                struct page *page;
 864                unsigned long pfn;
 865                unsigned long end_pfn;
 866                unsigned long page_pfn;
 867                int zone_id;
 868
 869                page = lru_to_page(src);
 870                prefetchw_prev_lru_page(page, src, flags);
 871
 872                VM_BUG_ON(!PageLRU(page));
 873
 874                switch (__isolate_lru_page(page, mode, file)) {
 875                case 0:
 876                        list_move(&page->lru, dst);
 877                        nr_taken++;
 878                        break;
 879
 880                case -EBUSY:
 881                        /* else it is being freed elsewhere */
 882                        list_move(&page->lru, src);
 883                        continue;
 884
 885                default:
 886                        BUG();
 887                }
 888
 889                if (!order)
 890                        continue;
 891
 892                /*
 893                 * Attempt to take all pages in the order aligned region
 894                 * surrounding the tag page.  Only take those pages of
 895                 * the same active state as that tag page.  We may safely
 896                 * round the target page pfn down to the requested order
 897                 * as the mem_map is guarenteed valid out to MAX_ORDER,
 898                 * where that page is in a different zone we will detect
 899                 * it from its zone id and abort this block scan.
 900                 */
 901                zone_id = page_zone_id(page);
 902                page_pfn = page_to_pfn(page);
 903                pfn = page_pfn & ~((1 << order) - 1);
 904                end_pfn = pfn + (1 << order);
 905                for (; pfn < end_pfn; pfn++) {
 906                        struct page *cursor_page;
 907
 908                        /* The target page is in the block, ignore it. */
 909                        if (unlikely(pfn == page_pfn))
 910                                continue;
 911
 912                        /* Avoid holes within the zone. */
 913                        if (unlikely(!pfn_valid_within(pfn)))
 914                                break;
 915
 916                        cursor_page = pfn_to_page(pfn);
 917
 918                        /* Check that we have not crossed a zone boundary. */
 919                        if (unlikely(page_zone_id(cursor_page) != zone_id))
 920                                continue;
 921                        switch (__isolate_lru_page(cursor_page, mode, file)) {
 922                        case 0:
 923                                list_move(&cursor_page->lru, dst);
 924                                nr_taken++;
 925                                scan++;
 926                                break;
 927
 928                        case -EBUSY:
 929                                /* else it is being freed elsewhere */
 930                                list_move(&cursor_page->lru, src);
 931                        default:
 932                                break;        /* ! on LRU or wrong list */
 933                        }
 934                }
 935        }
 936
 937        *scanned = scan;
 938        return nr_taken;
 939}
 940
 941static unsigned long isolate_pages_global(unsigned long nr,
 942                                        struct list_head *dst,
 943                                        unsigned long *scanned, int order,
 944                                        int mode, struct zone *z,
 945                                        struct mem_cgroup *mem_cont,
 946                                        int active, int file)
 947{
 948        int lru = LRU_BASE;
 949        if (active)
 950                lru += LRU_ACTIVE;
 951        if (file)
 952                lru += LRU_FILE;
 953        return isolate_lru_pages(nr, &z->lru[lru].list, dst, scanned, order,
 954                                                                mode, !!file);
 955}
 956
 957/*
 958 * clear_active_flags() is a helper for shrink_active_list(), clearing
 959 * any active bits from the pages in the list.
 960 */
 961static unsigned long clear_active_flags(struct list_head *page_list,
 962                                        unsigned int *count)
 963{
 964        int nr_active = 0;
 965        int lru;
 966        struct page *page;
 967
 968        list_for_each_entry(page, page_list, lru) {
 969                lru = page_is_file_cache(page);
 970                if (PageActive(page)) {
 971                        lru += LRU_ACTIVE;
 972                        ClearPageActive(page);
 973                        nr_active++;
 974                }
 975                count[lru]++;
 976        }
 977
 978        return nr_active;
 979}
 980
 981/**
 982 * isolate_lru_page - tries to isolate a page from its LRU list
 983 * @page: page to isolate from its LRU list
 984 *
 985 * Isolates a @page from an LRU list, clears PageLRU and adjusts the
 986 * vmstat statistic corresponding to whatever LRU list the page was on.
 987 *
 988 * Returns 0 if the page was removed from an LRU list.
 989 * Returns -EBUSY if the page was not on an LRU list.
 990 *
 991 * The returned page will have PageLRU() cleared.  If it was found on
 992 * the active list, it will have PageActive set.  If it was found on
 993 * the unevictable list, it will have the PageUnevictable bit set. That flag
 994 * may need to be cleared by the caller before letting the page go.
 995 *
 996 * The vmstat statistic corresponding to the list on which the page was
 997 * found will be decremented.
 998 *
 999 * Restrictions:
1000 * (1) Must be called with an elevated refcount on the page. This is a
1001 *     fundamentnal difference from isolate_lru_pages (which is called
1002 *     without a stable reference).
1003 * (2) the lru_lock must not be held.
1004 * (3) interrupts must be enabled.
1005 */
1006int isolate_lru_page(struct page *page)
1007{
1008        int ret = -EBUSY;
1009
1010        if (PageLRU(page)) {
1011                struct zone *zone = page_zone(page);
1012
1013                spin_lock_irq(&zone->lru_lock);
1014                if (PageLRU(page) && get_page_unless_zero(page)) {
1015                        int lru = page_lru(page);
1016                        ret = 0;
1017                        ClearPageLRU(page);
1018
1019                        del_page_from_lru_list(zone, page, lru);
1020                }
1021                spin_unlock_irq(&zone->lru_lock);
1022        }
1023        return ret;
1024}
1025
1026/*
1027 * shrink_inactive_list() is a helper for shrink_zone().  It returns the number
1028 * of reclaimed pages
1029 */
1030static unsigned long shrink_inactive_list(unsigned long max_scan,
1031                        struct zone *zone, struct scan_control *sc,
1032                        int priority, int file)
1033{
1034        LIST_HEAD(page_list);
1035        struct pagevec pvec;
1036        unsigned long nr_scanned = 0;
1037        unsigned long nr_reclaimed = 0;
1038
1039        pagevec_init(&pvec, 1);
1040
1041        lru_add_drain();
1042        spin_lock_irq(&zone->lru_lock);
1043        do {
1044                struct page *page;
1045                unsigned long nr_taken;
1046                unsigned long nr_scan;
1047                unsigned long nr_freed;
1048                unsigned long nr_active;
1049                unsigned int count[NR_LRU_LISTS] = { 0, };
1050                int mode = ISOLATE_INACTIVE;
1051
1052                /*
1053                 * If we need a large contiguous chunk of memory, or have
1054                 * trouble getting a small set of contiguous pages, we
1055                 * will reclaim both active and inactive pages.
1056                 *
1057                 * We use the same threshold as pageout congestion_wait below.
1058                 */
1059                if (sc->order > PAGE_ALLOC_COSTLY_ORDER)
1060                        mode = ISOLATE_BOTH;
1061                else if (sc->order && priority < DEF_PRIORITY - 2)
1062                        mode = ISOLATE_BOTH;
1063
1064                nr_taken = sc->isolate_pages(sc->swap_cluster_max,
1065                             &page_list, &nr_scan, sc->order, mode,
1066                                zone, sc->mem_cgroup, 0, file);
1067                nr_active = clear_active_flags(&page_list, count);
1068                __count_vm_events(PGDEACTIVATE, nr_active);
1069
1070                __mod_zone_page_state(zone, NR_ACTIVE_FILE,
1071                                                -count[LRU_ACTIVE_FILE]);
1072                __mod_zone_page_state(zone, NR_INACTIVE_FILE,
1073                                                -count[LRU_INACTIVE_FILE]);
1074                __mod_zone_page_state(zone, NR_ACTIVE_ANON,
1075                                                -count[LRU_ACTIVE_ANON]);
1076                __mod_zone_page_state(zone, NR_INACTIVE_ANON,
1077                                                -count[LRU_INACTIVE_ANON]);
1078
1079                if (scan_global_lru(sc)) {
1080                        zone->pages_scanned += nr_scan;
1081                        zone->recent_scanned[0] += count[LRU_INACTIVE_ANON];
1082                        zone->recent_scanned[0] += count[LRU_ACTIVE_ANON];
1083                        zone->recent_scanned[1] += count[LRU_INACTIVE_FILE];
1084                        zone->recent_scanned[1] += count[LRU_ACTIVE_FILE];
1085                }
1086                spin_unlock_irq(&zone->lru_lock);
1087
1088                nr_scanned += nr_scan;
1089                nr_freed = shrink_page_list(&page_list, sc, PAGEOUT_IO_ASYNC);
1090
1091                /*
1092                 * If we are direct reclaiming for contiguous pages and we do
1093                 * not reclaim everything in the list, try again and wait
1094                 * for IO to complete. This will stall high-order allocations
1095                 * but that should be acceptable to the caller
1096                 */
1097                if (nr_freed < nr_taken && !current_is_kswapd() &&
1098                                        sc->order > PAGE_ALLOC_COSTLY_ORDER) {
1099                        congestion_wait(WRITE, HZ/10);
1100
1101                        /*
1102                         * The attempt at page out may have made some
1103                         * of the pages active, mark them inactive again.
1104                         */
1105                        nr_active = clear_active_flags(&page_list, count);
1106                        count_vm_events(PGDEACTIVATE, nr_active);
1107
1108                        nr_freed += shrink_page_list(&page_list, sc,
1109                                                        PAGEOUT_IO_SYNC);
1110                }
1111
1112                nr_reclaimed += nr_freed;
1113                local_irq_disable();
1114                if (current_is_kswapd()) {
1115                        __count_zone_vm_events(PGSCAN_KSWAPD, zone, nr_scan);
1116                        __count_vm_events(KSWAPD_STEAL, nr_freed);
1117                } else if (scan_global_lru(sc))
1118                        __count_zone_vm_events(PGSCAN_DIRECT, zone, nr_scan);
1119
1120                __count_zone_vm_events(PGSTEAL, zone, nr_freed);
1121
1122                if (nr_taken == 0)
1123                        goto done;
1124
1125                spin_lock(&zone->lru_lock);
1126                /*
1127                 * Put back any unfreeable pages.
1128                 */
1129                while (!list_empty(&page_list)) {
1130                        int lru;
1131                        page = lru_to_page(&page_list);
1132                        VM_BUG_ON(PageLRU(page));
1133                        list_del(&page->lru);
1134                        if (unlikely(!page_evictable(page, NULL))) {
1135                                spin_unlock_irq(&zone->lru_lock);
1136                                putback_lru_page(page);
1137                                spin_lock_irq(&zone->lru_lock);
1138                                continue;
1139                        }
1140                        SetPageLRU(page);
1141                        lru = page_lru(page);
1142                        add_page_to_lru_list(zone, page, lru);
1143                        mem_cgroup_move_lists(page, lru);
1144                        if (PageActive(page) && scan_global_lru(sc)) {
1145                                int file = !!page_is_file_cache(page);
1146                                zone->recent_rotated[file]++;
1147                        }
1148                        if (!pagevec_add(&pvec, page)) {
1149                                spin_unlock_irq(&zone->lru_lock);
1150                                __pagevec_release(&pvec);
1151                                spin_lock_irq(&zone->lru_lock);
1152                        }
1153                }
1154          } while (nr_scanned < max_scan);
1155        spin_unlock(&zone->lru_lock);
1156done:
1157        local_irq_enable();
1158        pagevec_release(&pvec);
1159        return nr_reclaimed;
1160}
1161
1162/*
1163 * We are about to scan this zone at a certain priority level.  If that priority
1164 * level is smaller (ie: more urgent) than the previous priority, then note
1165 * that priority level within the zone.  This is done so that when the next
1166 * process comes in to scan this zone, it will immediately start out at this
1167 * priority level rather than having to build up its own scanning priority.
1168 * Here, this priority affects only the reclaim-mapped threshold.
1169 */
1170static inline void note_zone_scanning_priority(struct zone *zone, int priority)
1171{
1172        if (priority < zone->prev_priority)
1173                zone->prev_priority = priority;
1174}
1175
1176static inline int zone_is_near_oom(struct zone *zone)
1177{
1178        return zone->pages_scanned >= (zone_lru_pages(zone) * 3);
1179}
1180
1181/*
1182 * This moves pages from the active list to the inactive list.
1183 *
1184 * We move them the other way if the page is referenced by one or more
1185 * processes, from rmap.
1186 *
1187 * If the pages are mostly unmapped, the processing is fast and it is
1188 * appropriate to hold zone->lru_lock across the whole operation.  But if
1189 * the pages are mapped, the processing is slow (page_referenced()) so we
1190 * should drop zone->lru_lock around each page.  It's impossible to balance
1191 * this, so instead we remove the pages from the LRU while processing them.
1192 * It is safe to rely on PG_active against the non-LRU pages in here because
1193 * nobody will play with that bit on a non-LRU page.
1194 *
1195 * The downside is that we have to touch page->_count against each page.
1196 * But we had to alter page->flags anyway.
1197 */
1198
1199
1200static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
1201                        struct scan_control *sc, int priority, int file)
1202{
1203        unsigned long pgmoved;
1204        int pgdeactivate = 0;
1205        unsigned long pgscanned;
1206        LIST_HEAD(l_hold);        /* The pages which were snipped off */
1207        LIST_HEAD(l_inactive);
1208        struct page *page;
1209        struct pagevec pvec;
1210        enum lru_list lru;
1211
1212        lru_add_drain();
1213        spin_lock_irq(&zone->lru_lock);
1214        pgmoved = sc->isolate_pages(nr_pages, &l_hold, &pgscanned, sc->order,
1215                                        ISOLATE_ACTIVE, zone,
1216                                        sc->mem_cgroup, 1, file);
1217        /*
1218         * zone->pages_scanned is used for detect zone's oom
1219         * mem_cgroup remembers nr_scan by itself.
1220         */
1221        if (scan_global_lru(sc)) {
1222                zone->pages_scanned += pgscanned;
1223                zone->recent_scanned[!!file] += pgmoved;
1224        }
1225
1226        if (file)
1227                __mod_zone_page_state(zone, NR_ACTIVE_FILE, -pgmoved);
1228        else
1229                __mod_zone_page_state(zone, NR_ACTIVE_ANON, -pgmoved);
1230        spin_unlock_irq(&zone->lru_lock);
1231
1232        pgmoved = 0;
1233        while (!list_empty(&l_hold)) {
1234                cond_resched();
1235                page = lru_to_page(&l_hold);
1236                list_del(&page->lru);
1237
1238                if (unlikely(!page_evictable(page, NULL))) {
1239                        putback_lru_page(page);
1240                        continue;
1241                }
1242
1243                /* page_referenced clears PageReferenced */
1244                if (page_mapping_inuse(page) &&
1245                    page_referenced(page, 0, sc->mem_cgroup))
1246                        pgmoved++;
1247
1248                list_add(&page->lru, &l_inactive);
1249        }
1250
1251        spin_lock_irq(&zone->lru_lock);
1252        /*
1253         * Count referenced pages from currently used mappings as
1254         * rotated, even though they are moved to the inactive list.
1255         * This helps balance scan pressure between file and anonymous
1256         * pages in get_scan_ratio.
1257         */
1258        zone->recent_rotated[!!file] += pgmoved;
1259
1260        /*
1261         * Move the pages to the [file or anon] inactive list.
1262         */
1263        pagevec_init(&pvec, 1);
1264
1265        pgmoved = 0;
1266        lru = LRU_BASE + file * LRU_FILE;
1267        while (!list_empty(&l_inactive)) {
1268                page = lru_to_page(&l_inactive);
1269                prefetchw_prev_lru_page(page, &l_inactive, flags);
1270                VM_BUG_ON(PageLRU(page));
1271                SetPageLRU(page);
1272                VM_BUG_ON(!PageActive(page));
1273                ClearPageActive(page);
1274
1275                list_move(&page->lru, &zone->lru[lru].list);
1276                mem_cgroup_move_lists(page, lru);
1277                pgmoved++;
1278                if (!pagevec_add(&pvec, page)) {
1279                        __mod_zone_page_state(zone, NR_LRU_BASE + lru, pgmoved);
1280                        spin_unlock_irq(&zone->lru_lock);
1281                        pgdeactivate += pgmoved;
1282                        pgmoved = 0;
1283                        if (buffer_heads_over_limit)
1284                                pagevec_strip(&pvec);
1285                        __pagevec_release(&pvec);
1286                        spin_lock_irq(&zone->lru_lock);
1287                }
1288        }
1289        __mod_zone_page_state(zone, NR_LRU_BASE + lru, pgmoved);
1290        pgdeactivate += pgmoved;
1291        if (buffer_heads_over_limit) {
1292                spin_unlock_irq(&zone->lru_lock);
1293                pagevec_strip(&pvec);
1294                spin_lock_irq(&zone->lru_lock);
1295        }
1296        __count_zone_vm_events(PGREFILL, zone, pgscanned);
1297        __count_vm_events(PGDEACTIVATE, pgdeactivate);
1298        spin_unlock_irq(&zone->lru_lock);
1299        if (vm_swap_full())
1300                pagevec_swap_free(&pvec);
1301
1302        pagevec_release(&pvec);
1303}
1304
1305static unsigned long shrink_list(enum lru_list lru, unsigned long nr_to_scan,
1306        struct zone *zone, struct scan_control *sc, int priority)
1307{
1308        int file = is_file_lru(lru);
1309
1310        if (lru == LRU_ACTIVE_FILE) {
1311                shrink_active_list(nr_to_scan, zone, sc, priority, file);
1312                return 0;
1313        }
1314
1315        if (lru == LRU_ACTIVE_ANON &&
1316            (!scan_global_lru(sc) || inactive_anon_is_low(zone))) {
1317                shrink_active_list(nr_to_scan, zone, sc, priority, file);
1318                return 0;
1319        }
1320        return shrink_inactive_list(nr_to_scan, zone, sc, priority, file);
1321}
1322
1323/*
1324 * Determine how aggressively the anon and file LRU lists should be
1325 * scanned.  The relative value of each set of LRU lists is determined
1326 * by looking at the fraction of the pages scanned we did rotate back
1327 * onto the active list instead of evict.
1328 *
1329 * percent[0] specifies how much pressure to put on ram/swap backed
1330 * memory, while percent[1] determines pressure on the file LRUs.
1331 */
1332static void get_scan_ratio(struct zone *zone, struct scan_control *sc,
1333                                        unsigned long *percent)
1334{
1335        unsigned long anon, file, free;
1336        unsigned long anon_prio, file_prio;
1337        unsigned long ap, fp;
1338
1339        anon  = zone_page_state(zone, NR_ACTIVE_ANON) +
1340                zone_page_state(zone, NR_INACTIVE_ANON);
1341        file  = zone_page_state(zone, NR_ACTIVE_FILE) +
1342                zone_page_state(zone, NR_INACTIVE_FILE);
1343        free  = zone_page_state(zone, NR_FREE_PAGES);
1344
1345        /* If we have no swap space, do not bother scanning anon pages. */
1346        if (nr_swap_pages <= 0) {
1347                percent[0] = 0;
1348                percent[1] = 100;
1349                return;
1350        }
1351
1352        /* If we have very few page cache pages, force-scan anon pages. */
1353        if (unlikely(file + free <= zone->pages_high)) {
1354                percent[0] = 100;
1355                percent[1] = 0;
1356                return;
1357        }
1358
1359        /*
1360         * OK, so we have swap space and a fair amount of page cache
1361         * pages.  We use the recently rotated / recently scanned
1362         * ratios to determine how valuable each cache is.
1363         *
1364         * Because workloads change over time (and to avoid overflow)
1365         * we keep these statistics as a floating average, which ends
1366         * up weighing recent references more than old ones.
1367         *
1368         * anon in [0], file in [1]
1369         */
1370        if (unlikely(zone->recent_scanned[0] > anon / 4)) {
1371                spin_lock_irq(&zone->lru_lock);
1372                zone->recent_scanned[0] /= 2;
1373                zone->recent_rotated[0] /= 2;
1374                spin_unlock_irq(&zone->lru_lock);
1375        }
1376
1377        if (unlikely(zone->recent_scanned[1] > file / 4)) {
1378                spin_lock_irq(&zone->lru_lock);
1379                zone->recent_scanned[1] /= 2;
1380                zone->recent_rotated[1] /= 2;
1381                spin_unlock_irq(&zone->lru_lock);
1382        }
1383
1384        /*
1385         * With swappiness at 100, anonymous and file have the same priority.
1386         * This scanning priority is essentially the inverse of IO cost.
1387         */
1388        anon_prio = sc->swappiness;
1389        file_prio = 200 - sc->swappiness;
1390
1391        /*
1392         * The amount of pressure on anon vs file pages is inversely
1393         * proportional to the fraction of recently scanned pages on
1394         * each list that were recently referenced and in active use.
1395         */
1396        ap = (anon_prio + 1) * (zone->recent_scanned[0] + 1);
1397        ap /= zone->recent_rotated[0] + 1;
1398
1399        fp = (file_prio + 1) * (zone->recent_scanned[1] + 1);
1400        fp /= zone->recent_rotated[1] + 1;
1401
1402        /* Normalize to percentages */
1403        percent[0] = 100 * ap / (ap + fp + 1);
1404        percent[1] = 100 - percent[0];
1405}
1406
1407
1408/*
1409 * This is a basic per-zone page freer.  Used by both kswapd and direct reclaim.
1410 */
1411static unsigned long shrink_zone(int priority, struct zone *zone,
1412                                struct scan_control *sc)
1413{
1414        unsigned long nr[NR_LRU_LISTS];
1415        unsigned long nr_to_scan;
1416        unsigned long nr_reclaimed = 0;
1417        unsigned long percent[2];        /* anon @ 0; file @ 1 */
1418        enum lru_list l;
1419
1420        get_scan_ratio(zone, sc, percent);
1421
1422        for_each_evictable_lru(l) {
1423                if (scan_global_lru(sc)) {
1424                        int file = is_file_lru(l);
1425                        int scan;
1426
1427                        scan = zone_page_state(zone, NR_LRU_BASE + l);
1428                        if (priority) {
1429                                scan >>= priority;
1430                                scan = (scan * percent[file]) / 100;
1431                        }
1432                        zone->lru[l].nr_scan += scan;
1433                        nr[l] = zone->lru[l].nr_scan;
1434                        if (nr[l] >= sc->swap_cluster_max)
1435                                zone->lru[l].nr_scan = 0;
1436                        else
1437                                nr[l] = 0;
1438                } else {
1439                        /*
1440                         * This reclaim occurs not because zone memory shortage
1441                         * but because memory controller hits its limit.
1442                         * Don't modify zone reclaim related data.
1443                         */
1444                        nr[l] = mem_cgroup_calc_reclaim(sc->mem_cgroup, zone,
1445                                                                priority, l);
1446                }
1447        }
1448
1449        while (nr[LRU_INACTIVE_ANON] || nr[LRU_ACTIVE_FILE] ||
1450                                        nr[LRU_INACTIVE_FILE]) {
1451                for_each_evictable_lru(l) {
1452                        if (nr[l]) {
1453                                nr_to_scan = min(nr[l],
1454                                        (unsigned long)sc->swap_cluster_max);
1455                                nr[l] -= nr_to_scan;
1456
1457                                nr_reclaimed += shrink_list(l, nr_to_scan,
1458                                                        zone, sc, priority);
1459                        }
1460                }
1461        }
1462
1463        /*
1464         * Even if we did not try to evict anon pages at all, we want to
1465         * rebalance the anon lru active/inactive ratio.
1466         */
1467        if (!scan_global_lru(sc) || inactive_anon_is_low(zone))
1468                shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0);
1469        else if (!scan_global_lru(sc))
1470                shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0);
1471
1472        throttle_vm_writeout(sc->gfp_mask);
1473        return nr_reclaimed;
1474}
1475
1476/*
1477 * This is the direct reclaim path, for page-allocating processes.  We only
1478 * try to reclaim pages from zones which will satisfy the caller's allocation
1479 * request.
1480 *
1481 * We reclaim from a zone even if that zone is over pages_high.  Because:
1482 * a) The caller may be trying to free *extra* pages to satisfy a higher-order
1483 *    allocation or
1484 * b) The zones may be over pages_high but they must go *over* pages_high to
1485 *    satisfy the `incremental min' zone defense algorithm.
1486 *
1487 * Returns the number of reclaimed pages.
1488 *
1489 * If a zone is deemed to be full of pinned pages then just give it a light
1490 * scan then give up on it.
1491 */
1492static unsigned long shrink_zones(int priority, struct zonelist *zonelist,
1493                                        struct scan_control *sc)
1494{
1495        enum zone_type high_zoneidx = gfp_zone(sc->gfp_mask);
1496        unsigned long nr_reclaimed = 0;
1497        struct zoneref *z;
1498        struct zone *zone;
1499
1500        sc->all_unreclaimable = 1;
1501        for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
1502                if (!populated_zone(zone))
1503                        continue;
1504                /*
1505                 * Take care memory controller reclaiming has small influence
1506                 * to global LRU.
1507                 */
1508                if (scan_global_lru(sc)) {
1509                        if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
1510                                continue;
1511                        note_zone_scanning_priority(zone, priority);
1512
1513                        if (zone_is_all_unreclaimable(zone) &&
1514                                                priority != DEF_PRIORITY)
1515                                continue;        /* Let kswapd poll it */
1516                        sc->all_unreclaimable = 0;
1517                } else {
1518                        /*
1519                         * Ignore cpuset limitation here. We just want to reduce
1520                         * # of used pages by us regardless of memory shortage.
1521                         */
1522                        sc->all_unreclaimable = 0;
1523                        mem_cgroup_note_reclaim_priority(sc->mem_cgroup,
1524                                                        priority);
1525                }
1526
1527                nr_reclaimed += shrink_zone(priority, zone, sc);
1528        }
1529
1530        return nr_reclaimed;
1531}
1532
1533/*
1534 * This is the main entry point to direct page reclaim.
1535 *
1536 * If a full scan of the inactive list fails to free enough memory then we
1537 * are "out of memory" and something needs to be killed.
1538 *
1539 * If the caller is !__GFP_FS then the probability of a failure is reasonably
1540 * high - the zone may be full of dirty or under-writeback pages, which this
1541 * caller can't do much about.  We kick pdflush and take explicit naps in the
1542 * hope that some of these pages can be written.  But if the allocating task
1543 * holds filesystem locks which prevent writeout this might not work, and the
1544 * allocation attempt will fail.
1545 *
1546 * returns:        0, if no pages reclaimed
1547 *                 else, the number of pages reclaimed
1548 */
1549static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
1550                                        struct scan_control *sc)
1551{
1552        int priority;
1553        unsigned long ret = 0;
1554        unsigned long total_scanned = 0;
1555        unsigned long nr_reclaimed = 0;
1556        struct reclaim_state *reclaim_state = current->reclaim_state;
1557        unsigned long lru_pages = 0;
1558        struct zoneref *z;
1559        struct zone *zone;
1560        enum zone_type high_zoneidx = gfp_zone(sc->gfp_mask);
1561
1562        delayacct_freepages_start();
1563
1564        if (scan_global_lru(sc))
1565                count_vm_event(ALLOCSTALL);
1566        /*
1567         * mem_cgroup will not do shrink_slab.
1568         */
1569        if (scan_global_lru(sc)) {
1570                for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
1571
1572                        if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
1573                                continue;
1574
1575                        lru_pages += zone_lru_pages(zone);
1576                }
1577        }
1578
1579        for (priority = DEF_PRIORITY; priority >= 0; priority--) {
1580                sc->nr_scanned = 0;
1581                if (!priority)
1582                        disable_swap_token();
1583                nr_reclaimed += shrink_zones(priority, zonelist, sc);
1584                /*
1585                 * Don't shrink slabs when reclaiming memory from
1586                 * over limit cgroups
1587                 */
1588                if (scan_global_lru(sc)) {
1589                        shrink_slab(sc->nr_scanned, sc->gfp_mask, lru_pages);
1590                        if (reclaim_state) {
1591                                nr_reclaimed += reclaim_state->reclaimed_slab;
1592                                reclaim_state->reclaimed_slab = 0;
1593                        }
1594                }
1595                total_scanned += sc->nr_scanned;
1596                if (nr_reclaimed >= sc->swap_cluster_max) {
1597                        ret = nr_reclaimed;
1598                        goto out;
1599                }
1600
1601                /*
1602                 * Try to write back as many pages as we just scanned.  This
1603                 * tends to cause slow streaming writers to write data to the
1604                 * disk smoothly, at the dirtying rate, which is nice.   But
1605                 * that's undesirable in laptop mode, where we *want* lumpy
1606                 * writeout.  So in laptop mode, write out the whole world.
1607                 */
1608                if (total_scanned > sc->swap_cluster_max +
1609                                        sc->swap_cluster_max / 2) {
1610                        wakeup_pdflush(laptop_mode ? 0 : total_scanned);
1611                        sc->may_writepage = 1;
1612                }
1613
1614                /* Take a nap, wait for some writeback to complete */
1615                if (sc->nr_scanned && priority < DEF_PRIORITY - 2)
1616                        congestion_wait(WRITE, HZ/10);
1617        }
1618        /* top priority shrink_zones still had more to do? don't OOM, then */
1619        if (!sc->all_unreclaimable && scan_global_lru(sc))
1620                ret = nr_reclaimed;
1621out:
1622        /*
1623         * Now that we've scanned all the zones at this priority level, note
1624         * that level within the zone so that the next thread which performs
1625         * scanning of this zone will immediately start out at this priority
1626         * level.  This affects only the decision whether or not to bring
1627         * mapped pages onto the inactive list.
1628         */
1629        if (priority < 0)
1630                priority = 0;
1631
1632        if (scan_global_lru(sc)) {
1633                for_each_zone_zonelist(zone, z, zonelist, high_zoneidx) {
1634
1635                        if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
1636                                continue;
1637
1638                        zone->prev_priority = priority;
1639                }
1640        } else
1641                mem_cgroup_record_reclaim_priority(sc->mem_cgroup, priority);
1642
1643        delayacct_freepages_end();
1644
1645        return ret;
1646}
1647
1648unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
1649                                                                gfp_t gfp_mask)
1650{
1651        struct scan_control sc = {
1652                .gfp_mask = gfp_mask,
1653                .may_writepage = !laptop_mode,
1654                .swap_cluster_max = SWAP_CLUSTER_MAX,
1655                .may_swap = 1,
1656                .swappiness = vm_swappiness,
1657                .order = order,
1658                .mem_cgroup = NULL,
1659                .isolate_pages = isolate_pages_global,
1660        };
1661
1662        return do_try_to_free_pages(zonelist, &sc);
1663}
1664
1665#ifdef CONFIG_CGROUP_MEM_RES_CTLR
1666
1667unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
1668                                                gfp_t gfp_mask)
1669{
1670        struct scan_control sc = {
1671                .may_writepage = !laptop_mode,
1672                .may_swap = 1,
1673                .swap_cluster_max = SWAP_CLUSTER_MAX,
1674                .swappiness = vm_swappiness,
1675                .order = 0,
1676                .mem_cgroup = mem_cont,
1677                .isolate_pages = mem_cgroup_isolate_pages,
1678        };
1679        struct zonelist *zonelist;
1680
1681        sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
1682                        (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK);
1683        zonelist = NODE_DATA(numa_node_id())->node_zonelists;
1684        return do_try_to_free_pages(zonelist, &sc);
1685}
1686#endif
1687
1688/*
1689 * For kswapd, balance_pgdat() will work across all this node's zones until
1690 * they are all at pages_high.
1691 *
1692 * Returns the number of pages which were actually freed.
1693 *
1694 * There is special handling here for zones which are full of pinned pages.
1695 * This can happen if the pages are all mlocked, or if they are all used by
1696 * device drivers (say, ZONE_DMA).  Or if they are all in use by hugetlb.
1697 * What we do is to detect the case where all pages in the zone have been
1698 * scanned twice and there has been zero successful reclaim.  Mark the zone as
1699 * dead and from now on, only perform a short scan.  Basically we're polling
1700 * the zone for when the problem goes away.
1701 *
1702 * kswapd scans the zones in the highmem->normal->dma direction.  It skips
1703 * zones which have free_pages > pages_high, but once a zone is found to have
1704 * free_pages <= pages_high, we scan that zone and the lower zones regardless
1705 * of the number of free pages in the lower zones.  This interoperates with
1706 * the page allocator fallback scheme to ensure that aging of pages is balanced
1707 * across the zones.
1708 */
1709static unsigned long balance_pgdat(pg_data_t *pgdat, int order)
1710{
1711        int all_zones_ok;
1712        int priority;
1713        int i;
1714        unsigned long total_scanned;
1715        unsigned long nr_reclaimed;
1716        struct reclaim_state *reclaim_state = current->reclaim_state;
1717        struct scan_control sc = {
1718                .gfp_mask = GFP_KERNEL,
1719                .may_swap = 1,
1720                .swap_cluster_max = SWAP_CLUSTER_MAX,
1721                .swappiness = vm_swappiness,
1722                .order = order,
1723                .mem_cgroup = NULL,
1724                .isolate_pages = isolate_pages_global,
1725        };
1726        /*
1727         * temp_priority is used to remember the scanning priority at which
1728         * this zone was successfully refilled to free_pages == pages_high.
1729         */
1730        int temp_priority[MAX_NR_ZONES];
1731
1732loop_again:
1733        total_scanned = 0;
1734        nr_reclaimed = 0;
1735        sc.may_writepage = !laptop_mode;
1736        count_vm_event(PAGEOUTRUN);
1737
1738        for (i = 0; i < pgdat->nr_zones; i++)
1739                temp_priority[i] = DEF_PRIORITY;
1740
1741        for (priority = DEF_PRIORITY; priority >= 0; priority--) {
1742                int end_zone = 0;        /* Inclusive.  0 = ZONE_DMA */
1743                unsigned long lru_pages = 0;
1744
1745                /* The swap token gets in the way of swapout... */
1746                if (!priority)
1747                        disable_swap_token();
1748
1749                all_zones_ok = 1;
1750
1751                /*
1752                 * Scan in the highmem->dma direction for the highest
1753                 * zone which needs scanning
1754                 */
1755                for (i = pgdat->nr_zones - 1; i >= 0; i--) {
1756                        struct zone *zone = pgdat->node_zones + i;
1757
1758                        if (!populated_zone(zone))
1759                                continue;
1760
1761                        if (zone_is_all_unreclaimable(zone) &&
1762                            priority != DEF_PRIORITY)
1763                                continue;
1764
1765                        /*
1766                         * Do some background aging of the anon list, to give
1767                         * pages a chance to be referenced before reclaiming.
1768                         */
1769                        if (inactive_anon_is_low(zone))
1770                                shrink_active_list(SWAP_CLUSTER_MAX, zone,
1771                                                        &sc, priority, 0);
1772
1773                        if (!zone_watermark_ok(zone, order, zone->pages_high,
1774                                               0, 0)) {
1775                                end_zone = i;
1776                                break;
1777                        }
1778                }
1779                if (i < 0)
1780                        goto out;
1781
1782                for (i = 0; i <= end_zone; i++) {
1783                        struct zone *zone = pgdat->node_zones + i;
1784
1785                        lru_pages += zone_lru_pages(zone);
1786                }
1787
1788                /*
1789                 * Now scan the zone in the dma->highmem direction, stopping
1790                 * at the last zone which needs scanning.
1791                 *
1792                 * We do this because the page allocator works in the opposite
1793                 * direction.  This prevents the page allocator from allocating
1794                 * pages behind kswapd's direction of progress, which would
1795                 * cause too much scanning of the lower zones.
1796                 */
1797                for (i = 0; i <= end_zone; i++) {
1798                        struct zone *zone = pgdat->node_zones + i;
1799                        int nr_slab;
1800
1801                        if (!populated_zone(zone))
1802                                continue;
1803
1804                        if (zone_is_all_unreclaimable(zone) &&
1805                                        priority != DEF_PRIORITY)
1806                                continue;
1807
1808                        if (!zone_watermark_ok(zone, order, zone->pages_high,
1809                                               end_zone, 0))
1810                                all_zones_ok = 0;
1811                        temp_priority[i] = priority;
1812                        sc.nr_scanned = 0;
1813                        note_zone_scanning_priority(zone, priority);
1814                        /*
1815                         * We put equal pressure on every zone, unless one
1816                         * zone has way too many pages free already.
1817                         */
1818                        if (!zone_watermark_ok(zone, order, 8*zone->pages_high,
1819                                                end_zone, 0))
1820                                nr_reclaimed += shrink_zone(priority, zone, &sc);
1821                        reclaim_state->reclaimed_slab = 0;
1822                        nr_slab = shrink_slab(sc.nr_scanned, GFP_KERNEL,
1823                                                lru_pages);
1824                        nr_reclaimed += reclaim_state->reclaimed_slab;
1825                        total_scanned += sc.nr_scanned;
1826                        if (zone_is_all_unreclaimable(zone))
1827                                continue;
1828                        if (nr_slab == 0 && zone->pages_scanned >=
1829                                                (zone_lru_pages(zone) * 6))
1830                                        zone_set_flag(zone,
1831                                                      ZONE_ALL_UNRECLAIMABLE);
1832                        /*
1833                         * If we've done a decent amount of scanning and
1834                         * the reclaim ratio is low, start doing writepage
1835                         * even in laptop mode
1836                         */
1837                        if (total_scanned > SWAP_CLUSTER_MAX * 2 &&
1838                            total_scanned > nr_reclaimed + nr_reclaimed / 2)
1839                                sc.may_writepage = 1;
1840                }
1841                if (all_zones_ok)
1842                        break;                /* kswapd: all done */
1843                /*
1844                 * OK, kswapd is getting into trouble.  Take a nap, then take
1845                 * another pass across the zones.
1846                 */
1847                if (total_scanned && priority < DEF_PRIORITY - 2)
1848                        congestion_wait(WRITE, HZ/10);
1849
1850                /*
1851                 * We do this so kswapd doesn't build up large priorities for
1852                 * example when it is freeing in parallel with allocators. It
1853                 * matches the direct reclaim path behaviour in terms of impact
1854                 * on zone->*_priority.
1855                 */
1856                if (nr_reclaimed >= SWAP_CLUSTER_MAX)
1857                        break;
1858        }
1859out:
1860        /*
1861         * Note within each zone the priority level at which this zone was
1862         * brought into a happy state.  So that the next thread which scans this
1863         * zone will start out at that priority level.
1864         */
1865        for (i = 0; i < pgdat->nr_zones; i++) {
1866                struct zone *zone = pgdat->node_zones + i;
1867
1868                zone->prev_priority = temp_priority[i];
1869        }
1870        if (!all_zones_ok) {
1871                cond_resched();
1872
1873                try_to_freeze();
1874
1875                goto loop_again;
1876        }
1877
1878        return nr_reclaimed;
1879}
1880
1881/*
1882 * The background pageout daemon, started as a kernel thread
1883 * from the init process.
1884 *
1885 * This basically trickles out pages so that we have _some_
1886 * free memory available even if there is no other activity
1887 * that frees anything up. This is needed for things like routing
1888 * etc, where we otherwise might have all activity going on in
1889 * asynchronous contexts that cannot page things out.
1890 *
1891 * If there are applications that are active memory-allocators
1892 * (most normal use), this basically shouldn't matter.
1893 */
1894static int kswapd(void *p)
1895{
1896        unsigned long order;
1897        pg_data_t *pgdat = (pg_data_t*)p;
1898        struct task_struct *tsk = current;
1899        DEFINE_WAIT(wait);
1900        struct reclaim_state reclaim_state = {
1901                .reclaimed_slab = 0,
1902        };
1903        node_to_cpumask_ptr(cpumask, pgdat->node_id);
1904
1905        if (!cpus_empty(*cpumask))
1906                set_cpus_allowed_ptr(tsk, cpumask);
1907        current->reclaim_state = &reclaim_state;
1908
1909        /*
1910         * Tell the memory management that we're a "memory allocator",
1911         * and that if we need more memory we should get access to it
1912         * regardless (see "__alloc_pages()"). "kswapd" should
1913         * never get caught in the normal page freeing logic.
1914         *
1915         * (Kswapd normally doesn't need memory anyway, but sometimes
1916         * you need a small amount of memory in order to be able to
1917         * page out something else, and this flag essentially protects
1918         * us from recursively trying to free more memory as we're
1919         * trying to free the first piece of memory in the first place).
1920         */
1921        tsk->flags |= PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD;
1922        set_freezable();
1923
1924        order = 0;
1925        for ( ; ; ) {
1926                unsigned long new_order;
1927
1928                prepare_to_wait(&pgdat->kswapd_wait, &wait, TASK_INTERRUPTIBLE);
1929                new_order = pgdat->kswapd_max_order;
1930                pgdat->kswapd_max_order = 0;
1931                if (order < new_order) {
1932                        /*
1933                         * Don't sleep if someone wants a larger 'order'
1934                         * allocation
1935                         */
1936                        order = new_order;
1937                } else {
1938                        if (!freezing(current))
1939                                schedule();
1940
1941                        order = pgdat->kswapd_max_order;
1942                }
1943                finish_wait(&pgdat->kswapd_wait, &wait);
1944
1945                if (!try_to_freeze()) {
1946                        /* We can speed up thawing tasks if we don't call
1947                         * balance_pgdat after returning from the refrigerator
1948                         */
1949                        balance_pgdat(pgdat, order);
1950                }
1951        }
1952        return 0;
1953}
1954
1955/*
1956 * A zone is low on free memory, so wake its kswapd task to service it.
1957 */
1958void wakeup_kswapd(struct zone *zone, int order)
1959{
1960        pg_data_t *pgdat;
1961
1962        if (!populated_zone(zone))
1963                return;
1964
1965        pgdat = zone->zone_pgdat;
1966        if (zone_watermark_ok(zone, order, zone->pages_low, 0, 0))
1967                return;
1968        if (pgdat->kswapd_max_order < order)
1969                pgdat->kswapd_max_order = order;
1970        if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
1971                return;
1972        if (!waitqueue_active(&pgdat->kswapd_wait))
1973                return;
1974        wake_up_interruptible(&pgdat->kswapd_wait);
1975}
1976
1977unsigned long global_lru_pages(void)
1978{
1979        return global_page_state(NR_ACTIVE_ANON)
1980                + global_page_state(NR_ACTIVE_FILE)
1981                + global_page_state(NR_INACTIVE_ANON)
1982                + global_page_state(NR_INACTIVE_FILE);
1983}
1984
1985#ifdef CONFIG_PM
1986/*
1987 * Helper function for shrink_all_memory().  Tries to reclaim 'nr_pages' pages
1988 * from LRU lists system-wide, for given pass and priority, and returns the
1989 * number of reclaimed pages
1990 *
1991 * For pass > 3 we also try to shrink the LRU lists that contain a few pages
1992 */
1993static unsigned long shrink_all_zones(unsigned long nr_pages, int prio,
1994                                      int pass, struct scan_control *sc)
1995{
1996        struct zone *zone;
1997        unsigned long nr_to_scan, ret = 0;
1998        enum lru_list l;
1999
2000        for_each_zone(zone) {
2001
2002                if (!populated_zone(zone))
2003                        continue;
2004
2005                if (zone_is_all_unreclaimable(zone) && prio != DEF_PRIORITY)
2006                        continue;
2007
2008                for_each_evictable_lru(l) {
2009                        /* For pass = 0, we don't shrink the active list */
2010                        if (pass == 0 &&
2011                                (l == LRU_ACTIVE || l == LRU_ACTIVE_FILE))
2012                                continue;
2013
2014                        zone->lru[l].nr_scan +=
2015                                (zone_page_state(zone, NR_LRU_BASE + l)
2016                                                                >> prio) + 1;
2017                        if (zone->lru[l].nr_scan >= nr_pages || pass > 3) {
2018                                zone->lru[l].nr_scan = 0;
2019                                nr_to_scan = min(nr_pages,
2020                                        zone_page_state(zone,
2021                                                        NR_LRU_BASE + l));
2022                                ret += shrink_list(l, nr_to_scan, zone,
2023                                                                sc, prio);
2024                                if (ret >= nr_pages)
2025                                        return ret;
2026                        }
2027                }
2028        }
2029
2030        return ret;
2031}
2032
2033/*
2034 * Try to free `nr_pages' of memory, system-wide, and return the number of
2035 * freed pages.
2036 *
2037 * Rather than trying to age LRUs the aim is to preserve the overall
2038 * LRU order by reclaiming preferentially
2039 * inactive > active > active referenced > active mapped
2040 */
2041unsigned long shrink_all_memory(unsigned long nr_pages)
2042{
2043        unsigned long lru_pages, nr_slab;
2044        unsigned long ret = 0;
2045        int pass;
2046        struct reclaim_state reclaim_state;
2047        struct scan_control sc = {
2048                .gfp_mask = GFP_KERNEL,
2049                .may_swap = 0,
2050                .swap_cluster_max = nr_pages,
2051                .may_writepage = 1,
2052                .swappiness = vm_swappiness,
2053                .isolate_pages = isolate_pages_global,
2054        };
2055
2056        current->reclaim_state = &reclaim_state;
2057
2058        lru_pages = global_lru_pages();
2059        nr_slab = global_page_state(NR_SLAB_RECLAIMABLE);
2060        /* If slab caches are huge, it's better to hit them first */
2061        while (nr_slab >= lru_pages) {
2062                reclaim_state.reclaimed_slab = 0;
2063                shrink_slab(nr_pages, sc.gfp_mask, lru_pages);
2064                if (!reclaim_state.reclaimed_slab)
2065                        break;
2066
2067                ret += reclaim_state.reclaimed_slab;
2068                if (ret >= nr_pages)
2069                        goto out;
2070
2071                nr_slab -= reclaim_state.reclaimed_slab;
2072        }
2073
2074        /*
2075         * We try to shrink LRUs in 5 passes:
2076         * 0 = Reclaim from inactive_list only
2077         * 1 = Reclaim from active list but don't reclaim mapped
2078         * 2 = 2nd pass of type 1
2079         * 3 = Reclaim mapped (normal reclaim)
2080         * 4 = 2nd pass of type 3
2081         */
2082        for (pass = 0; pass < 5; pass++) {
2083                int prio;
2084
2085                /* Force reclaiming mapped pages in the passes #3 and #4 */
2086                if (pass > 2) {
2087                        sc.may_swap = 1;
2088                        sc.swappiness = 100;
2089                }
2090
2091                for (prio = DEF_PRIORITY; prio >= 0; prio--) {
2092                        unsigned long nr_to_scan = nr_pages - ret;
2093
2094                        sc.nr_scanned = 0;
2095                        ret += shrink_all_zones(nr_to_scan, prio, pass, &sc);
2096                        if (ret >= nr_pages)
2097                                goto out;
2098
2099                        reclaim_state.reclaimed_slab = 0;
2100                        shrink_slab(sc.nr_scanned, sc.gfp_mask,
2101                                        global_lru_pages());
2102                        ret += reclaim_state.reclaimed_slab;
2103                        if (ret >= nr_pages)
2104                                goto out;
2105
2106                        if (sc.nr_scanned && prio < DEF_PRIORITY - 2)
2107                                congestion_wait(WRITE, HZ / 10);
2108                }
2109        }
2110
2111        /*
2112         * If ret = 0, we could not shrink LRUs, but there may be something
2113         * in slab caches
2114         */
2115        if (!ret) {
2116                do {
2117                        reclaim_state.reclaimed_slab = 0;
2118                        shrink_slab(nr_pages, sc.gfp_mask, global_lru_pages());
2119                        ret += reclaim_state.reclaimed_slab;
2120                } while (ret < nr_pages && reclaim_state.reclaimed_slab > 0);
2121        }
2122
2123out:
2124        current->reclaim_state = NULL;
2125
2126        return ret;
2127}
2128#endif
2129
2130/* It's optimal to keep kswapds on the same CPUs as their memory, but
2131   not required for correctness.  So if the last cpu in a node goes
2132   away, we get changed to run anywhere: as the first one comes back,
2133   restore their cpu bindings. */
2134static int __devinit cpu_callback(struct notifier_block *nfb,
2135                                  unsigned long action, void *hcpu)
2136{
2137        int nid;
2138
2139        if (action == CPU_ONLINE || action == CPU_ONLINE_FROZEN) {
2140                for_each_node_state(nid, N_HIGH_MEMORY) {
2141                        pg_data_t *pgdat = NODE_DATA(nid);
2142                        node_to_cpumask_ptr(mask, pgdat->node_id);
2143
2144                        if (any_online_cpu(*mask) < nr_cpu_ids)
2145                                /* One of our CPUs online: restore mask */
2146                                set_cpus_allowed_ptr(pgdat->kswapd, mask);
2147                }
2148        }
2149        return NOTIFY_OK;
2150}
2151
2152/*
2153 * This kswapd start function will be called by init and node-hot-add.
2154 * On node-hot-add, kswapd will moved to proper cpus if cpus are hot-added.
2155 */
2156int kswapd_run(int nid)
2157{
2158        pg_data_t *pgdat = NODE_DATA(nid);
2159        int ret = 0;
2160
2161        if (pgdat->kswapd)
2162                return 0;
2163
2164        pgdat->kswapd = kthread_run(kswapd, pgdat, "kswapd%d", nid);
2165        if (IS_ERR(pgdat->kswapd)) {
2166                /* failure at boot is fatal */
2167                BUG_ON(system_state == SYSTEM_BOOTING);
2168                printk("Failed to start kswapd on node %d\n",nid);
2169                ret = -1;
2170        }
2171        return ret;
2172}
2173
2174static int __init kswapd_init(void)
2175{
2176        int nid;
2177
2178        swap_setup();
2179        for_each_node_state(nid, N_HIGH_MEMORY)
2180                 kswapd_run(nid);
2181        hotcpu_notifier(cpu_callback, 0);
2182        return 0;
2183}
2184
2185module_init(kswapd_init)
2186
2187#ifdef CONFIG_NUMA
2188/*
2189 * Zone reclaim mode
2190 *
2191 * If non-zero call zone_reclaim when the number of free pages falls below
2192 * the watermarks.
2193 */
2194int zone_reclaim_mode __read_mostly;
2195
2196#define RECLAIM_OFF 0
2197#define RECLAIM_ZONE (1<<0)        /* Run shrink_inactive_list on the zone */
2198#define RECLAIM_WRITE (1<<1)        /* Writeout pages during reclaim */
2199#define RECLAIM_SWAP (1<<2)        /* Swap pages out during reclaim */
2200
2201/*
2202 * Priority for ZONE_RECLAIM. This determines the fraction of pages
2203 * of a node considered for each zone_reclaim. 4 scans 1/16th of
2204 * a zone.
2205 */
2206#define ZONE_RECLAIM_PRIORITY 4
2207
2208/*
2209 * Percentage of pages in a zone that must be unmapped for zone_reclaim to
2210 * occur.
2211 */
2212int sysctl_min_unmapped_ratio = 1;
2213
2214/*
2215 * If the number of slab pages in a zone grows beyond this percentage then
2216 * slab reclaim needs to occur.
2217 */
2218int sysctl_min_slab_ratio = 5;
2219
2220/*
2221 * Try to free up some pages from this zone through reclaim.
2222 */
2223static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
2224{
2225        /* Minimum pages needed in order to stay on node */
2226        const unsigned long nr_pages = 1 << order;
2227        struct task_struct *p = current;
2228        struct reclaim_state reclaim_state;
2229        int priority;
2230        unsigned long nr_reclaimed = 0;
2231        struct scan_control sc = {
2232                .may_writepage = !!(zone_reclaim_mode & RECLAIM_WRITE),
2233                .may_swap = !!(zone_reclaim_mode & RECLAIM_SWAP),
2234                .swap_cluster_max = max_t(unsigned long, nr_pages,
2235                                        SWAP_CLUSTER_MAX),
2236                .gfp_mask = gfp_mask,
2237                .swappiness = vm_swappiness,
2238                .isolate_pages = isolate_pages_global,
2239        };
2240        unsigned long slab_reclaimable;
2241
2242        disable_swap_token();
2243        cond_resched();
2244        /*
2245         * We need to be able to allocate from the reserves for RECLAIM_SWAP
2246         * and we also need to be able to write out pages for RECLAIM_WRITE
2247         * and RECLAIM_SWAP.
2248         */
2249        p->flags |= PF_MEMALLOC | PF_SWAPWRITE;
2250        reclaim_state.reclaimed_slab = 0;
2251        p->reclaim_state = &reclaim_state;
2252
2253        if (zone_page_state(zone, NR_FILE_PAGES) -
2254                zone_page_state(zone, NR_FILE_MAPPED) >
2255                zone->min_unmapped_pages) {
2256                /*
2257                 * Free memory by calling shrink zone with increasing
2258                 * priorities until we have enough memory freed.
2259                 */
2260                priority = ZONE_RECLAIM_PRIORITY;
2261                do {
2262                        note_zone_scanning_priority(zone, priority);
2263                        nr_reclaimed += shrink_zone(priority, zone, &sc);
2264                        priority--;
2265                } while (priority >= 0 && nr_reclaimed < nr_pages);
2266        }
2267
2268        slab_reclaimable = zone_page_state(zone, NR_SLAB_RECLAIMABLE);
2269        if (slab_reclaimable > zone->min_slab_pages) {
2270                /*
2271                 * shrink_slab() does not currently allow us to determine how
2272                 * many pages were freed in this zone. So we take the current
2273                 * number of slab pages and shake the slab until it is reduced
2274                 * by the same nr_pages that we used for reclaiming unmapped
2275                 * pages.
2276                 *
2277                 * Note that shrink_slab will free memory on all zones and may
2278                 * take a long time.
2279                 */
2280                while (shrink_slab(sc.nr_scanned, gfp_mask, order) &&
2281                        zone_page_state(zone, NR_SLAB_RECLAIMABLE) >
2282                                slab_reclaimable - nr_pages)
2283                        ;
2284
2285                /*
2286                 * Update nr_reclaimed by the number of slab pages we
2287                 * reclaimed from this zone.
2288                 */
2289                nr_reclaimed += slab_reclaimable -
2290                        zone_page_state(zone, NR_SLAB_RECLAIMABLE);
2291        }
2292
2293        p->reclaim_state = NULL;
2294        current->flags &= ~(PF_MEMALLOC | PF_SWAPWRITE);
2295        return nr_reclaimed >= nr_pages;
2296}
2297
2298int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
2299{
2300        int node_id;
2301        int ret;
2302
2303        /*
2304         * Zone reclaim reclaims unmapped file backed pages and
2305         * slab pages if we are over the defined limits.
2306         *
2307         * A small portion of unmapped file backed pages is needed for
2308         * file I/O otherwise pages read by file I/O will be immediately
2309         * thrown out if the zone is overallocated. So we do not reclaim
2310         * if less than a specified percentage of the zone is used by
2311         * unmapped file backed pages.
2312         */
2313        if (zone_page_state(zone, NR_FILE_PAGES) -
2314            zone_page_state(zone, NR_FILE_MAPPED) <= zone->min_unmapped_pages
2315            && zone_page_state(zone, NR_SLAB_RECLAIMABLE)
2316                        <= zone->min_slab_pages)
2317                return 0;
2318
2319        if (zone_is_all_unreclaimable(zone))
2320                return 0;
2321
2322        /*
2323         * Do not scan if the allocation should not be delayed.
2324         */
2325        if (!(gfp_mask & __GFP_WAIT) || (current->flags & PF_MEMALLOC))
2326                        return 0;
2327
2328        /*
2329         * Only run zone reclaim on the local zone or on zones that do not
2330         * have associated processors. This will favor the local processor
2331         * over remote processors and spread off node memory allocations
2332         * as wide as possible.
2333         */
2334        node_id = zone_to_nid(zone);
2335        if (node_state(node_id, N_CPU) && node_id != numa_node_id())
2336                return 0;
2337
2338        if (zone_test_and_set_flag(zone, ZONE_RECLAIM_LOCKED))
2339                return 0;
2340        ret = __zone_reclaim(zone, gfp_mask, order);
2341        zone_clear_flag(zone, ZONE_RECLAIM_LOCKED);
2342
2343        return ret;
2344}
2345#endif
2346
2347#ifdef CONFIG_UNEVICTABLE_LRU
2348/*
2349 * page_evictable - test whether a page is evictable
2350 * @page: the page to test
2351 * @vma: the VMA in which the page is or will be mapped, may be NULL
2352 *
2353 * Test whether page is evictable--i.e., should be placed on active/inactive
2354 * lists vs unevictable list.  The vma argument is !NULL when called from the
2355 * fault path to determine how to instantate a new page.
2356 *
2357 * Reasons page might not be evictable:
2358 * (1) page's mapping marked unevictable
2359 * (2) page is part of an mlocked VMA
2360 *
2361 */
2362int page_evictable(struct page *page, struct vm_area_struct *vma)
2363{
2364
2365        if (mapping_unevictable(page_mapping(page)))
2366                return 0;
2367
2368        if (PageMlocked(page) || (vma && is_mlocked_vma(vma, page)))
2369                return 0;
2370
2371        return 1;
2372}
2373
2374/**
2375 * check_move_unevictable_page - check page for evictability and move to appropriate zone lru list
2376 * @page: page to check evictability and move to appropriate lru list
2377 * @zone: zone page is in
2378 *
2379 * Checks a page for evictability and moves the page to the appropriate
2380 * zone lru list.
2381 *
2382 * Restrictions: zone->lru_lock must be held, page must be on LRU and must
2383 * have PageUnevictable set.
2384 */
2385static void check_move_unevictable_page(struct page *page, struct zone *zone)
2386{
2387        VM_BUG_ON(PageActive(page));
2388
2389retry:
2390        ClearPageUnevictable(page);
2391        if (page_evictable(page, NULL)) {
2392                enum lru_list l = LRU_INACTIVE_ANON + page_is_file_cache(page);
2393
2394                __dec_zone_state(zone, NR_UNEVICTABLE);
2395                list_move(&page->lru, &zone->lru[l].list);
2396                __inc_zone_state(zone, NR_INACTIVE_ANON + l);
2397                __count_vm_event(UNEVICTABLE_PGRESCUED);
2398        } else {
2399                /*
2400                 * rotate unevictable list
2401                 */
2402                SetPageUnevictable(page);
2403                list_move(&page->lru, &zone->lru[LRU_UNEVICTABLE].list);
2404                if (page_evictable(page, NULL))
2405                        goto retry;
2406        }
2407}
2408
2409/**
2410 * scan_mapping_unevictable_pages - scan an address space for evictable pages
2411 * @mapping: struct address_space to scan for evictable pages
2412 *
2413 * Scan all pages in mapping.  Check unevictable pages for
2414 * evictability and move them to the appropriate zone lru list.
2415 */
2416void scan_mapping_unevictable_pages(struct address_space *mapping)
2417{
2418        pgoff_t next = 0;
2419        pgoff_t end   = (i_size_read(mapping->host) + PAGE_CACHE_SIZE - 1) >>
2420                         PAGE_CACHE_SHIFT;
2421        struct zone *zone;
2422        struct pagevec pvec;
2423
2424        if (mapping->nrpages == 0)
2425                return;
2426
2427        pagevec_init(&pvec, 0);
2428        while (next < end &&
2429                pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)) {
2430                int i;
2431                int pg_scanned = 0;
2432
2433                zone = NULL;
2434
2435                for (i = 0; i < pagevec_count(&pvec); i++) {
2436                        struct page *page = pvec.pages[i];
2437                        pgoff_t page_index = page->index;
2438                        struct zone *pagezone = page_zone(page);
2439
2440                        pg_scanned++;
2441                        if (page_index > next)
2442                                next = page_index;
2443                        next++;
2444
2445                        if (pagezone != zone) {
2446                                if (zone)
2447                                        spin_unlock_irq(&zone->lru_lock);
2448                                zone = pagezone;
2449                                spin_lock_irq(&zone->lru_lock);
2450                        }
2451
2452                        if (PageLRU(page) && PageUnevictable(page))
2453                                check_move_unevictable_page(page, zone);
2454                }
2455                if (zone)
2456                        spin_unlock_irq(&zone->lru_lock);
2457                pagevec_release(&pvec);
2458
2459                count_vm_events(UNEVICTABLE_PGSCANNED, pg_scanned);
2460        }
2461
2462}
2463
2464/**
2465 * scan_zone_unevictable_pages - check unevictable list for evictable pages
2466 * @zone - zone of which to scan the unevictable list
2467 *
2468 * Scan @zone's unevictable LRU lists to check for pages that have become
2469 * evictable.  Move those that have to @zone's inactive list where they
2470 * become candidates for reclaim, unless shrink_inactive_zone() decides
2471 * to reactivate them.  Pages that are still unevictable are rotated
2472 * back onto @zone's unevictable list.
2473 */
2474#define SCAN_UNEVICTABLE_BATCH_SIZE 16UL /* arbitrary lock hold batch size */
2475void scan_zone_unevictable_pages(struct zone *zone)
2476{
2477        struct list_head *l_unevictable = &zone->lru[LRU_UNEVICTABLE].list;
2478        unsigned long scan;
2479        unsigned long nr_to_scan = zone_page_state(zone, NR_UNEVICTABLE);
2480
2481        while (nr_to_scan > 0) {
2482                unsigned long batch_size = min(nr_to_scan,
2483                                                SCAN_UNEVICTABLE_BATCH_SIZE);
2484
2485                spin_lock_irq(&zone->lru_lock);
2486                for (scan = 0;  scan < batch_size; scan++) {
2487                        struct page *page = lru_to_page(l_unevictable);
2488
2489                        if (!trylock_page(page))
2490                                continue;
2491
2492                        prefetchw_prev_lru_page(page, l_unevictable, flags);
2493
2494                        if (likely(PageLRU(page) && PageUnevictable(page)))
2495                                check_move_unevictable_page(page, zone);
2496
2497                        unlock_page(page);
2498                }
2499                spin_unlock_irq(&zone->lru_lock);
2500
2501                nr_to_scan -= batch_size;
2502        }
2503}
2504
2505
2506/**
2507 * scan_all_zones_unevictable_pages - scan all unevictable lists for evictable pages
2508 *
2509 * A really big hammer:  scan all zones' unevictable LRU lists to check for
2510 * pages that have become evictable.  Move those back to the zones'
2511 * inactive list where they become candidates for reclaim.
2512 * This occurs when, e.g., we have unswappable pages on the unevictable lists,
2513 * and we add swap to the system.  As such, it runs in the context of a task
2514 * that has possibly/probably made some previously unevictable pages
2515 * evictable.
2516 */
2517void scan_all_zones_unevictable_pages(void)
2518{
2519        struct zone *zone;
2520
2521        for_each_zone(zone) {
2522                scan_zone_unevictable_pages(zone);
2523        }
2524}
2525
2526/*
2527 * scan_unevictable_pages [vm] sysctl handler.  On demand re-scan of
2528 * all nodes' unevictable lists for evictable pages
2529 */
2530unsigned long scan_unevictable_pages;
2531
2532int scan_unevictable_handler(struct ctl_table *table, int write,
2533                           struct file *file, void __user *buffer,
2534                           size_t *length, loff_t *ppos)
2535{
2536        proc_doulongvec_minmax(table, write, file, buffer, length, ppos);
2537
2538        if (write && *(unsigned long *)table->data)
2539                scan_all_zones_unevictable_pages();
2540
2541        scan_unevictable_pages = 0;
2542        return 0;
2543}
2544
2545/*
2546 * per node 'scan_unevictable_pages' attribute.  On demand re-scan of
2547 * a specified node's per zone unevictable lists for evictable pages.
2548 */
2549
2550static ssize_t read_scan_unevictable_node(struct sys_device *dev,
2551                                          struct sysdev_attribute *attr,
2552                                          char *buf)
2553{
2554        return sprintf(buf, "0\n");        /* always zero; should fit... */
2555}
2556
2557static ssize_t write_scan_unevictable_node(struct sys_device *dev,
2558                                           struct sysdev_attribute *attr,
2559                                        const char *buf, size_t count)
2560{
2561        struct zone *node_zones = NODE_DATA(dev->id)->node_zones;
2562        struct zone *zone;
2563        unsigned long res;
2564        unsigned long req = strict_strtoul(buf, 10, &res);
2565
2566        if (!req)
2567                return 1;        /* zero is no-op */
2568
2569        for (zone = node_zones; zone - node_zones < MAX_NR_ZONES; ++zone) {
2570                if (!populated_zone(zone))
2571                        continue;
2572                scan_zone_unevictable_pages(zone);
2573        }
2574        return 1;
2575}
2576
2577
2578static SYSDEV_ATTR(scan_unevictable_pages, S_IRUGO | S_IWUSR,
2579                        read_scan_unevictable_node,
2580                        write_scan_unevictable_node);
2581
2582int scan_unevictable_register_node(struct node *node)
2583{
2584        return sysdev_create_file(&node->sysdev, &attr_scan_unevictable_pages);
2585}
2586
2587void scan_unevictable_unregister_node(struct node *node)
2588{
2589        sysdev_remove_file(&node->sysdev, &attr_scan_unevictable_pages);
2590}
2591
2592#endif