)]}'
{
  "log": [
    {
      "commit": "db3eb96f4e6281b84dd33c8980dacc27f2efe177",
      "tree": "0746ed213778d8cb9ec18c1c7c16490c233d178b",
      "parents": [
        "e2cda322648122dc400c85ada80eaddbc612ef6a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:40 2011 -0800"
      },
      "message": "thp: add pmd mangling functions to x86\n\nAdd needed pmd mangling functions with symmetry with their pte\ncounterparts.  pmdp_splitting_flush() is the only new addition on the pmd_\nmethods and it\u0027s needed to serialize the VM against split_huge_page.  It\nsimply atomically sets the splitting bit in a similar way\npmdp_clear_flush_young atomically clears the accessed bit.\npmdp_splitting_flush() also has to flush the tlb to make it effective\nagainst gup_fast, but it wouldn\u0027t really require to flush the tlb too.\nJust the tlb flush is the simplest operation we can invoke to serialize\npmdp_splitting_flush() against gup_fast.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2cda322648122dc400c85ada80eaddbc612ef6a",
      "tree": "016981ea6d9d3f7448bd9e04720184b14a79302c",
      "parents": [
        "5f6e8da70a289d403975907371ce5738c726ad3f"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:40 2011 -0800"
      },
      "message": "thp: add pmd mangling generic functions\n\nSome are needed to build but not actually used on archs not supporting\ntransparent hugepages.  Others like pmdp_clear_flush are used by x86 too.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5f6e8da70a289d403975907371ce5738c726ad3f",
      "tree": "c44705a17d4133a8d4a8d02dae9bb5487c3bc2a6",
      "parents": [
        "4c76d9d1fb9b21fa10c9e4c1fab2875018a88aa1"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:40 2011 -0800"
      },
      "message": "thp: special pmd_trans_* functions\n\nThese returns 0 at compile time when the config option is disabled, to\nallow gcc to eliminate the transparent hugepage function calls at compile\ntime without additional #ifdefs (only the export of those functions have\nto be visible to gcc but they won\u0027t be required at link time and\nhuge_memory.o can be not built at all).\n\n_PAGE_BIT_UNUSED1 is never used for pmd, only on pte.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c76d9d1fb9b21fa10c9e4c1fab2875018a88aa1",
      "tree": "a7186c416e3fc0451702b42051e4b91dc3893f3f",
      "parents": [
        "59ff421631295cd54dbf75dcc53d27e84af6d9c0"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:40 2011 -0800"
      },
      "message": "thp: CONFIG_TRANSPARENT_HUGEPAGE\n\nAdd config option.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59ff421631295cd54dbf75dcc53d27e84af6d9c0",
      "tree": "2570c413cd0e5938ed5e9c09d00fe026bfa63ca4",
      "parents": [
        "14fd403f2146f740942d78af4e0ee59396ad8eab"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: comment reminder in destroy_compound_page\n\nWarn destroy_compound_page that __split_huge_page_refcount is heavily\ndependent on its internal behavior.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14fd403f2146f740942d78af4e0ee59396ad8eab",
      "tree": "c87734f6c6639684208d36548aa3687c6f460e23",
      "parents": [
        "2609ae6d10af0531e826335bd1445d1ace17c847"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: export maybe_mkwrite\n\nhuge_memory.c needs it too when it fallbacks in copying hugepages into\nregular fragmented pages if hugepage allocation fails during COW.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2609ae6d10af0531e826335bd1445d1ace17c847",
      "tree": "a5b464ae767f2ab3d19b6731374414502dbe430c",
      "parents": [
        "331127f799d1618e2ad978a0d220ed935a7b0ca8"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: no paravirt version of pmd ops\n\nNo paravirt version of set_pmd_at/pmd_update/pmd_update_defer.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "331127f799d1618e2ad978a0d220ed935a7b0ca8",
      "tree": "8a5d8a647939d13bdbba09379dca08fc9997cd95",
      "parents": [
        "0a47de52db04c5eb346e99a8d038e693689bedca"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:36 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: add pmd paravirt ops\n\nParavirt ops pmd_update/pmd_update_defer/pmd_set_at.  Not all might be\nnecessary (vmware needs pmd_update, Xen needs set_pmd_at, nobody needs\npmd_update_defer), but this is to keep full simmetry with pte paravirt\nops, which looks cleaner and simpler from a common code POV.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0a47de52db04c5eb346e99a8d038e693689bedca",
      "tree": "e1082844deb4406e59e724b0fd3ccbf6240386c1",
      "parents": [
        "8dd60a3a65c1b057bf0031d28436d3447a3c545b"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:35 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: add native_set_pmd_at\n\nUsed by paravirt and not paravirt set_pmd_at.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8dd60a3a65c1b057bf0031d28436d3447a3c545b",
      "tree": "19040d799dbf846191c8855450c662014ecec722",
      "parents": [
        "a5b338f2b0b1ff73ae20c66ab831201549eaec01"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: clear compound mapping\n\nClear compound mapping for anonymous compound pages like it already\nhappens for regular anonymous pages.  But crash if mapping is set for any\ntail page, also the PageAnon check is meaningless for tail pages.  This\ncheck only makes sense for the head page, for tail page it can only hide\nbugs and we definitely don\u0027t want to hide bugs.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5b338f2b0b1ff73ae20c66ab831201549eaec01",
      "tree": "a89787ea6d932d66651c4621ed70f855e596d1ff",
      "parents": [
        "a95a82e96c48270980dd248ccd5546f1b49e6f8a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:34 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: update futex compound knowledge\n\nFutex code is smarter than most other gup_fast O_DIRECT code and knows\nabout the compound internals.  However now doing a put_page(head_page)\nwill not release the pin on the tail page taken by gup-fast, leading to\nall sort of refcounting bugchecks.  Getting a stable head_page is a little\ntricky.\n\npage_head \u003d page is there because if this is not a tail page it\u0027s also the\npage_head.  Only in case this is a tail page, compound_head is called,\notherwise it\u0027s guaranteed unnecessary.  And if it\u0027s a tail page\ncompound_head has to run atomically inside irq disabled section\n__get_user_pages_fast before returning.  Otherwise -\u003efirst_page won\u0027t be a\nstable pointer.\n\nDisableing irq before __get_user_page_fast and releasing irq after running\ncompound_head is needed because if __get_user_page_fast returns \u003d\u003d 1, it\nmeans the huge pmd is established and cannot go away from under us.\npmdp_splitting_flush_notify in __split_huge_page_splitting will have to\nwait for local_irq_enable before the IPI delivery can return.  This means\n__split_huge_page_refcount can\u0027t be running from under us, and in turn\nwhen we run compound_head(page) we\u0027re not reading a dangling pointer from\ntailpage-\u003efirst_page.  Then after we get to stable head page, we are\nalways safe to call compound_lock and after taking the compound lock on\nhead page we can finally re-check if the page returned by gup-fast is\nstill a tail page.  in which case we\u0027re set and we didn\u0027t need to split\nthe hugepage in order to take a futex on it.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a95a82e96c48270980dd248ccd5546f1b49e6f8a",
      "tree": "35f10c2a8d2cd0e1aa9d33f7a4f55332c0733ee6",
      "parents": [
        "9180706344487700b40da9eca5dedd3d11cb33b4"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: put_page: recheck PageHead after releasing the compound_lock\n\nAfter releasing the compound_lock split_huge_page can still run and release the\npage before put_page_testzero runs.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9180706344487700b40da9eca5dedd3d11cb33b4",
      "tree": "eb0347efe7e40adc78a271752c7382aa67875d6a",
      "parents": [
        "e9da73d67729b58bba256123e2b4651e0d8a01ac"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:39 2011 -0800"
      },
      "message": "thp: alter compound get_page/put_page\n\nAlter compound get_page/put_page to keep references on subpages too, in\norder to allow __split_huge_page_refcount to split an hugepage even while\nsubpages have been pinned by one of the get_user_pages() variants.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9da73d67729b58bba256123e2b4651e0d8a01ac",
      "tree": "5e7f8c4d394d625f7832cbd04a8d55f9f0cd0d95",
      "parents": [
        "a826e422420b461a6247137c292ff83c4800354a"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:32 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "thp: compound_lock\n\nAdd a new compound_lock() needed to serialize put_page against\n__split_huge_page_refcount().\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a826e422420b461a6247137c292ff83c4800354a",
      "tree": "803e3aeb39606e2fe58daa238c454b335aa25cbc",
      "parents": [
        "1c9bf22c09ae14d65225d9b9619b2eb357350cd7"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "thp: mm: define MADV_HUGEPAGE\n\nDefine MADV_HUGEPAGE.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c9bf22c09ae14d65225d9b9619b2eb357350cd7",
      "tree": "598adf6bb003c8194bd24f250e9f51edc767468c",
      "parents": [
        "4e9f64c42d0ba5eb0c78569435ada4c224332ce4"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:30 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "thp: transparent hugepage support documentation\n\nDocumentation/vm/transhuge.txt\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e9f64c42d0ba5eb0c78569435ada4c224332ce4",
      "tree": "71df9e94a7f400755bd9ae02ed0c183e429f91cf",
      "parents": [
        "ae52a2adb5afa5ac5ec5fb5c7b24777f84b6c926"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Thu Jan 13 15:46:29 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "thp: fix bad_page to show the real reason the page is bad\n\npage_count shows the count of the head page, but the actual check is done\non the tail page, so show what is really being checked.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae52a2adb5afa5ac5ec5fb5c7b24777f84b6c926",
      "tree": "fb02d8fb1699c85cc278e2333ce25916835bf341",
      "parents": [
        "240c879f20a605346705be24253bc9fc6fa8a106"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Thu Jan 13 15:46:28 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "thp: ksm: free swap when swapcache page is replaced\n\nWhen a swapcache page is replaced by a ksm page, it\u0027s best to free that\nswap immediately.\n\nReported-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "240c879f20a605346705be24253bc9fc6fa8a106",
      "tree": "85c38509483aa5f69d3dea5daa21412dd2e6aced",
      "parents": [
        "ecb256f815232b35ae8382cff36ca8ce0bbd077e"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Thu Jan 13 15:46:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:38 2011 -0800"
      },
      "message": "writeback: avoid unnecessary determine_dirtyable_memory call\n\nI think determine_dirtyable_memory() is a rather costly function since it\nneed many atomic reads for gathering zone/global page state.  But when we\nuse vm_dirty_bytes \u0026\u0026 dirty_background_bytes, we don\u0027t need that costly\ncalculation.\n\nThis patch eliminates such unnecessary overhead.\n\nNOTE : newly added if condition might add overhead in normal path.\n       But it should be _really_ small because anyway we need the\n       access both vm_dirty_bytes and dirty_background_bytes so it is\n       likely to hit the cache.\n\n[akpm@linux-foundation.org: fix used-uninitialised warning]\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecb256f815232b35ae8382cff36ca8ce0bbd077e",
      "tree": "4f488ba29b5bf860576a3a2e405607a9c32048bf",
      "parents": [
        "dc83edd941f412e938841b4989be24aa288a1aa6"
      ],
      "author": {
        "name": "Volodymyr G. Lukiianyk",
        "email": "volodymyrgl@gmail.com",
        "time": "Thu Jan 13 15:46:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: set correct numa_zonelist_order string when configured on the kernel command line\n\nWhen numa_zonelist_order parameter is set to \"node\" or \"zone\" on the\ncommand line it\u0027s still showing as \"default\" in sysctl.  That\u0027s because\nearly_param parsing function changes only user_zonelist_order variable.\nFix this by copying user-provided string to numa_zonelist_order if it was\nsuccessfully parsed.\n\nSigned-off-by: Volodymyr G Lukiianyk \u003cvolodymyrgl@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dc83edd941f412e938841b4989be24aa288a1aa6",
      "tree": "07dbc04d544f3200b3b13be1af6c57f44ffa63c8",
      "parents": [
        "355b09c47a0cbb73b3e65a57c03f157f2e7ddb0b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: use the classzone idx that kswapd was using for sleeping_prematurely()\n\nWhen kswapd is woken up for a high-order allocation, it takes account of\nthe highest usable zone by the caller (the classzone idx).  During\nallocation, this index is used to select the lowmem_reserve[] that should\nbe applied to the watermark calculation in zone_watermark_ok().\n\nWhen balancing a node, kswapd considers the highest unbalanced zone to be\nthe classzone index.  This will always be at least be the callers\nclasszone_idx and can be higher.  However, sleeping_prematurely() always\nconsiders the lowest zone (e.g.  ZONE_DMA) to be the classzone index.\nThis means that sleeping_prematurely() can consider a zone to be balanced\nthat is unusable by the allocation request that originally woke kswapd.\nThis patch changes sleeping_prematurely() to use a classzone_idx matching\nthe value it used in balance_pgdat().\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "355b09c47a0cbb73b3e65a57c03f157f2e7ddb0b",
      "tree": "26be6f89cac5b6f5b321cf74103444ae8775c3eb",
      "parents": [
        "4d40502ea580c35414a1466d86f96484910ebaec"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: treat zone-\u003eall_unreclaimable in sleeping_prematurely similar to balance_pgdat()\n\nAfter DEF_PRIORITY, balance_pgdat() considers all_unreclaimable zones to\nbe balanced but sleeping_prematurely does not.  This can force kswapd to\nstay awake longer than it should.  This patch fixes it.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4d40502ea580c35414a1466d86f96484910ebaec",
      "tree": "ed03d2b5a100be1c3371d304421af221fa893129",
      "parents": [
        "0abdee2bd4118366c62349a304f81537be69af33"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: reset kswapd_max_order and classzone_idx after reading\n\nWhen kswapd wakes up, it reads its order and classzone from pgdat and\ncalls balance_pgdat.  While its awake, it potentially reclaimes at a high\norder and a low classzone index.  This might have been a once-off that was\nnot required by subsequent callers.  However, because the pgdat values\nwere not reset, they remain artifically high while balance_pgdat() is\nrunning and potentially kswapd enters a second unnecessary reclaim cycle.\nReset the pgdat order and classzone index after reading.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0abdee2bd4118366c62349a304f81537be69af33",
      "tree": "c013abd2dd49b3837d033eb4d32dfb57984d273e",
      "parents": [
        "1741c87757448cedd03224f01586504f9256415d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:22 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: use the order that kswapd was reclaiming at for sleeping_prematurely()\n\nBefore kswapd goes to sleep, it uses sleeping_prematurely() to check if\nthere was a race pushing a zone below its watermark.  If the race\nhappened, it stays awake.  However, balance_pgdat() can decide to reclaim\nat order-0 if it decides that high-order reclaim is not working as\nexpected.  This information is not passed back to sleeping_prematurely().\nThe impact is that kswapd remains awake reclaiming pages long after it\nshould have gone to sleep.  This patch passes the adjusted order to\nsleeping_prematurely and uses the same logic as balance_pgdat to decide if\nit\u0027s ok to go to sleep.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1741c87757448cedd03224f01586504f9256415d",
      "tree": "e8f3bace5f0cd1652a3a2a682189b19f7b3af875",
      "parents": [
        "9950474883e027e6e728cbcff25f7f2bf0c96530"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:21 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: keep kswapd awake for high-order allocations until a percentage of the node is balanced\n\nWhen reclaiming for high-orders, kswapd is responsible for balancing a\nnode but it should not reclaim excessively.  It avoids excessive reclaim\nby considering if any zone in a node is balanced then the node is\nbalanced.  In the cases where there are imbalanced zone sizes (e.g.\nZONE_DMA with both ZONE_DMA32 and ZONE_NORMAL), kswapd can go to sleep\nprematurely as just one small zone was balanced.\n\nThis alters the sleep logic of kswapd slightly.  It counts the number of\npages that make up the balanced zones.  If the total number of balanced\npages is more than a quarter of the zone, kswapd will go back to sleep.\nThis should keep a node balanced without reclaiming an excessive number of\npages.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9950474883e027e6e728cbcff25f7f2bf0c96530",
      "tree": "ecfdd3e68a25f1ef7822428c44f8375efbe9bc0c",
      "parents": [
        "c585a2678d83ba8fb02fa6b197de0ac7d67377f1"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:37 2011 -0800"
      },
      "message": "mm: kswapd: stop high-order balancing when any suitable zone is balanced\n\nSimon Kirby reported the following problem\n\n   We\u0027re seeing cases on a number of servers where cache never fully\n   grows to use all available memory.  Sometimes we see servers with 4 GB\n   of memory that never seem to have less than 1.5 GB free, even with a\n   constantly-active VM.  In some cases, these servers also swap out while\n   this happens, even though they are constantly reading the working set\n   into memory.  We have been seeing this happening for a long time; I\n   don\u0027t think it\u0027s anything recent, and it still happens on 2.6.36.\n\nAfter some debugging work by Simon, Dave Hansen and others, the prevaling\ntheory became that kswapd is reclaiming order-3 pages requested by SLUB\ntoo aggressive about it.\n\nThere are two apparent problems here.  On the target machine, there is a\nsmall Normal zone in comparison to DMA32.  As kswapd tries to balance all\nzones, it would continually try reclaiming for Normal even though DMA32\nwas balanced enough for callers.  The second problem is that\nsleeping_prematurely() does not use the same logic as balance_pgdat() when\ndeciding whether to sleep or not.  This keeps kswapd artifically awake.\n\nA number of tests were run and the figures from previous postings will\nlook very different for a few reasons.  One, the old figures were forcing\nmy network card to use GFP_ATOMIC in attempt to replicate Simon\u0027s problem.\n Second, I previous specified slub_min_order\u003d3 again in an attempt to\nreproduce Simon\u0027s problem.  In this posting, I\u0027m depending on Simon to say\nwhether his problem is fixed or not and these figures are to show the\nimpact to the ordinary cases.  Finally, the \"vmscan\" figures are taken\nfrom /proc/vmstat instead of the tracepoints.  There is less information\nbut recording is less disruptive.\n\nThe first test of relevance was postmark with a process running in the\nbackground reading a large amount of anonymous memory in blocks.  The\nobjective was to vaguely simulate what was happening on Simon\u0027s machine\nand it\u0027s memory intensive enough to have kswapd awake.\n\nPOSTMARK\n                                            traceonly          kanyzone\nTransactions per second:              156.00 ( 0.00%)   153.00 (-1.96%)\nData megabytes read per second:        21.51 ( 0.00%)    21.52 ( 0.05%)\nData megabytes written per second:     29.28 ( 0.00%)    29.11 (-0.58%)\nFiles created alone per second:       250.00 ( 0.00%)   416.00 (39.90%)\nFiles create/transact per second:      79.00 ( 0.00%)    76.00 (-3.95%)\nFiles deleted alone per second:       520.00 ( 0.00%)   420.00 (-23.81%)\nFiles delete/transact per second:      79.00 ( 0.00%)    76.00 (-3.95%)\n\nMMTests Statistics: duration\nUser/Sys Time Running Test (seconds)         16.58      17.4\nTotal Elapsed Time (seconds)                218.48    222.47\n\nVMstat Reclaim Statistics: vmscan\nDirect reclaims                                  0          4\nDirect reclaim pages scanned                     0        203\nDirect reclaim pages reclaimed                   0        184\nKswapd pages scanned                        326631     322018\nKswapd pages reclaimed                      312632     309784\nKswapd low wmark quickly                         1          4\nKswapd high wmark quickly                      122        475\nKswapd skip congestion_wait                      1          0\nPages activated                             700040     705317\nPages deactivated                           212113     203922\nPages written                                 9875       6363\n\nTotal pages scanned                         326631    322221\nTotal pages reclaimed                       312632    309968\n%age total pages scanned/reclaimed          95.71%    96.20%\n%age total pages scanned/written             3.02%     1.97%\n\nproc vmstat: Faults\nMajor Faults                                   300       254\nMinor Faults                                645183    660284\nPage ins                                    493588    486704\nPage outs                                  4960088   4986704\nSwap ins                                      1230       661\nSwap outs                                     9869      6355\n\nPerformance is mildly affected because kswapd is no longer doing as much\nwork and the background memory consumer process is getting in the way.\nNote that kswapd scanned and reclaimed fewer pages as it\u0027s less aggressive\nand overall fewer pages were scanned and reclaimed.  Swap in/out is\nparticularly reduced again reflecting kswapd throwing out fewer pages.\n\nThe slight performance impact is unfortunate here but it looks like a\ndirect result of kswapd being less aggressive.  As the bug report is about\ntoo many pages being freed by kswapd, it may have to be accepted for now.\n\nThe second test is a streaming IO benchmark that was previously used by\nJohannes to show regressions in page reclaim.\n\nMICRO\n\t\t\t\t\t traceonly  kanyzone\nUser/Sys Time Running Test (seconds)         29.29     28.87\nTotal Elapsed Time (seconds)                492.18    488.79\n\nVMstat Reclaim Statistics: vmscan\nDirect reclaims                               2128       1460\nDirect reclaim pages scanned               2284822    1496067\nDirect reclaim pages reclaimed              148919     110937\nKswapd pages scanned                      15450014   16202876\nKswapd pages reclaimed                     8503697    8537897\nKswapd low wmark quickly                      3100       3397\nKswapd high wmark quickly                     1860       7243\nKswapd skip congestion_wait                    708        801\nPages activated                               9635       9573\nPages deactivated                             1432       1271\nPages written                                  223       1130\n\nTotal pages scanned                       17734836  17698943\nTotal pages reclaimed                      8652616   8648834\n%age total pages scanned/reclaimed          48.79%    48.87%\n%age total pages scanned/written             0.00%     0.01%\n\nproc vmstat: Faults\nMajor Faults                                   165       221\nMinor Faults                               9655785   9656506\nPage ins                                      3880      7228\nPage outs                                 37692940  37480076\nSwap ins                                         0        69\nSwap outs                                       19        15\n\nAgain fewer pages are scanned and reclaimed as expected and this time the\ntest completed faster.  Note that kswapd is hitting its watermarks faster\n(low and high wmark quickly) which I expect is due to kswapd reclaiming\nfewer pages.\n\nI also ran fs-mark, iozone and sysbench but there is nothing interesting\nto report in the figures.  Performance is not significantly changed and\nthe reclaim statistics look reasonable.\n\nTgis patch:\n\nWhen the allocator enters its slow path, kswapd is woken up to balance the\nnode.  It continues working until all zones within the node are balanced.\nFor order-0 allocations, this makes perfect sense but for higher orders it\ncan have unintended side-effects.  If the zone sizes are imbalanced,\nkswapd may reclaim heavily within a smaller zone discarding an excessive\nnumber of pages.  The user-visible behaviour is that kswapd is awake and\nreclaiming even though plenty of pages are free from a suitable zone.\n\nThis patch alters the \"balance\" logic for high-order reclaim allowing\nkswapd to stop if any suitable zone becomes balanced to reduce the number\nof pages it reclaims from other zones.  kswapd still tries to ensure that\norder-0 watermarks for all zones are met before sleeping.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Simon Kirby \u003csim@hostway.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c585a2678d83ba8fb02fa6b197de0ac7d67377f1",
      "tree": "b722f3c6fa28d1228e34adbcb85fee8683b34069",
      "parents": [
        "e20e87795834f2f14cb53baf657b91d9c39f92c8"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 13 15:46:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: remove likely() from grab_cache_page_write_begin()\n\nRunning the annotated branch profiler on a box doing average work\n(firefox, evolution, xchat, distcc farm), the likely() used in\ngrab_cache_page_write_begin() was incorrect most of the time:\n\n correct incorrect  %        Function                  File              Line\n ------- ---------  -        --------                  ----              ----\n 1924262 71332401  97 grab_cache_page_write_begin    filemap.c           2206\n\nAdding a trace_printk() and running the function tracer limited to\njust this function I can see:\n\n        gconfd-2-2696  [000]  4467.268935: grab_cache_page_write_begin: page\u003d          (null) mapping\u003dffff8800676a9460 index\u003d7\n        gconfd-2-2696  [000]  4467.268946: grab_cache_page_write_begin \u003c-ext3_write_begin\n        gconfd-2-2696  [000]  4467.268947: grab_cache_page_write_begin: page\u003d          (null) mapping\u003dffff8800676a9460 index\u003d8\n        gconfd-2-2696  [000]  4467.268959: grab_cache_page_write_begin \u003c-ext3_write_begin\n        gconfd-2-2696  [000]  4467.268960: grab_cache_page_write_begin: page\u003d          (null) mapping\u003dffff8800676a9460 index\u003d9\n        gconfd-2-2696  [000]  4467.268972: grab_cache_page_write_begin \u003c-ext3_write_begin\n        gconfd-2-2696  [000]  4467.268973: grab_cache_page_write_begin: page\u003d          (null) mapping\u003dffff8800676a9460 index\u003d10\n        gconfd-2-2696  [000]  4467.268991: grab_cache_page_write_begin \u003c-ext3_write_begin\n        gconfd-2-2696  [000]  4467.268992: grab_cache_page_write_begin: page\u003d          (null) mapping\u003dffff8800676a9460 index\u003d11\n        gconfd-2-2696  [000]  4467.269005: grab_cache_page_write_begin \u003c-ext3_write_begin\n\nWhich shows that a lot of calls from ext3_write_begin will result in the\npage returned by \"find_lock_page\" will be NULL.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e20e87795834f2f14cb53baf657b91d9c39f92c8",
      "tree": "0ec2c10b0ed4cb572c73153b56c017db536bc056",
      "parents": [
        "088e54658f559a13c2b988086512d76fe9e8f846"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 13 15:46:17 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: remove unlikely() from page_mapping()\n\npage_mapping() has a unlikely that the mapping has PAGE_MAPPING_ANON set.\nBut running the annotated branch profiler on a normal desktop system doing\nvairous tasks (xchat, evolution, firefox, distcc), it is not really that\nunlikely that the mapping here will have the PAGE_MAPPING_ANON flag set:\n\n correct incorrect  %        Function                  File              Line\n ------- ---------  -        --------                  ----              ----\n35935762 1270265395  97 page_mapping                   mm.h                 659\n1306198001   143659   0 page_mapping                   mm.h                 657\n203131478   121586   0 page_mapping                   mm.h                 657\n 5415491     1116   0 page_mapping                   mm.h                 657\n74899487     1116   0 page_mapping                   mm.h                 657\n203132845      224   0 page_mapping                   mm.h                 659\n 5415464       27   0 page_mapping                   mm.h                 659\n   13552        0   0 page_mapping                   mm.h                 657\n   13552        0   0 page_mapping                   mm.h                 659\n  242630        0   0 page_mapping                   mm.h                 657\n  242630        0   0 page_mapping                   mm.h                 659\n74899487        0   0 page_mapping                   mm.h                 659\n\nThe page_mapping() is a static inline, which is why it shows up multiple\ntimes.\n\nThe unlikely in page_mapping() was correct a total of 1909540379 times and\nincorrect 1270533123 times, with a 39% being incorrect.  With this much of\nan error, it\u0027s best to simply remove the unlikely and have the compiler\nand branch prediction figure this out.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "088e54658f559a13c2b988086512d76fe9e8f846",
      "tree": "35a5e0f82186dfa740751ec33f2fcdd90e347b0b",
      "parents": [
        "ddf9c6d472825ceda66b3adff0f6437dbcd37f71"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 13 15:46:16 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: remove likely() from mapping_unevictable()\n\nThe mapping_unevictable() has a likely() around the mapping parameter.\nThis mapping parameter comes from page_mapping() which has an unlikely()\nthat the page will be set as PAGE_MAPPING_ANON, and if so, it will return\nNULL.  One would think that this unlikely() means that the mapping\nreturned by page_mapping() would not be NULL, but where page_mapping() is\nused just above mapping_unevictable(), that unlikely() is incorrect most\nof the time.  This means that the \"likely(mapping)\" in\nmapping_unevictable() is incorrect most of the time.\n\nRunning the annotated branch profiler on my main box which runs firefox,\nevolution, xchat and is part of my distcc farm, I had this:\n\n correct incorrect  %        Function                  File              Line\n ------- ---------  -        --------                  ----              ----\n12872836 1269443893  98 mapping_unevictable            pagemap.h            51\n35935762 1270265395  97 page_mapping                   mm.h                 659\n1306198001   143659   0 page_mapping                   mm.h                 657\n203131478   121586   0 page_mapping                   mm.h                 657\n 5415491     1116   0 page_mapping                   mm.h                 657\n74899487     1116   0 page_mapping                   mm.h                 657\n203132845      224   0 page_mapping                   mm.h                 659\n 5415464       27   0 page_mapping                   mm.h                 659\n   13552        0   0 page_mapping                   mm.h                 657\n   13552        0   0 page_mapping                   mm.h                 659\n  242630        0   0 page_mapping                   mm.h                 657\n  242630        0   0 page_mapping                   mm.h                 659\n74899487        0   0 page_mapping                   mm.h                 659\n\nThe page_mapping() is a static inline, which is why it shows up multiple\ntimes.  The mapping_unevictable() is also a static inline but seems to be\nused only once in my setup.\n\nThe unlikely in page_mapping() was correct a total of 1909540379 times and\nincorrect 1270533123 times, with a 39% being incorrect.  Perhaps this is\nenough to remove the unlikely from page_mapping() as well.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ddf9c6d472825ceda66b3adff0f6437dbcd37f71",
      "tree": "a838e5535d5bad4391dcec4584d44a0e3b05858b",
      "parents": [
        "1e50df39f6e2c3a4a3394df62baa8a213df16c54"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@distanz.ch",
        "time": "Thu Jan 13 15:46:15 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "vmalloc: remove redundant unlikely()\n\nIS_ERR() already implies unlikely(), so it can be omitted here.\n\nSigned-off-by: Tobias Klauser \u003ctklauser@distanz.ch\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e50df39f6e2c3a4a3394df62baa8a213df16c54",
      "tree": "d437981aec4fc5cf84178f7afcca83f0ef40aea1",
      "parents": [
        "53a7706d5ed8f1a53ba062b318773160cc476dde"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Jan 13 15:46:14 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mempolicy: remove tasklist_lock from migrate_pages\n\nToday, tasklist_lock in migrate_pages doesn\u0027t protect anything.\nrcu_read_lock() provide enough protection from pid hash walk.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "53a7706d5ed8f1a53ba062b318773160cc476dde",
      "tree": "a1990d90d5af3686b7a83b2bbc2ae6463971efc5",
      "parents": [
        "5fdb2002131cd4e210b9638a4fc932ec7be491d1"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:14 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mlock: do not hold mmap_sem for extended periods of time\n\n__get_user_pages gets a new \u0027nonblocking\u0027 parameter to signal that the\ncaller is prepared to re-acquire mmap_sem and retry the operation if\nneeded.  This is used to split off long operations if they are going to\nblock on a disk transfer, or when we detect contention on the mmap_sem.\n\n[akpm@linux-foundation.org: remove ref to rwsem_is_contended()]\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5fdb2002131cd4e210b9638a4fc932ec7be491d1",
      "tree": "233dc1cab275397d211a7d5490f19192a59a47fd",
      "parents": [
        "110d74a921f4d272b47ef6104fcf937df808f4c8"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:12 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: move VM_LOCKED check to __mlock_vma_pages_range()\n\nUse a single code path for faulting in pages during mlock.\n\nThe reason to have it in this patch series is that I did not want to\nupdate both code paths in a later change that releases mmap_sem when\nblocking on disk.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "110d74a921f4d272b47ef6104fcf937df808f4c8",
      "tree": "a2f1705e049f06e1cf8cbaf7d6b3261f0b46b6ab",
      "parents": [
        "fed067da46ad3b9acedaf794a5f05d0bc153280b"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:36 2011 -0800"
      },
      "message": "mm: add FOLL_MLOCK follow_page flag.\n\nMove the code to mlock pages from __mlock_vma_pages_range() to\nfollow_page().\n\nThis allows __mlock_vma_pages_range() to not have to break down work into\n16-page batches.\n\nAn additional motivation for doing this within the present patch series is\nthat it\u0027ll make it easier for a later chagne to drop mmap_sem when\nblocking on disk (we\u0027d like to be able to resume at the page that was read\nfrom disk instead of at the start of a 16-page batch).\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fed067da46ad3b9acedaf794a5f05d0bc153280b",
      "tree": "ba2eadd8c3c2884d15a5a9373924b33b40bdca7e",
      "parents": [
        "5ecfda041e4b4bd858d25bbf5a16c2a6c06d7272"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:10 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "mlock: only hold mmap_sem in shared mode when faulting in pages\n\nCurrently mlock() holds mmap_sem in exclusive mode while the pages get\nfaulted in.  In the case of a large mlock, this can potentially take a\nvery long time, during which various commands such as \u0027ps auxw\u0027 will\nblock.  This makes sysadmins unhappy:\n\nreal    14m36.232s\nuser    0m0.003s\nsys     0m0.015s\n(output from \u0027time ps auxw\u0027 while a 20GB file was being mlocked without\nbeing previously preloaded into page cache)\n\nI propose that mlock() could release mmap_sem after the VM_LOCKED bits\nhave been set in all appropriate VMAs.  Then a second pass could be done\nto actually mlock the pages, in small batches, releasing mmap_sem when we\nblock on disk access or when we detect some contention.\n\nThis patch:\n\nBefore this change, mlock() holds mmap_sem in exclusive mode while the\npages get faulted in.  In the case of a large mlock, this can potentially\ntake a very long time.  Various things will block while mmap_sem is held,\nincluding \u0027ps auxw\u0027.  This can make sysadmins angry.\n\nI propose that mlock() could release mmap_sem after the VM_LOCKED bits\nhave been set in all appropriate VMAs.  Then a second pass could be done\nto actually mlock the pages with mmap_sem held for reads only.  We need to\nrecheck the vma flags after we re-acquire mmap_sem, but this is easy.\n\nIn the case where a vma has been munlocked before mlock completes, pages\nthat were already marked as PageMlocked() are handled by the munlock()\ncall, and mlock() is careful to not mark new page batches as PageMlocked()\nafter the munlock() call has cleared the VM_LOCKED vma flags.  So, the end\nresult will be identical to what\u0027d happen if munlock() had executed after\nthe mlock() call.\n\nIn a later change, I will allow the second pass to release mmap_sem when\nblocking on disk accesses or when it is otherwise contended, so that it\nwon\u0027t be held for long periods of time even in shared mode.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nTested-by: Valdis Kletnieks \u003cValdis.Kletnieks@vt.edu\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ecfda041e4b4bd858d25bbf5a16c2a6c06d7272",
      "tree": "e6c3e7dac64a5e45b48ab7836318752202579a17",
      "parents": [
        "72ddc8f72270758951ccefb7d190f364d20215ab"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:09 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "mlock: avoid dirtying pages and triggering writeback\n\nWhen faulting in pages for mlock(), we want to break COW for anonymous or\nfile pages within VM_WRITABLE, non-VM_SHARED vmas.  However, there is no\nneed to write-fault into VM_SHARED vmas since shared file pages can be\nmlocked first and dirtied later, when/if they actually get written to.\nSkipping the write fault is desirable, as we don\u0027t want to unnecessarily\ncause these pages to be dirtied and queued for writeback.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Kosaki Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Theodore Tso \u003ctytso@google.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72ddc8f72270758951ccefb7d190f364d20215ab",
      "tree": "11772272825f72aa3f32c0f9be5cf35155cf1441",
      "parents": [
        "b009c024ff0059e293c1937516f2defe56263650"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:08 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "do_wp_page: clarify dirty_page handling\n\nReorganize the code so that dirty pages are handled closer to the place\nthat makes them dirty (handling write fault into shared, writable VMAs).\nNo behavior changes.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Kosaki Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Theodore Tso \u003ctytso@google.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b009c024ff0059e293c1937516f2defe56263650",
      "tree": "35d71c837b954e884c429c9c36a85aaf7b033c49",
      "parents": [
        "212260aa07135b327752dc02625c68cf4ce04caf"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Thu Jan 13 15:46:07 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "do_wp_page: remove the \u0027reuse\u0027 flag\n\nmlocking a shared, writable vma currently causes the corresponding pages\nto be marked as dirty and queued for writeback.  This seems rather\nunnecessary given that the pages are not being actually modified during\nmlock.  It is understood that for non-shared mappings (file or anon) we\nwant to use a write fault in order to break COW, but there is just no such\nneed for shared mappings.\n\nThe first two patches in this series do not introduce any behavior change.\n The intent there is to make it obvious that dirtying file pages is only\ndone in the (writable, shared) case.  I think this clarifies the code, but\nI wouldn\u0027t mind dropping these two patches if there is no consensus about\nthem.\n\nThe last patch is where we actually avoid dirtying shared mappings during\nmlock.  Note that as a side effect of this, we won\u0027t call page_mkwrite()\nfor the mappings that define it, and won\u0027t be pre-allocating data blocks\nat the FS level if the mapped file was sparsely allocated.  My\nunderstanding is that mlock does not need to provide such guarantee, as\nevidenced by the fact that it never did for the filesystems that don\u0027t\ndefine page_mkwrite() - including some common ones like ext3.  However, I\nwould like to gather feedback on this from filesystem people as a\nprecaution.  If this turns out to be a showstopper, maybe block\npreallocation can be added back on using a different interface.\n\nLarge shared mlocks are getting significantly (\u003e2x) faster in my tests, as\nthe disk can be fully used for reading the file instead of having to share\nbetween this and writeback.\n\nThis patch:\n\nReorganize the code to remove the \u0027reuse\u0027 flag.  No behavior changes.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Kosaki Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Theodore Tso \u003ctytso@google.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nCc: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "212260aa07135b327752dc02625c68cf4ce04caf",
      "tree": "7ea25dddf5f69e91ec4b3d22f940e6c9604c7f93",
      "parents": [
        "dabb16f639820267b3850d804571c70bd93d4e07"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Thu Jan 13 15:46:06 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "mm: clear PageError bit in msync \u0026 fsync\n\nTemporary IO failures, eg.  due to loss of both multipath paths, can\npermanently leave the PageError bit set on a page, resulting in msync or\nfsync returning -EIO over and over again, even if IO is now getting to the\ndisk correctly.\n\nWe already clear the AS_ENOSPC and AS_IO bits in mapping-\u003eflags in the\nfilemap_fdatawait_range function.  Also clearing the PageError bit on the\npage allows subsequent msync or fsync calls on this file to return without\nan error, if the subsequent IO succeeds.\n\nUnfortunately data written out in the msync or fsync call that returned\n-EIO can still get lost, because the page dirty bit appears to not get\nrestored on IO error.  However, the alternative could be potentially all\nof memory filling up with uncleanable dirty pages, hanging the system, so\nthere is no nice choice here...\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Valerie Aurora \u003cvaurora@redhat.com\u003e\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dabb16f639820267b3850d804571c70bd93d4e07",
      "tree": "7da59e6133cd2f820389574ac9206c56e046f5d4",
      "parents": [
        "d0a21265dfb5fa8ae54e90d0fb6d1c215b10a28a"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@chromium.org",
        "time": "Thu Jan 13 15:46:05 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:35 2011 -0800"
      },
      "message": "oom: allow a non-CAP_SYS_RESOURCE proces to oom_score_adj down\n\nWe\u0027d like to be able to oom_score_adj a process up/down as it\nenters/leaves the foreground.  Currently, it is not possible to oom_adj\ndown without CAP_SYS_RESOURCE.  This patch allows a task to decrease its\noom_score_adj back to the value that a CAP_SYS_RESOURCE thread set it to\nor its inherited value at fork.  Assuming the thread that has forked it\nhas oom_score_adj of 0, each process could decrease it back from 0 upon\nactivation unless a CAP_SYS_RESOURCE thread elevated it to something\nhigher.\n\nAlternative considered:\n\n* a setuid binary\n* a daemon with CAP_SYS_RESOURCE\n\nSince you don\u0027t wan\u0027t all processes to be able to reduce their oom_adj, a\nsetuid or daemon implementation would be complex.  The alternatives also\nhave much higher overhead.\n\nThis patch updated from original patch based on feedback from David\nRientjes.\n\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0a21265dfb5fa8ae54e90d0fb6d1c215b10a28a",
      "tree": "a3bf2c96ad8e180f32a52e208667a40bb972275b",
      "parents": [
        "ec3f64fc9c196a304c4b7db3e1ff56d640628509"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 13 15:46:02 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: unify module_alloc code for vmalloc\n\nFour architectures (arm, mips, sparc, x86) use __vmalloc_area() for\nmodule_init().  Much of the code is duplicated and can be generalized in a\nglobally accessible function, __vmalloc_node_range().\n\n__vmalloc_node() now calls into __vmalloc_node_range() with a range of\n[VMALLOC_START, VMALLOC_END) for functionally equivalent behavior.\n\nEach architecture may then use __vmalloc_node_range() directly to remove\nthe duplication of code.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Russell King \u003clinux@arm.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ec3f64fc9c196a304c4b7db3e1ff56d640628509",
      "tree": "43de86d9fbb6543b99e1f450b1a3c15a3f151fa0",
      "parents": [
        "e5a5623b28198aa91ea71ee5d3846757fc76bc87"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 13 15:46:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: remove gfp mask from pcpu_get_vm_areas\n\npcpu_get_vm_areas() only uses GFP_KERNEL allocations, so remove the gfp_t\nformal and use the mask internally.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5a5623b28198aa91ea71ee5d3846757fc76bc87",
      "tree": "6fad408973a428a0ca2bdffd0c30a7c5af400ec9",
      "parents": [
        "f3a310bc4e5ce7e55e1c8e25c31e63af017f3e50"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 13 15:46:00 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: remove unused get_vm_area_node\n\nget_vm_area_node() is unused in the kernel and can thus be removed.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3a310bc4e5ce7e55e1c8e25c31e63af017f3e50",
      "tree": "0c78777bd505f44edeb9bbcc50fb3154896574aa",
      "parents": [
        "9927af740b1b9b1e769310bd0b91425e8047b803"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:46:00 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: vmscan: rename lumpy_mode to reclaim_mode\n\nWith compaction being used instead of lumpy reclaim, the name lumpy_mode\nand associated variables is a bit misleading.  Rename lumpy_mode to\nreclaim_mode which is a better fit.  There is no functional change.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9927af740b1b9b1e769310bd0b91425e8047b803",
      "tree": "5195dfbe36ece987f7e3d7c04b87327a20b16ea6",
      "parents": [
        "7f0f24967b0349798803260b2e4bf347cffa1990"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:59 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: compaction: perform a faster migration scan when migrating asynchronously\n\ntry_to_compact_pages() is initially called to only migrate pages\nasychronously and kswapd always compacts asynchronously.  Both are being\noptimistic so it is important to complete the work as quickly as possible\nto minimise stalls.\n\nThis patch alters the scanner when asynchronous to only consider\nMIGRATE_MOVABLE pageblocks as migration candidates.  This reduces stalls\nwhen allocating huge pages while not impairing allocation success rates as\na full scan will be performed if necessary after direct reclaim.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f0f24967b0349798803260b2e4bf347cffa1990",
      "tree": "80448367dd2403f02e74f90671e1f050aea41292",
      "parents": [
        "77f1fe6b08b13a87391549c8a820ddc817b6f50e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: migration: cleanup migrate_pages API by matching types for offlining and sync\n\nWith the introduction of the boolean sync parameter, the API looks a\nlittle inconsistent as offlining is still an int.  Convert offlining to a\nbool for the sake of being tidy.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "77f1fe6b08b13a87391549c8a820ddc817b6f50e",
      "tree": "720865bd0994da3787b6f37d33b2ee4c26a2de6c",
      "parents": [
        "3e7d344970673c5334cf7b5bb27c8c0942b06126"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:57 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:34 2011 -0800"
      },
      "message": "mm: migration: allow migration to operate asynchronously and avoid synchronous compaction in the faster path\n\nMigration synchronously waits for writeback if the initial passes fails.\nCallers of memory compaction do not necessarily want this behaviour if the\ncaller is latency sensitive or expects that synchronous migration is not\ngoing to have a significantly better success rate.\n\nThis patch adds a sync parameter to migrate_pages() allowing the caller to\nindicate if wait_on_page_writeback() is allowed within migration or not.\nFor reclaim/compaction, try_to_compact_pages() is first called\nasynchronously, direct reclaim runs and then try_to_compact_pages() is\ncalled synchronously as there is a greater expectation that it\u0027ll succeed.\n\n[akpm@linux-foundation.org: build/merge fix]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e7d344970673c5334cf7b5bb27c8c0942b06126",
      "tree": "832ecb4da5fd27efa5a503df5b96bfdee2a52ffd",
      "parents": [
        "ee64fc9354e515a79c7232cfde65c88ec627308b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: vmscan: reclaim order-0 and use compaction instead of lumpy reclaim\n\nLumpy reclaim is disruptive.  It reclaims a large number of pages and\nignores the age of the pages it reclaims.  This can incur significant\nstalls and potentially increase the number of major faults.\n\nCompaction has reached the point where it is considered reasonably stable\n(meaning it has passed a lot of testing) and is a potential candidate for\ndisplacing lumpy reclaim.  This patch introduces an alternative to lumpy\nreclaim whe compaction is available called reclaim/compaction.  The basic\noperation is very simple - instead of selecting a contiguous range of\npages to reclaim, a number of order-0 pages are reclaimed and then\ncompaction is later by either kswapd (compact_zone_order()) or direct\ncompaction (__alloc_pages_direct_compact()).\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: use conventional task_struct naming]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee64fc9354e515a79c7232cfde65c88ec627308b",
      "tree": "fb5fb6c0045ff5467ed5870d5f64806784deba2d",
      "parents": [
        "b7aba6984dc048503b69c2a885098cdd430832bf"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:55 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: vmscan: convert lumpy_mode into a bitmask\n\nCurrently lumpy_mode is an enum and determines if lumpy reclaim is off,\nsyncronous or asyncronous.  In preparation for using compaction instead of\nlumpy reclaim, this patch converts the flags into a bitmap.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b7aba6984dc048503b69c2a885098cdd430832bf",
      "tree": "1f682189bd967feaf28c2978445c7ebe82116185",
      "parents": [
        "2d90508f638241a2e7422d884767398296ebe720"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:54 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: compaction: add trace events for memory compaction activity\n\nIn preparation for a patches promoting the use of memory compaction over\nlumpy reclaim, this patch adds trace points for memory compaction\nactivity.  Using them, we can monitor the scanning activity of the\nmigration and free page scanners as well as the number and success rates\nof pages passed to page migration.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d90508f638241a2e7422d884767398296ebe720",
      "tree": "5b80c4919d924ab76c02b629465cbc7820010a53",
      "parents": [
        "62c70bce8ac236514c610020bb1ae5b8bde965cb"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Thu Jan 13 15:45:53 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: smaps: export mlock information\n\nCurrently there is no way to find whether a process has locked its pages\nin memory or not.  And which of the memory regions are locked in memory.\n\nAdd a new field \"Locked\" to export this information via the smaps file.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62c70bce8ac236514c610020bb1ae5b8bde965cb",
      "tree": "24f13ae48325034f9a8c4385669adcef545b4836",
      "parents": [
        "c32b0d4b3f19c2f5d29568f8b7b72b61693f1277"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Thu Jan 13 15:45:52 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:33 2011 -0800"
      },
      "message": "mm: convert sprintf_symbol to %pS\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Jiri Kosina \u003ctrivial@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c32b0d4b3f19c2f5d29568f8b7b72b61693f1277",
      "tree": "9cbaad32db3e63396620d60d56c7895d236b8944",
      "parents": [
        "9cbb4cb21b19fff46cf1174d0ed699ef710e641c"
      ],
      "author": {
        "name": "Hai Shan",
        "email": "haishan.bai@gmail.com",
        "time": "Thu Jan 13 15:45:51 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "fs/mpage.c: consolidate code\n\nMerge mpage_end_io_read() and mpage_end_io_write() into mpage_end_io() to\neliminate code duplication.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Hai Shan \u003cshan.hai@windriver.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9cbb4cb21b19fff46cf1174d0ed699ef710e641c",
      "tree": "56480b1f4082d6158f077378db36c99d6d3ff209",
      "parents": [
        "f0bc0a60b13f209df16062f94e9fb4b90dc08708"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Thu Jan 13 15:45:51 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "mm: find_get_pages_contig fixlet\n\nTesting -\u003emapping and -\u003eindex without a ref is not stable as the page\nmay have been reused at this point.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nReviewed-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0bc0a60b13f209df16062f94e9fb4b90dc08708",
      "tree": "c876603d2cb17a3e2ed159ca5e08e4665cc09fe2",
      "parents": [
        "c3f0da631539b3b8e17f6dda567af9958d49d14f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Jan 13 15:45:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "vmscan: factor out kswapd sleeping logic from kswapd()\n\nCurrently, kswapd() has deep nesting and is slightly hard to read.  Clean\nthis up.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3f0da631539b3b8e17f6dda567af9958d49d14f",
      "tree": "b9bc0060ac0fa99d0dc9e6caadb0abf0172249ef",
      "parents": [
        "c691b9d983d7015d54057034f4cd9b6d8affd976"
      ],
      "author": {
        "name": "Bob Liu",
        "email": "lliubbo@gmail.com",
        "time": "Thu Jan 13 15:45:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "mm/page-writeback.c: fix __set_page_dirty_no_writeback() return value\n\n__set_page_dirty_no_writeback() should return true if it actually\ntransitioned the page from a clean to dirty state although it seems nobody\nuses its return value at present.\n\nSigned-off-by: Bob Liu \u003clliubbo@gmail.com\u003e\nAcked-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c691b9d983d7015d54057034f4cd9b6d8affd976",
      "tree": "f87bd8ba07deacb2bcab5fe93684a04f0f7d34c2",
      "parents": [
        "b9543dac5bbc4aef0a598965b6b34f6259ab9a9b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Jan 13 15:45:48 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "sync_inode_metadata: fix comment\n\nUse correct function name, remove incorrect apostrophe\n\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9543dac5bbc4aef0a598965b6b34f6259ab9a9b",
      "tree": "255244e6bb9340d4b8ce1fa6b4d2ed4adece4b15",
      "parents": [
        "aa373cf550994623efb5d49a4d8775bafd10bbc1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jan 13 15:45:48 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "writeback: avoid livelocking WB_SYNC_ALL writeback\n\nWhen wb_writeback() is called in WB_SYNC_ALL mode, work-\u003enr_to_write is\nusually set to LONG_MAX.  The logic in wb_writeback() then calls\n__writeback_inodes_sb() with nr_to_write \u003d\u003d MAX_WRITEBACK_PAGES and we\neasily end up with non-positive nr_to_write after the function returns, if\nthe inode has more than MAX_WRITEBACK_PAGES dirty pages at the moment.\n\nWhen nr_to_write is \u003c\u003d 0 wb_writeback() decides we need another round of\nwriteback but this is wrong in some cases!  For example when a single\nlarge file is continuously dirtied, we would never finish syncing it\nbecause each pass would be able to write MAX_WRITEBACK_PAGES and inode\ndirty timestamp never gets updated (as inode is never completely clean).\nThus __writeback_inodes_sb() would write the redirtied inode again and\nagain.\n\nFix the issue by setting nr_to_write to LONG_MAX in WB_SYNC_ALL mode.  We\ndo not need nr_to_write in WB_SYNC_ALL mode anyway since\nwrite_cache_pages() does livelock avoidance using page tagging in\nWB_SYNC_ALL mode.\n\nThis makes wb_writeback() call __writeback_inodes_sb() only once on\nWB_SYNC_ALL.  The latter function won\u0027t livelock because it works on\n\n- a finite set of files by doing queue_io() once at the beginning\n- a finite set of pages by PAGECACHE_TAG_TOWRITE page tagging\n\nAfter this patch, program from http://lkml.org/lkml/2010/10/24/154 is no\nlonger able to stall sync forever.\n\n[fengguang.wu@intel.com: fix locking comment]\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa373cf550994623efb5d49a4d8775bafd10bbc1",
      "tree": "64b14d1f5491f436a8b3ea5c32edecde5c255285",
      "parents": [
        "71927e84e0aebfbe5a91565c3b207af25a4e9162"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jan 13 15:45:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "writeback: stop background/kupdate works from livelocking other works\n\nBackground writeback is easily livelockable in a loop in wb_writeback() by\na process continuously re-dirtying pages (or continuously appending to a\nfile).  This is in fact intended as the target of background writeback is\nto write dirty pages it can find as long as we are over\ndirty_background_threshold.\n\nBut the above behavior gets inconvenient at times because no other work\nqueued in the flusher thread\u0027s queue gets processed.  In particular, since\ne.g.  sync(1) relies on flusher thread to do all the IO for it, sync(1)\ncan hang forever waiting for flusher thread to do the work.\n\nGenerally, when a flusher thread has some work queued, someone submitted\nthe work to achieve a goal more specific than what background writeback\ndoes.  Moreover by working on the specific work, we also reduce amount of\ndirty pages which is exactly the target of background writeout.  So it\nmakes sense to give specific work a priority over a generic page cleaning.\n\nThus we interrupt background writeback if there is some other work to do.\nWe return to the background writeback after completing all the queued\nwork.\n\nThis may delay the writeback of expired inodes for a while, however the\nexpired inodes will eventually be flushed to disk as long as the other\nworks won\u0027t livelock.\n\n[fengguang.wu@intel.com: update comment]\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71927e84e0aebfbe5a91565c3b207af25a4e9162",
      "tree": "8271f6d2008405bd392893ab0f7a4bd25653dc90",
      "parents": [
        "6585027a5e8cb490e3a761b2f3f3c3acf722aff2"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Jan 13 15:45:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "writeback: trace wakeup event for background writeback\n\nThis tracks when balance_dirty_pages() tries to wakeup the flusher thread\nfor background writeback (if it was not started already).\n\nSuggested-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6585027a5e8cb490e3a761b2f3f3c3acf722aff2",
      "tree": "ac856c00c148d590d6b7632cc11bc23be6a9ccc2",
      "parents": [
        "b44129b30652c8771db2265939bb8b463724043d"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jan 13 15:45:44 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:32 2011 -0800"
      },
      "message": "writeback: integrated background writeback work\n\nCheck whether background writeback is needed after finishing each work.\n\nWhen bdi flusher thread finishes doing some work check whether any kind of\nbackground writeback needs to be done (either because\ndirty_background_ratio is exceeded or because we need to start flushing\nold inodes).  If so, just do background write back.\n\nThis way, bdi_start_background_writeback() just needs to wake up the\nflusher thread.  It will do background writeback as soon as there is no\nother work.\n\nThis is a preparatory patch for the next patch which stops background\nwriteback as soon as there is other work to do.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b44129b30652c8771db2265939bb8b463724043d",
      "tree": "d5b669ff4faea020b03e894706f49d5d1ae56907",
      "parents": [
        "88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "mm: vmstat: use a single setter function and callback for adjusting percpu thresholds\n\nreduce_pgdat_percpu_threshold() and restore_pgdat_percpu_threshold() exist\nto adjust the per-cpu vmstat thresholds while kswapd is awake to avoid\nerrors due to counter drift.  The functions duplicate some code so this\npatch replaces them with a single set_pgdat_percpu_threshold() that takes\na callback function to calculate the desired threshold as a parameter.\n\n[akpm@linux-foundation.org: readability tweak]\n[kosaki.motohiro@jp.fujitsu.com: set_pgdat_percpu_threshold(): don\u0027t use for_each_online_cpu]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88f5acf88ae6a9778f6d25d0d5d7ec2d57764a97",
      "tree": "6f39beef8cf918eb2ca9f64ae1bcd1ea79ca487a",
      "parents": [
        "43bb40c9e3aa51a3b038c9df2c9afb4d4685614d"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 13 15:45:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "mm: page allocator: adjust the per-cpu counter threshold when memory is low\n\nCommit aa45484 (\"calculate a better estimate of NR_FREE_PAGES when memory\nis low\") noted that watermarks were based on the vmstat NR_FREE_PAGES.  To\navoid synchronization overhead, these counters are maintained on a per-cpu\nbasis and drained both periodically and when a threshold is above a\nthreshold.  On large CPU systems, the difference between the estimate and\nreal value of NR_FREE_PAGES can be very high.  The system can get into a\ncase where pages are allocated far below the min watermark potentially\ncausing livelock issues.  The commit solved the problem by taking a better\nreading of NR_FREE_PAGES when memory was low.\n\nUnfortately, as reported by Shaohua Li this accurate reading can consume a\nlarge amount of CPU time on systems with many sockets due to cache line\nbouncing.  This patch takes a different approach.  For large machines\nwhere counter drift might be unsafe and while kswapd is awake, the per-cpu\nthresholds for the target pgdat are reduced to limit the level of drift to\nwhat should be a safe level.  This incurs a performance penalty in heavy\nmemory pressure by a factor that depends on the workload and the machine\nbut the machine should function correctly without accidentally exhausting\nall memory on a node.  There is an additional cost when kswapd wakes and\nsleeps but the event is not expected to be frequent - in Shaohua\u0027s test\ncase, there was one recorded sleep and wake event at least.\n\nTo ensure that kswapd wakes up, a safe version of zone_watermark_ok() is\nintroduced that takes a more accurate reading of NR_FREE_PAGES when called\nfrom wakeup_kswapd, when deciding whether it is really safe to go back to\nsleep in sleeping_prematurely() and when deciding if a zone is really\nbalanced or not in balance_pgdat().  We are still using an expensive\nfunction but limiting how often it is called.\n\nWhen the test case is reproduced, the time spent in the watermark\nfunctions is reduced.  The following report is on the percentage of time\nspent cumulatively spent in the functions zone_nr_free_pages(),\nzone_watermark_ok(), __zone_watermark_ok(), zone_watermark_ok_safe(),\nzone_page_state_snapshot(), zone_page_state().\n\nvanilla                      11.6615%\ndisable-threshold            0.2584%\n\nDavid said:\n\n: We had to pull aa454840 \"mm: page allocator: calculate a better estimate\n: of NR_FREE_PAGES when memory is low and kswapd is awake\" from 2.6.36\n: internally because tests showed that it would cause the machine to stall\n: as the result of heavy kswapd activity.  I merged it back with this fix as\n: it is pending in the -mm tree and it solves the issue we were seeing, so I\n: definitely think this should be pushed to -stable (and I would seriously\n: consider it for 2.6.37 inclusion even at this late date).\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReported-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nTested-by: Nicolas Bareil \u003cnico@chdir.org\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.37.1, 2.6.36.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43bb40c9e3aa51a3b038c9df2c9afb4d4685614d",
      "tree": "3b7d37ef585d4a94d7d56f62f02418b0b0d056c1",
      "parents": [
        "5dfbd1d734ef5415bc47b034df7433ba21e40e7b"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Thu Jan 13 15:45:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "sched: remove long deprecated CLONE_STOPPED flag\n\nThis warning was added in commit bdff746a3915 (\"clone: prepare to recycle\nCLONE_STOPPED\") three years ago.  2.6.26 came and went.  As far as I know,\nno-one is actually using CLONE_STOPPED.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dfbd1d734ef5415bc47b034df7433ba21e40e7b",
      "tree": "3fbe7a9997f20e6c7db040a2fc1da68b93c10302",
      "parents": [
        "6c9ae009b298753a3baf71298d676a68b5a10c8f"
      ],
      "author": {
        "name": "Claudio Scordino",
        "email": "claudio@evidence.eu.com",
        "time": "Thu Jan 13 15:45:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "atmel_serial: fix RTS high after initialization in RS485 mode\n\nWhen working in RS485 mode, the atmel_serial driver keeps RTS high after\nthe initialization of the serial port.  It goes low only after the first\ncharacter has been sent.\n\n[akpm@linux-foundation.org: simplify code]\nSigned-off-by: Claudio Scordino \u003cclaudio@evidence.eu.com\u003e\nSigned-off-by: Arkadiusz Bubala \u003carkadiusz.bubala@gmail.com\u003e\nTested-by: Arkadiusz Bubala \u003carkadiusz.bubala@gmail.com\u003e\nCc: Nicolas Ferre \u003cnicolas.ferre@atmel.com\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c9ae009b298753a3baf71298d676a68b5a10c8f",
      "tree": "95a7e4ca54fe8e96c95cedd4e8d6450659015212",
      "parents": [
        "558bbb2fc75fd9676e07e347c021865e326c56db"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jan 13 15:45:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "irq: use per_cpu kstat_irqs\n\nUse modern per_cpu API to increment {soft|hard}irq counters, and use\nper_cpu allocation for (struct irq_desc)-\u003ekstats_irq instead of an array.\n\nThis gives better SMP/NUMA locality and saves few instructions per irq.\n\nWith small nr_cpuids values (8 for example), kstats_irq was a small array\n(less than L1_CACHE_BYTES), potentially source of false sharing.\n\nIn the !CONFIG_SPARSE_IRQ case, remove the huge, NUMA/cache unfriendly\nkstat_irqs_all[NR_IRQS][NR_CPUS] array.\n\nNote: we still populate kstats_irq for all possible irqs in\nearly_irq_init().  We probably could use on-demand allocations.  (Code\nincluded in alloc_descs()).  Problem is not all IRQS are used with a prior\nalloc_descs() call.\n\nkstat_irqs_this_cpu() is not used anymore, remove it.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "558bbb2fc75fd9676e07e347c021865e326c56db",
      "tree": "9f7542241b525cee30e7ee7a7ca1f67b88cfe688",
      "parents": [
        "f6bcfd94c0a97c11ce9197ade93a08bc8af6e057"
      ],
      "author": {
        "name": "Bruce Chang",
        "email": "BruceChang@via.com.tw",
        "time": "Thu Jan 13 15:45:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:31 2011 -0800"
      },
      "message": "MAINTAINERS: update entries affecting VIA Technologies\n\nSince the original maintainer-Joseph Chan (josephchan@via.com.tw) doesn\u0027t\nhandle the Linux driver for VIA now, I would like to request to update the\nmaintainer for the SD/MMC CARD CONTROLLER DRIVER and VIA\nUNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER before we find a better one.\n\nSigned-off-by: Bruce Chang \u003cbrucechang@via.com.tw\u003e\nSigned-off-by: Florian Tobias Schandinat \u003cFlorianSchandinat@gmx.de\u003e\nCc: Joseph Chan \u003cJosephChan@via.com.tw\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Harald Welte \u003cHaraldWelte@viatech.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f6bcfd94c0a97c11ce9197ade93a08bc8af6e057",
      "tree": "83d867565b4f2a7627b3288f9e000eaf2b217be9",
      "parents": [
        "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
        "9d09e663d5502c46f2d9481c04c1087e1c2da698"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:47 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (32 commits)\n  dm: raid456 basic support\n  dm: per target unplug callback support\n  dm: introduce target callbacks and congestion callback\n  dm mpath: delay activate_path retry on SCSI_DH_RETRY\n  dm: remove superfluous irq disablement in dm_request_fn\n  dm log: use PTR_ERR value instead of ENOMEM\n  dm snapshot: avoid storing private suspended state\n  dm snapshot: persistent make metadata_wq multithreaded\n  dm: use non reentrant workqueues if equivalent\n  dm: convert workqueues to alloc_ordered\n  dm stripe: switch from local workqueue to system_wq\n  dm: dont use flush_scheduled_work\n  dm snapshot: remove unused dm_snapshot queued_bios_work\n  dm ioctl: suppress needless warning messages\n  dm crypt: add loop aes iv generator\n  dm crypt: add multi key capability\n  dm crypt: add post iv call to iv generator\n  dm crypt: use io thread for reads only if mempool exhausted\n  dm crypt: scale to multiple cpus\n  dm crypt: simplify compatible table output\n  ...\n"
    },
    {
      "commit": "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
      "tree": "b90daecbc3d05787b0dd141e524b67d8579a6dfd",
      "parents": [
        "375b6f5a40a3d8373561a3dbeed440a845e6d379",
        "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: Fix removal of extra drives when converting RAID6 to RAID5\n  md: range check slot number when manually adding a spare.\n  md/raid5: handle manually-added spares in start_reshape.\n  md: fix sync_completed reporting for very large drives (\u003e2TB)\n  md: allow suspend_lo and suspend_hi to decrease as well as increase.\n  md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n  md: separate meta and data devs\n  md-new-param-to_sync_page_io\n  md-new-param-to-calc_dev_sboffset\n  md: Be more careful about clearing flags bit in -\u003erecovery\n  md: md_stop_writes requires mddev_lock.\n  md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n  md: Ensure no IO request to get md device before it is properly initialised.\n  md: Fix single printks with multiple KERN_\u003clevel\u003es\n  md: fix regression resulting in delays in clearing bits in a bitmap\n  md: fix regression with re-adding devices to arrays with no metadata\n"
    },
    {
      "commit": "375b6f5a40a3d8373561a3dbeed440a845e6d379",
      "tree": "7fe903bdfd0f67436c648394b0bcbdda55379689",
      "parents": [
        "d8a3515e2a9523f8ed56d1f4537d16338bda2bc2",
        "09579770dcb8769f4f61046dcd01cc758cfa6d91"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:29:53 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:29:53 2011 -0800"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:\n  [IA64] fix build error - arch/ia64/kernel/perfmon.c\n"
    },
    {
      "commit": "d8a3515e2a9523f8ed56d1f4537d16338bda2bc2",
      "tree": "d51bd1b4f0b3c13bedde97ba79e014882be634a9",
      "parents": [
        "6254b32b5791e47ba1c679d023f26985fa34755a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:26:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:26:46 2011 -0800"
      },
      "message": "Revert \"gpiolib: annotate gpio-intialization with __must_check\"\n\nThis reverts commit 0fdae42d361bbb431ca0ab0efed5126a94821177, which\nwasn\u0027t really supposed to go in, and causes lots of annoying warnings.\n\nQuoth Andrew:\n  \"Complete brainfart - I meant to drop that patch ages ago.\"\n\nQuoth Greg:\n  \"Ick, yeah, that patch isn\u0027t ok to go in as-is, all of the callers\n   need to be fixed up first, which is what I thought we had agreed on...\"\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6254b32b5791e47ba1c679d023f26985fa34755a",
      "tree": "121faecbf6c17732ee620fd68009e3e24205340e",
      "parents": [
        "2a86cb7c2b1e9eb98b36d0a3cf4444d8851968b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:19:38 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:19:38 2011 -0800"
      },
      "message": "ecryptfs: fix broken build\n\nStephen Rothwell reports that the vfs merge broke the build of ecryptfs.\nThe breakage comes from commit 66cb76666d69 (\"sanitize ecryptfs\n-\u003emount()\") which was obviously not even build tested. Tssk, tssk, Al.\n\nThis is the minimal build fixup for the situation, although I don\u0027t have\na filesystem to actually test it with.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09579770dcb8769f4f61046dcd01cc758cfa6d91",
      "tree": "bd486d1775bcbfd627f2c31f24a2c58e3cd4e8da",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jan 13 14:49:56 2011 -0800"
      },
      "committer": {
        "name": "Tony Luck",
        "email": "tony.luck@intel.com",
        "time": "Thu Jan 13 14:49:56 2011 -0800"
      },
      "message": "[IA64] fix build error - arch/ia64/kernel/perfmon.c\n\narch/ia64/kernel/perfmon.c:621: error: duplicate \u0027static\u0027\n\nIntroduced by commit c74a1cbb3cac348f276fabc381758f5b0b4713b2\n\n    pass default dentry_operations to mount_pseudo()\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\n"
    },
    {
      "commit": "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca",
      "tree": "68587eaff5c7cb85628c1f68aecb19f2a18c8f6e",
      "parents": [
        "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Fix removal of extra drives when converting RAID6 to RAID5\n\nWhen a RAID6 is converted to a RAID5, the extra drive should\nbe discarded.  However it isn\u0027t due to a typo in a comparison.\n\nThis bug was introduced in commit e93f68a1fc6 in 2.6.35-rc4\nand is suitable for any -stable since than.\n\nAs the extra drive is not removed, the \u0027degraded\u0027 counter is wrong and\nso the RAID5 will not respond correctly to a subsequent failure.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c",
      "tree": "02da80f72095418dd1a08661f59c24607029a8e7",
      "parents": [
        "1a940fcee31ec6c18c2f24dbdad31d54e4c35048"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: range check slot number when manually adding a spare.\n\nWhen adding a spare to an active array, we should check the slot\nnumber, but allow it to be larger than raid_disks if a reshape\nis being prepared.\n\nApply the same test when adding a device to an\narray-under-construction.  It already had most of the test in place,\nbut not quite all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a940fcee31ec6c18c2f24dbdad31d54e4c35048",
      "tree": "73de19d505bb0483462eb1445a86a848e5506478",
      "parents": [
        "13ae864bc86ff65547ffe7e966b6433a0d0edb8a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md/raid5: handle manually-added spares in start_reshape.\n\nIt is possible to manually add spares to specific slots before\nstarting a reshape.\nraid5_start_reshape should recognised this possibility and include\nit in the accounting.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13ae864bc86ff65547ffe7e966b6433a0d0edb8a",
      "tree": "6e5ca3a6736b75fa0db8415c1e3a2506af6ab9cc",
      "parents": [
        "23ddff3792f61193695114c68d6ebd57e974c4f8"
      ],
      "author": {
        "name": "Rémi Rérolle",
        "email": "rrerolle@lacie.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: fix sync_completed reporting for very large drives (\u003e2TB)\n\nThe values exported in the sync_completed file are unsigned long, which\noverflows with very large drives, resulting in wrong values reported.\n\nSince sync_completed uses sectors as unit, we\u0027ll start getting wrong\nvalues with components larger than 2TB.\n\nThis patch simply replaces the use of unsigned long by unsigned long long.\n\nSigned-off-by: Rémi Rérolle \u003crrerolle@lacie.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "23ddff3792f61193695114c68d6ebd57e974c4f8",
      "tree": "5b16efbc900648c8ef402a41cb308759a2706c61",
      "parents": [
        "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: allow suspend_lo and suspend_hi to decrease as well as increase.\n\nThe sysfs attributes \u0027suspend_lo\u0027 and \u0027suspend_hi\u0027 describe a region\nto which read/writes are suspended so that the under lying data can be\nmanipulated without user-space noticing.\nCurrently the window they describe can only move forwards along the\ndevice.  However this is an unnecessary restriction which will cause\nproblems with planned developments.\nSo relax this restriction and allow these endpoints to move\narbitrarily.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4",
      "tree": "27074aceb801ada315329591f32c938b36150ed9",
      "parents": [
        "a6ff7e089c7fca813c956ccbed824087e89a3a49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n\nmddev-\u003ecurr_resync has artificial values of \u00271\u0027 and \u00272\u0027 which are used\nby the code which ensures only one resync is happening at a time on\nany given device.\n\nThese values are internal and should never be exposed to user-space\n(except when translated appropriately as in the \u0027pending\u0027 status in\n/proc/mdstat).\n\nUnfortunately they are as -\u003ecurr_resync is assigned to\n-\u003ecurr_resync_completed and that value is directly visible through\nsysfs.\n\nSo change the assignments to -\u003ecurr_resync_completed to get the same\nvalued from elsewhere in a form that doesn\u0027t have the magic \u00271\u0027 or \u00272\u0027\nvalues.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a6ff7e089c7fca813c956ccbed824087e89a3a49",
      "tree": "6537f72a2431c30601736676e9b1f89a7f1fe52e",
      "parents": [
        "ccebd4c4159462c96397ae9af9c667bb394d7b70"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: separate meta and data devs\n\nAllow the metadata to be on a separate device from the\ndata.\n\nThis doesn\u0027t mean the data and metadata will by on separate\nphysical devices - it simply gives device-mapper and userspace\ntools more flexibility.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ccebd4c4159462c96397ae9af9c667bb394d7b70",
      "tree": "04554f0e7607d906c6b09f31a995fca0dd40c5b5",
      "parents": [
        "57b2caa394393f8870ed41bdcc38a7542593018f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to_sync_page_io\n\nAdd new parameter to \u0027sync_page_io\u0027.\n\nThe new parameter allows us to distinguish between metadata and data\noperations.  This becomes important later when we add the ability to\nuse separate devices for data and metadata.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "57b2caa394393f8870ed41bdcc38a7542593018f",
      "tree": "22579497603304e9694986a4cac2cd360c993fa9",
      "parents": [
        "7ebc0be7fff4146e87b4078f054977b72998abd3"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to-calc_dev_sboffset\n\nWhen we allow for separate devices for data and metadata\nin a later patch, we will need to be able to calculate\nthe superblock offset based on more than the bdev.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "7ebc0be7fff4146e87b4078f054977b72998abd3",
      "tree": "f5b5b40674ec4e221e77eb1f9e4f36138f75df3c",
      "parents": [
        "defad61a5b16352d3e22a04d4c930a5b5a7fd1f0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Be more careful about clearing flags bit in -\u003erecovery\n\nSetting -\u003erecovery to 0 is generally not a good idea as it could clear\nbits that shouldn\u0027t be cleared.  In particular, MD_RECOVERY_FROZEN\nshould only be cleared on explicit request from user-space.\n\nSo when we need to clear things, just clear the bits that need\nclearing.\n\nAs there are a few different places which reap a resync process - and\nsome do an incomplte job - factor out the code for doing the from\nmd_check_recovery and call that function instead of open coding part\nof it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "defad61a5b16352d3e22a04d4c930a5b5a7fd1f0",
      "tree": "c353bd036c12011d0eee7f7924c230888fd34b0a",
      "parents": [
        "43c73ca43b3e03bb228ff9350b6b44d0e560f262"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: md_stop_writes requires mddev_lock.\n\nAs md_stop_writes manipulates the sync_thread and calls md_update_sb,\nit need to be called with mddev_lock held.\n\nIn all internal cases it is, but the symbol is exported for dm-raid to\ncall and in that case the lock won\u0027t be help.\nDo make an exported version which takes the lock, and an internal\nversion which does not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43c73ca43b3e03bb228ff9350b6b44d0e560f262",
      "tree": "2a6fcff1e62c53ba0a95295cf02ae785b1efb501",
      "parents": [
        "0ca69886a8273ac1350143d562280bfcbe4760dc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n\nWith the module parameter \u0027start_dirty_degraded\u0027 set,\nraid5_spare_active() previously called sysfs_notify_dirent() with a NULL\nargument (rdev-\u003esysfs_state) when a rebuild finished.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\n"
    },
    {
      "commit": "0ca69886a8273ac1350143d562280bfcbe4760dc",
      "tree": "98acbe1e5682e4455bf7d2e7a9413b5a3fd43b2a",
      "parents": [
        "067032bc628598606056412594042564fcf09e22"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Ensure no IO request to get md device before it is properly initialised.\n\nWhen an md device is in the process of coming on line it is possible\nfor an IO request (typically a partition table probe) to get through\nbefore the array is fully initialised, which can cause unexpected\nbehaviour (e.g. a crash).\n\nSo explicitly record when the array is ready for IO and don\u0027t allow IO\nthrough until then.\n\nThere is no possibility for a similar problem when the array is going\noff-line as there must only be one \u0027open\u0027 at that time, and it is busy\noff-lining the array and so cannot send IO requests.  So no memory\nbarrier is needed in md_stop()\n\nThis has been a bug since commit 409c57f3801 in 2.6.30 which\nintroduced md_make_request.  Before then, each personality would\nregister its own make_request_fn when it was ready.\nThis is suitable for any stable kernel from 2.6.30.y onwards.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by:  \"Hawrylewicz Czarnowski, Przemyslaw\" \u003cprzemyslaw.hawrylewicz.czarnowski@intel.com\u003e\n"
    },
    {
      "commit": "067032bc628598606056412594042564fcf09e22",
      "tree": "5e64b6446c2156631cc66f34330ba7b134a451bf",
      "parents": [
        "6c9879101442b08581e8a0e3ae6b7f643a78fd63"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Fix single printks with multiple KERN_\u003clevel\u003es\n\nNoticed-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c9879101442b08581e8a0e3ae6b7f643a78fd63",
      "tree": "bfe780d4e09896988fe367aa329a94daf55163c9",
      "parents": [
        "bf572541ab44240163eaa2d486b06f306a31d45a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:13:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:13:53 2011 +1100"
      },
      "message": "md: fix regression resulting in delays in clearing bits in a bitmap\n\ncommit 589a594be1fb (2.6.37-rc4) fixed a problem were md_thread would\nsometimes call the -\u003erun function at a bad time.\n\nIf an error is detected during array start up after the md_thread has\nbeen started, the md_thread is killed.  This resulted in the -\u003erun\nfunction being called once.  However the array may not be in a state\nthat it is safe to call -\u003erun.\n\nHowever the fix imposed meant that  -\u003erun was not called on a timeout.\nThis means that when an array goes idle, bitmap bits do not get\ncleared promptly.  While the array is busy the bits will still be\ncleared when appropriate so this is not very serious.  There is no\nrisk to data.\n\nChange the test so that we only avoid calling -\u003erun when the thread\nis being stopped.  This more explicitly addresses the problem situation.\n\nThis is suitable for 2.6.37-stable and any -stable kernel to which\n589a594be1fb was applied.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2a86cb7c2b1e9eb98b36d0a3cf4444d8851968b1",
      "tree": "9555558356509c8b938a768457f70dafe3bfa3b7",
      "parents": [
        "8a0eebf66e3b1deae036553ba641a9c2bdbae678",
        "c975ffadd144e8e99e83e8f80ee94efce4f170b5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 12:06:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 12:06:58 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/avr32-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/avr32-2.6:\n  avr32: update default configuration files for Atmel boards\n  avr32: Convert to clocksource_register_hz\n  avr32: make architecture sys_clone prototype match asm-generic prototype\n  avr32: use syscall prototypes from asm-generic instead of arch\n  avr32: disable kprobes for all default configurations\n  avr32: boards: setup: use IS_ERR() instead of NULL check\n"
    },
    {
      "commit": "8a0eebf66e3b1deae036553ba641a9c2bdbae678",
      "tree": "642d4367dd30a55f78244891479cc08f2983eb7e",
      "parents": [
        "581548db3b3c0f6e25b500329eb02e3c72e7acbe"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Jan 13 14:15:50 2011 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 12:06:29 2011 -0800"
      },
      "message": "NFS: Fix NFSv3 exclusive open semantics\n\nCommit c0204fd2b8fe047b18b67e07e1bf2a03691240cd (NFS: Clean up\nnfs4_proc_create()) broke NFSv3 exclusive open by removing the code\nthat passes the O_EXCL flag down to nfs3_proc_create(). This patch\nreverts that offending hunk from the original commit.\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: stable@kernel.org    [2.6.37]\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9d09e663d5502c46f2d9481c04c1087e1c2da698",
      "tree": "993f10eb7100a6ce8c00c0cff7951d7ffea9488e",
      "parents": [
        "99d03c141b40914b67d63c9d23b8da4386422ed7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "message": "dm: raid456 basic support\n\nThis patch is the skeleton for the DM target that will be\nthe bridge from DM to MD (initially RAID456 and later RAID1).  It\nprovides a way to use device-mapper interfaces to the MD RAID456\ndrivers.\n\nAs with all device-mapper targets, the nominal public interfaces are the\nconstructor (CTR) tables and the status outputs (both STATUSTYPE_INFO\nand STATUSTYPE_TABLE).  The CTR table looks like the following:\n\n1: \u003cs\u003e \u003cl\u003e raid \\\n2:\t\u003craid_type\u003e \u003c#raid_params\u003e \u003craid_params\u003e \\\n3:\t\u003c#raid_devs\u003e \u003cmeta_dev1\u003e \u003cdev1\u003e .. \u003cmeta_devN\u003e \u003cdevN\u003e\n\nLine 1 contains the standard first three arguments to any device-mapper\ntarget - the start, length, and target type fields.  The target type in\nthis case is \"raid\".\n\nLine 2 contains the arguments that define the particular raid\ntype/personality/level, the required arguments for that raid type, and\nany optional arguments.  Possible raid types include: raid4, raid5_la,\nraid5_ls, raid5_rs, raid6_zr, raid6_nr, and raid6_nc.  (again, raid1 is\nplanned for the future.)  The list of required and optional parameters\nis the same for all the current raid types.  The required parameters are\npositional, while the optional parameters are given as key/value pairs.\nThe possible parameters are as follows:\n \u003cchunk_size\u003e\t\tChunk size in sectors.\n [[no]sync]\t\tForce/Prevent RAID initialization\n [rebuild \u003cidx\u003e]\tRebuild the drive indicated by the index\n [daemon_sleep \u003cms\u003e]\tTime between bitmap daemon work to clear bits\n [min_recovery_rate \u003ckB/sec/disk\u003e]\tThrottle RAID initialization\n [max_recovery_rate \u003ckB/sec/disk\u003e]\tThrottle RAID initialization\n [max_write_behind \u003cvalue\u003e]\t\tSee \u0027-write-behind\u003d\u0027 (man mdadm)\n [stripe_cache \u003csectors\u003e]\t\tStripe cache size for higher RAIDs\n\nLine 3 contains the list of devices that compose the array in\nmetadata/data device pairs.  If the metadata is stored separately, a \u0027-\u0027\nis given for the metadata device position.  If a drive has failed or is\nmissing at creation time, a \u0027-\u0027 can be given for both the metadata and\ndata drives for a given position.\n\nExamples:\n# RAID4 - 4 data drives, 1 parity\n# No metadata devices specified to hold superblock/bitmap info\n# Chunk size of 1MiB\n# (Lines separated for easy reading)\n0 1960893648 raid \\\n\traid4 1 2048 \\\n\t5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81\n\n# RAID4 - 4 data drives, 1 parity (no metadata devices)\n# Chunk size of 1MiB, force RAID initialization,\n#\tmin recovery rate at 20 kiB/sec/disk\n0 1960893648 raid \\\n        raid4 4 2048 min_recovery_rate 20 sync\\\n        5 - 8:17 - 8:33 - 8:49 - 8:65 - 8:81\n\nPerforming a \u0027dmsetup table\u0027 should display the CTR table used to\nconstruct the mapping (with possible reordering of optional\nparameters).\n\nPerforming a \u0027dmsetup status\u0027 will yield information on the state and\nhealth of the array.  The output is as follows:\n1: \u003cs\u003e \u003cl\u003e raid \\\n2:\t\u003craid_type\u003e \u003c#devices\u003e \u003c1 health char for each dev\u003e \u003cresync_ratio\u003e\n\nLine 1 is standard DM output.  Line 2 is best shown by example:\n\t0 1960893648 raid raid4 5 AAAAA 2/490221568\nHere we can see the RAID type is raid4, there are 5 devices - all of\nwhich are \u0027A\u0027live, and the array is 2/490221568 complete with recovery.\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "99d03c141b40914b67d63c9d23b8da4386422ed7",
      "tree": "d9c2d4da01f749325fac949d96e35aedea05cfc4",
      "parents": [
        "9d357b0787bb3c91835d5e658c3bda178f9ca419"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:02 2011 +0000"
      },
      "message": "dm: per target unplug callback support\n\nAdd per-target unplug callback support.\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9d357b0787bb3c91835d5e658c3bda178f9ca419",
      "tree": "48f2c3adc8ae06918ef0523f073291990407fa28",
      "parents": [
        "4e2d19e46b507018c6ed15f6c081d8f887ae229c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "message": "dm: introduce target callbacks and congestion callback\n\nDM currently implements congestion checking by checking on congestion\nin each component device.  For raid456 we need to also check if the\nstripe cache is congested.\n\nAdd per-target congestion checker callback support.\n\nExtending the target_callbacks structure with additional callback\nfunctions allows for establishing multiple callbacks per-target (a\ncallback is also needed for unplug).\n\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4e2d19e46b507018c6ed15f6c081d8f887ae229c",
      "tree": "c4004056ca62763c87e5dae1c19d7e22877ec571",
      "parents": [
        "052189a2ec956810feefb6a681416c5e6a207646"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:01 2011 +0000"
      },
      "message": "dm mpath: delay activate_path retry on SCSI_DH_RETRY\n\nThis patch adds a user-configurable \u0027pg_init_delay_msecs\u0027 feature.  Use\nthis feature to specify the number of milliseconds to delay before\nretrying scsi_dh_activate, when SCSI_DH_RETRY is returned.\n\nSCSI Device Handlers return SCSI_DH_IMM_RETRY if we could retry\nactivation immediately and SCSI_DH_RETRY in cases where it is better to\nretry after some delay.\n\nCurrently we immediately retry scsi_dh_activate irrespective of\nSCSI_DH_IMM_RETRY and SCSI_DH_RETRY.\n\nThe \u0027pg_init_delay_msecs\u0027 feature may be provided during table create or\nload, e.g.:\n    dmsetup create --table \"0 20971520 multipath 3 queue_if_no_path \\\n\tpg_init_delay_msecs 2500 ...\" mpatha\n\nThe default for \u0027pg_init_delay_msecs\u0027 is 2000 milliseconds.\nMaximum configurable delay is 60000 milliseconds.  Specifying a\n\u0027pg_init_delay_msecs\u0027 of 0 will cause immediate retry.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nAcked-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "052189a2ec956810feefb6a681416c5e6a207646",
      "tree": "52a1fbec2878788c6a2f6565999b97331493bc4c",
      "parents": [
        "dbc883f1570d992ba926a8c9e22140ba473c6cc1"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "message": "dm: remove superfluous irq disablement in dm_request_fn\n\nThis patch changes spin_lock_irq() to spin_lock() in dm_request_fn().\nThis patch is just a clean-up and no functional change.\n\nThe spin_lock_irq() was leftover from the early request-based dm code,\nwhere map_request() used to enable interrupts.\nSince current map_request() never enables interrupts, we can change it\nto spin_lock() to match the prior spin_unlock().\n\nAuditing through the dm and block-layer code called from\nmap_request(), I confirmed all functions save/restore interrupt\nstatus, so no function returning with interrupts enabled.\nAlso I haven\u0027t observed any problem on my test environment which\nuses scsi and lpfc driver after heavy I/O testing with occasional\npath down/up.\n\nAdded BUG_ON() to detect breakage in future.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "dbc883f1570d992ba926a8c9e22140ba473c6cc1",
      "tree": "1a6bfde475cbbe2a978a13b9e2f2a8fec959d7fe",
      "parents": [
        "b83b2f295aec418c7501c05df4dfd168a79d165a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 20:00:00 2011 +0000"
      },
      "message": "dm log: use PTR_ERR value instead of ENOMEM\n\nIt\u0027s nicer to return the PTR_ERR() value instead of just returning\n-ENOMEM.  In the current code the PTR_ERR() value is always equal to\n-ENOMEM so this doesn\u0027t actually affect anything, but still...\n\nIn addition, dm_dirty_log_create() doesn\u0027t check for a specific -ENOMEM\nreturn.  So this change is safe relative to potential for a non -ENOMEM\nreturn in the future.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nAcked-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b83b2f295aec418c7501c05df4dfd168a79d165a",
      "tree": "55249c09281930055439c449f55f156784d0bb68",
      "parents": [
        "239c8dd533e74de4a7f3c85c4f9f430eb08867c1"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "message": "dm snapshot: avoid storing private suspended state\n\nUse dm_suspended() rather than having each snapshot target maintain a\nprivate \u0027suspended\u0027 flag in struct dm_snapshot.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "239c8dd533e74de4a7f3c85c4f9f430eb08867c1",
      "tree": "0dfb9e39aad0f2ab09a4f278a6e7f1b46bf64307",
      "parents": [
        "9c4376de98719d2768dd919553843de34bb094a6"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:59 2011 +0000"
      },
      "message": "dm snapshot: persistent make metadata_wq multithreaded\n\nmetadata_wq serves on-stack work items from chunk_io().  Even if\nmultiple chunk_io() are simultaneously in progress, each is\nindependent and queued only once, so multithreaded workqueue can be\nsafely used.\n\nSwitch metadata_wq to multithread and flush the work item instead of\nthe workqueue in chunk_io().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9c4376de98719d2768dd919553843de34bb094a6",
      "tree": "c20b10e9018bb51803c535a38a04ee8b12b6d98a",
      "parents": [
        "4d4d66ab5322fa9b0f51842a76139387a40e1ce9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:58 2011 +0000"
      },
      "message": "dm: use non reentrant workqueues if equivalent\n\nkmirrord_wq, kcopyd_work and md-\u003ewq are created per dm instance and\nserve only a single work item from the dm instance, so non-reentrant\nworkqueues would provide the same ordering guarantees as ordered ones\nwhile allowing CPU affinity and use of the workqueues for other\npurposes.  Switch them to non-reentrant workqueues.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d4d66ab5322fa9b0f51842a76139387a40e1ce9",
      "tree": "37485e2fa56c38044c496ac5632e8304c5cc25db",
      "parents": [
        "f521f074abe7b3990f5df65482cdc3d851b80665"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jan 13 19:59:57 2011 +0000"
      },
      "message": "dm: convert workqueues to alloc_ordered\n\nConvert all create[_singlethread]_work() users to the new\nalloc[_ordered]_workqueue().  This conversion is mechanical and\ndoesn\u0027t introduce any behavior change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "f521f074abe7b3990f5df65482cdc3d851b80665"
}
