)]}'
{
  "log": [
    {
      "commit": "5dab8ec139be215fbaba216fb4aea914d0f4dac5",
      "tree": "246dfbfdf1d6cbf0177329cedf6da23f6480c27a",
      "parents": [
        "3381959da5a00ae8289cfbd28b0b6d228f2d1d46"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Wed Jun 25 05:44:40 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 13:10:40 2008 +0200"
      },
      "message": "mm, generic, x86 boot: more tweaks to hex prints of some pfn addresses\n\nFix some problems with (and applies on top of) a previous patch:\n  x86 boot: show pfn addresses in hex not decimal in some kernel info printks\n\nPrimarily change \"0x%8lx\" format, which displays with a right aligned\nspace filled hex number (spaces between the \"0x\" prefix and the number),\ninto \"%0#10lx\" format, which zero fills instead of space fills, and\nwhich uses the printf flag \u0027#\u0027 to request the \"0x\" prefix instead of\nhard coding it.\n\nAlso replace some other \"0x%lx\" formats with \"%#lx\", making use of the\n\u0027#\u0027 printf flag again.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: \"Yinghai Lu\" \u003cyhlu.kernel@gmail.com\u003e\nCc: \"Jack Steiner\" \u003csteiner@sgi.com\u003e\nCc: \"Mike Travis\" \u003ctravis@sgi.com\u003e\nCc: \"Huang\nCc: Ying\" \u003cying.huang@intel.com\u003e\nCc: \"Andi Kleen\" \u003candi@firstfloor.org\u003e\nCc: \"Andrew Morton\" \u003cakpm@linux-foundation.org\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2bc0d2615a15a93d344abbe8cb1b9056122bce9d",
      "tree": "8011b668497aac0870119dda987de6501c5d507d",
      "parents": [
        "e2fc252e0ce695b4c4abe27bb073c35bd0d73252"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jun 22 07:22:17 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 12:51:38 2008 +0200"
      },
      "message": "x86 boot: more consistently use type int for node ids\n\nEverywhere I look, node id\u0027s are of type \u0027int\u0027, except in this one\ncase, which has \u0027unsigned long\u0027.  Change this one to \u0027int\u0027 as well.\nThere is nothing special about the way this variable \u0027nid\u0027 is used in\nthis routine to justify using an unusual type here.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: \"Yinghai Lu\" \u003cyhlu.kernel@gmail.com\u003e\nCc: \"Jack Steiner\" \u003csteiner@sgi.com\u003e\nCc: \"Mike Travis\" \u003ctravis@sgi.com\u003e\nCc: \"Huang\nCc: Ying\" \u003cying.huang@intel.com\u003e\nCc: \"Andi Kleen\" \u003candi@firstfloor.org\u003e\nCc: \"Andrew Morton\" \u003cakpm@linux-foundation.org\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e2fc252e0ce695b4c4abe27bb073c35bd0d73252",
      "tree": "53875bf55b7221d65d568bfad1c4568b2c732d04",
      "parents": [
        "c4ba1320b7075e9ce33ad0afaef43ba13260b4c2"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Sun Jun 22 07:22:12 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 12:51:37 2008 +0200"
      },
      "message": "x86 boot: show pfn addresses in hex not decimal in some kernel info printks\n\nPage frame numbers (the portion of physical addresses above the low\norder page offsets) are displayed in several kernel debug and info\nprints in decimal, not hex.  Decimal addresse are unreadable.  Use hex.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nCc: \"Yinghai Lu\" \u003cyhlu.kernel@gmail.com\u003e\nCc: \"Jack Steiner\" \u003csteiner@sgi.com\u003e\nCc: \"Mike Travis\" \u003ctravis@sgi.com\u003e\nCc: \"Huang\nCc: Ying\" \u003cying.huang@intel.com\u003e\nCc: \"Andi Kleen\" \u003candi@firstfloor.org\u003e\nCc: \"Andrew Morton\" \u003cakpm@linux-foundation.org\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d52d53b8a5b258bfaab9223a5e7284fcfdd48577",
      "tree": "8871bb322bdb1b31546eaa130e0017a588bbceab",
      "parents": [
        "1ea598c29748a559a0086a84a016886d786e6272"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Mon Jun 16 20:10:55 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 12:48:27 2008 +0200"
      },
      "message": "RFC x86: try to remove arch_get_ram_range\n\nwant to remove arch_get_ram_range, and use early_node_map instead.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3de352bbd86f890dd0c5e1c09a6a1b0b29e0f8ce",
      "tree": "d4c5eba8cd2abefd7c9f16d089393f0f5999cf63",
      "parents": [
        "1b8ba39a3fad9c58532f6dad12c94d6e675be656",
        "9340e1ccdf7b9b22a2be7f51cd74e8b5e11961bf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 11:14:58 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 11:14:58 2008 +0200"
      },
      "message": "Merge branch \u0027x86/mpparse\u0027 into x86/devel\n\nConflicts:\n\n\tarch/x86/Kconfig\n\tarch/x86/kernel/io_apic_32.c\n\tarch/x86/kernel/setup_64.c\n\tarch/x86/mm/init_32.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b5bc6c0e55000dab86b73f838f5ad02908b23755",
      "tree": "4895117f5e69ed8648f102dccc895c80c14fbae5",
      "parents": [
        "d0be6bdea103b8d04c8a3495538b7c0011ae4129"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sat Jun 14 18:32:52 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:37:25 2008 +0200"
      },
      "message": "x86, mm: use add_highpages_with_active_regions() for high pages init v2\n\nuse early_node_map to init high pages, so we can remove page_is_ram() and\npage_is_reserved_early() in the big loop with add_one_highpage\n\nalso remove page_is_reserved_early(), it is not needed anymore.\n\nv2: fix the build of other platforms\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cc1050bafebfb1d7935331282e948b5016318192",
      "tree": "7e9e6935ed4a18afb63dedbcd808657c683265f5",
      "parents": [
        "d2dbf343329dc777d77488743465f7be4245971d"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Fri Jun 13 19:08:52 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:36:29 2008 +0200"
      },
      "message": "x86: replace shrink_active_range() with remove_active_range()\n\nin case we have kva before ramdisk on a node, we still need to use\nthose ranges.\n\nv2: reserve_early kva ram area, in case there are holes in highmem, to avoid\n    those area could be treat as free high pages.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "896395c290f902576270d84291c1f7f8bfbe339d",
      "tree": "650114bff3a5f808ee1d713ecc443b0eaab2e1c3",
      "parents": [
        "af1cf204ba2fd8135933a2e4df523fb1112dc0e2",
        "1b40a895df6c7d5a80e71f65674060b03d84bbef"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:32:56 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 10:32:56 2008 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tmp.x86.mpparse.new\n"
    },
    {
      "commit": "6924d1ab8b7bbe5ab416713f5701b3316b2df85b",
      "tree": "affbf0ff13f7522336f25505e8e7b5f12a34e705",
      "parents": [
        "4e78c91abe1a40b905611100a593be62784ba355",
        "25556c1699ad84dd6077adf67c92eba362aa7dc2",
        "b764a15f679942a7bc9d4f9645299e1defcc5b43",
        "437a0a54eea7b101e8a5b70688009956f6522ed0",
        "41b3eae669fb1ef6ae4acaa937b4e4617a1aa078",
        "84e65b0a84a2c856bef36f13d122047678408b0a",
        "684eb0163a98bc329193b4aa4535cdd705a5dd58",
        "93022136fff9e6130aa128a5ed8a599e93ac813c",
        "5cb04df8d3f03e37a19f2502591a84156be71772",
        "44974c8fc1d7047abe414562e0782320f4c1f511",
        "48cf937f48f68bd1e61f37c6357dbff5adb95532",
        "205f93288093df69f9ab5f6981aef27b91088b28",
        "c54f9da1c8ceee19436430afac0798a989eb886d",
        "0ed368c71aa65cba8d349432bd4dab4a9a2eb39c",
        "b478458aeebfc55fe409abec43794ac72a623c79",
        "2d144e63098be47c21ad59d68a4fd17bd73a3aaf",
        "607baf1f4ef94637ab0f7d0e258932851dc5c0a2",
        "33af9039cbf629041da2bfa0cf451208391a1ec3",
        "3557b18fcbe0e29706214f3c7cc680a7823605eb",
        "63687a528c39a67c1a213cdffa09feb0e6af9dbe",
        "009b9fc98ddd83f9139fdabb12c0d7a8535d5421",
        "f6477cc76c73833a56e97f1fafc36a7ca92927e5",
        "e6b0edef3453677b13e175a104a83eb36d062dd3",
        "400d34944c4ad82a817c06e570bc93b1114aa596"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 09:16:56 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jul 08 09:16:56 2008 +0200"
      },
      "message": "Merge branches \u0027x86/numa-fixes\u0027, \u0027x86/apic\u0027, \u0027x86/apm\u0027, \u0027x86/bitops\u0027, \u0027x86/build\u0027, \u0027x86/cleanups\u0027, \u0027x86/cpa\u0027, \u0027x86/cpu\u0027, \u0027x86/defconfig\u0027, \u0027x86/gart\u0027, \u0027x86/i8259\u0027, \u0027x86/intel\u0027, \u0027x86/irqstats\u0027, \u0027x86/kconfig\u0027, \u0027x86/ldt\u0027, \u0027x86/mce\u0027, \u0027x86/memtest\u0027, \u0027x86/pat\u0027, \u0027x86/ptemask\u0027, \u0027x86/resumetrace\u0027, \u0027x86/threadinfo\u0027, \u0027x86/timers\u0027, \u0027x86/vdso\u0027 and \u0027x86/xen\u0027 into x86/devel\n"
    },
    {
      "commit": "d79df630f622806c4d0e116fbaf6ebf6baf53461",
      "tree": "d5a1c06209210c84ec60099687e4a87723ae1599",
      "parents": [
        "b8a0b6ccf2ba2519ace65d782b41ee91bf3c3778"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Fri Jul 04 12:24:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 13:03:05 2008 -0700"
      },
      "message": "mempolicy: mask off internal flags for userspace API\n\nFlags considered internal to the mempolicy kernel code are stored as part\nof the \"flags\" member of struct mempolicy.\n\nBefore exposing a policy type to userspace via get_mempolicy(), these\ninternal flags must be masked.  Flags exposed to userspace, however,\nshould still be returned to the user.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a36a752d006f6874049da510297eeb7f09d92a7",
      "tree": "764d02c44b95e34deb9cd3ed9d7bdc03c35ef172",
      "parents": [
        "7ca796f492a11f9408e661c8f22cd8c4f486b8e5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Fri Jul 04 09:59:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 10:40:04 2008 -0700"
      },
      "message": "get_user_pages(): fix possible page leak on oom\n\nget_user_pages() must not return the error when i !\u003d 0.  When pages !\u003d\nNULL we have i get_page()\u0027ed pages.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "251b97f552b1ad414cc5a9ccc8e4e94503edd5fc",
      "tree": "5d7559154edb8eb2069f39b6be99ffc2484580cd",
      "parents": [
        "cde53535991fbb5c34a1566f25955297c1487b8d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 04 09:59:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 10:40:04 2008 -0700"
      },
      "message": "mm: dirty page accounting vs VM_MIXEDMAP\n\nDirty page accounting accurately measures the amound of dirty pages in\nwritable shared mappings by mapping the pages RO (as indicated by\nvma_wants_writenotify).  We then trap on first write and call\nset_page_dirty() on the page, after which we map the page RW and\ncontinue execution.\n\nWhen we launder dirty pages, we call clear_page_dirty_for_io() which\nclears both the dirty flag, and maps the page RO again before we start\nwriteout so that the story can repeat itself.\n\nvma_wants_writenotify() excludes VM_PFNMAP on the basis that we cannot\ndo the regular dirty page stuff on raw PFNs and the memory isn\u0027t going\nanywhere anyway.\n\nThe recently introduced VM_MIXEDMAP mixes both !pfn_valid() and\npfn_valid() pages in a single mapping.\n\nWe can\u0027t do dirty page accounting on !pfn_valid() pages as stated\nabove, and mapping them RO causes them to be COW\u0027ed on write, which\nbreaks VM_SHARED semantics.\n\nExcluding VM_MIXEDMAP in vma_wants_writenotify() would mean we don\u0027t do\nthe regular dirty page accounting for the pfn_valid() pages, which\nwould bring back all the head-aches from inaccurate dirty page\naccounting.\n\nSo instead, we let the !pfn_valid() pages get mapped RO, but fix them\nup unconditionally in the fault path.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Jared Hulbert\" \u003cjaredeh@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": "cde53535991fbb5c34a1566f25955297c1487b8d",
      "tree": "4f87e67b52c8761cfc421a619379263733b91159",
      "parents": [
        "a926c063738f31c8c8b5c2b883812a40e7868072"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jul 04 09:59:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 10:40:04 2008 -0700"
      },
      "message": "Christoph has moved\n\nRemove all clameter@sgi.com addresses from the kernel tree since they will\nbecome invalid on June 27th.  Change my maintainer email address for the\nslab allocators to cl@linux-foundation.org (which will be the new email\naddress for the future).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\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": "3ea9eed49346eb80f17f1c6539c47dc508be1173",
      "tree": "a3e82cc6e3deded667a7eda071894c1ddf079db7",
      "parents": [
        "852bb9f594e0ea737f83487962a040ad210e8a13",
        "41d54d3bf83f62d3ff5948cb788fe6007e66a0d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 09:48:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 04 09:48:21 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: Do not use 192 byte sized cache if minimum alignment is 128 byte\n"
    },
    {
      "commit": "494de90098784b8e2797598cefdd34188884ec2e",
      "tree": "cef8c0655f85ed64bb7426df3eeb794c2cf27580",
      "parents": [
        "c461a973118346d5c103aaaddd62e53939fd7c67"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jul 03 05:27:51 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 03 09:22:59 2008 -0700"
      },
      "message": "Do not overwrite nr_zones on !NUMA when initialising zlcache_ptr\n\nThe non-NUMA case of build_zonelist_cache() would initialize the\nzlcache_ptr for both node_zonelists[] to NULL.\n\nWhich is problematic, since non-NUMA only has a single node_zonelists[]\nentry, and trying to zero the non-existent second one just overwrote the\nnr_zones field instead.\n\nAs kswapd uses this value to determine what reclaim work is necessary,\nthe result is that kswapd never reclaims.  This causes processes to\nstall frequently in low-memory situations as they always direct reclaim.\nThis patch initialises zlcache_ptr correctly.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n[ Simplified patch a bit ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "41d54d3bf83f62d3ff5948cb788fe6007e66a0d0",
      "tree": "7aef950af184b3f9b406127415be1f0b52bca8c7",
      "parents": [
        "481c5346d0981940ee63037eb53e4e37b0735c10"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Thu Jul 03 09:14:26 2008 -0500"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Jul 03 19:01:55 2008 +0300"
      },
      "message": "slub: Do not use 192 byte sized cache if minimum alignment is 128 byte\n\nThe 192 byte cache is not necessary if we have a basic alignment of 128\nbyte. If it would be used then the 192 would be aligned to the next 128 byte\nboundary which would result in another 256 byte cache. Two 256 kmalloc caches\ncause sysfs to complain about a duplicate entry.\n\nMIPS needs 128 byte aligned kmalloc caches and spits out warnings on boot without\nthis patch.\n\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "1ea0704e0da65b2b46f9142ff1391163aac24060",
      "tree": "420215f0876bc9cf3da5a21e5c5904611f821faa",
      "parents": [
        "d02859ecb321c8c0f74cb9bbe3f51a59e58822b0"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Mon Jun 16 04:30:00 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 25 15:15:53 2008 +0200"
      },
      "message": "mm: add a ptep_modify_prot transaction abstraction\n\nThis patch adds an API for doing read-modify-write updates to a pte\u0027s\nprotection bits which may race against hardware updates to the pte.\nAfter reading the pte, the hardware may asynchonously set the accessed\nor dirty bits on a pte, which would be lost when writing back the\nmodified pte value.\n\nThe existing technique to handle this race is to use\nptep_get_and_clear() atomically fetch the old pte value and clear it\nin memory.  This has the effect of marking the pte as non-present,\nwhich will prevent the hardware from updating its state.  When the new\nvalue is written back, the pte will be present again, and the hardware\ncan resume updating the access/dirty flags.\n\nWhen running in a virtualized environment, pagetable updates are\nrelatively expensive, since they generally involve some trap into the\nhypervisor.  To mitigate the cost of these updates, we tend to batch\nthem.\n\nHowever, because of the atomic nature of ptep_get_and_clear(), it is\ninherently non-batchable.  This new interface allows batching by\ngiving the underlying implementation enough information to open a\ntransaction between the read and write phases:\n\nptep_modify_prot_start() returns the current pte value, and puts the\n  pte entry into a state where either the hardware will not update the\n  pte, or if it does, the updates will be preserved on commit.\n\nptep_modify_prot_commit() writes back the updated pte, makes sure that\n  any hardware updates made since ptep_modify_prot_start() are\n  preserved.\n\nptep_modify_prot_start() and _commit() must be exactly paired, and\nused while holding the appropriate pte lock.  They do not protect\nagainst other software updates of the pte in any way.\n\nThe current implementations of ptep_modify_prot_start and _commit are\nfunctionally unchanged from before: _start() uses ptep_get_and_clear()\nfetch the pte and zero the entry, preventing any hardware updates.\n_commit() simply writes the new pte value back knowing that the\nhardware has not updated the pte in the meantime.\n\nThe only current user of this interface is mprotect\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "945754a1754f9d4c2974a8241ad4f92fad7f3a6a",
      "tree": "d310dc918d8094a1a6e00e15b24f7953616d7a82",
      "parents": [
        "672ca28e300c17bf8d792a2a7a8631193e580c74"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Jun 23 14:30:30 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 23 11:28:32 2008 -0700"
      },
      "message": "mm: fix race in COW logic\n\nThere is a race in the COW logic.  It contains a shortcut to avoid the\nCOW and reuse the page if we have the sole reference on the page,\nhowever it is possible to have two racing do_wp_page()ers with one\ncausing the other to mistakenly believe it is safe to take the shortcut\nwhen it is not.  This could lead to data corruption.\n\nProcess 1 and process2 each have a wp pte of the same anon page (ie.\none forked the other).  The page\u0027s mapcount is 2.  Then they both\nattempt to write to it around the same time...\n\n  proc1\t\t\t\tproc2 thr1\t\t\tproc2 thr2\n  CPU0\t\t\t\tCPU1\t\t\t\tCPU3\n  do_wp_page()\t\t\tdo_wp_page()\n\t\t\t\t trylock_page()\n\t\t\t\t  can_share_swap_page()\n\t\t\t\t   load page mapcount (\u003d\u003d2)\n\t\t\t\t  reuse \u003d 0\n\t\t\t\t pte unlock\n\t\t\t\t copy page to new_page\n\t\t\t\t pte lock\n\t\t\t\t page_remove_rmap(page);\n   trylock_page()\n    can_share_swap_page()\n     load page mapcount (\u003d\u003d1)\n    reuse \u003d 1\n   ptep_set_access_flags (allow W)\n\n  write private key into page\n\t\t\t\t\t\t\t\tread from page\n\t\t\t\tptep_clear_flush()\n\t\t\t\tset_pte_at(pte of new_page)\n\nFix this by moving the page_remove_rmap of the old page after the pte\nclear and flush.  Potentially the entire branch could be moved down\nhere, but in order to stay consistent, I won\u0027t (should probably move all\nthe *_mm_counter stuff with one patch).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "672ca28e300c17bf8d792a2a7a8631193e580c74",
      "tree": "73b414f017d15cd404528e2fdd555a93bdb69b61",
      "parents": [
        "96a331b1d6426726c37242ddbe939ee14b255790"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 23 11:21:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 23 11:21:37 2008 -0700"
      },
      "message": "Fix ZERO_PAGE breakage with vmware\n\nCommit 89f5b7da2a6bad2e84670422ab8192382a5aeb9f (\"Reinstate ZERO_PAGE\noptimization in \u0027get_user_pages()\u0027 and fix XIP\") broke vmware, as\nreported by Jeff Chua:\n\n  \"This broke vmware 6.0.4.\n   Jun 22 14:53:03.845: vmx| NOT_IMPLEMENTED\n   /build/mts/release/bora-93057/bora/vmx/main/vmmonPosix.c:774\"\n\nand the reason seems to be that there\u0027s an old bug in how we handle do\nFOLL_ANON on VM_SHARED areas in get_user_pages(), but since it only\ntriggered if the whole page table was missing, nobody had apparently hit\nit before.\n\nThe recent changes to \u0027follow_page()\u0027 made the FOLL_ANON logic trigger\nnot just for whole missing page tables, but for individual pages as\nwell, and exposed this problem.\n\nThis fixes it by making the test for when FOLL_ANON is used more\ncareful, and also makes the code easier to read and understand by moving\nthe logic to a separate inline function.\n\nReported-and-tested-by: Jeff Chua \u003cjeff.chua.linux@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "481c5346d0981940ee63037eb53e4e37b0735c10",
      "tree": "3fcae626ec4e1d4e698008671cfd62d794992ac5",
      "parents": [
        "62a8efe632be1815b544845db643f1fcd9afcfb0"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sat Jun 21 16:46:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 21 16:51:02 2008 -0700"
      },
      "message": "Slab: Fix memory leak in fallback_alloc()\n\nThe zonelist patches caused the loop that checks for available\nobjects in permitted zones to not terminate immediately. One object\nper zone per allocation may be allocated and then abandoned.\n\nBreak the loop when we have successfully allocated one object.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71c2742f5e6348d76ee62085cf0a13e5eff0f00e",
      "tree": "44020f575319903e3ef18665baec360b6ea1c98d",
      "parents": [
        "a19214430d27a3af6f1672ec26f3c893ef899ede"
      ],
      "author": {
        "name": "Bernhard Walle",
        "email": "bwalle@suse.de",
        "time": "Sat Jun 21 19:01:02 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jun 21 11:25:10 2008 -0700"
      },
      "message": "Add return value to reserve_bootmem_node()\n\nThis patch changes the function reserve_bootmem_node() from void to int,\nreturning -ENOMEM if the allocation fails.\n\nThis fixes a build problem on x86 with CONFIG_KEXEC\u003dy and\nCONFIG_NEED_MULTIPLE_NODES\u003dy\n\nSigned-off-by: Bernhard Walle \u003cbwalle@suse.de\u003e\nReported-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "89f5b7da2a6bad2e84670422ab8192382a5aeb9f",
      "tree": "4f55cf9ef8a76d4b9a960e1b443ed015e63e713f",
      "parents": [
        "9bedbcb207ed9a571b239231d99c8fd4a34ae24d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 20 11:18:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 20 11:18:25 2008 -0700"
      },
      "message": "Reinstate ZERO_PAGE optimization in \u0027get_user_pages()\u0027 and fix XIP\n\nKAMEZAWA Hiroyuki and Oleg Nesterov point out that since the commit\n557ed1fa2620dc119adb86b34c614e152a629a80 (\"remove ZERO_PAGE\") removed\nthe ZERO_PAGE from the VM mappings, any users of get_user_pages() will\ngenerally now populate the VM with real empty pages needlessly.\n\nWe used to get the ZERO_PAGE when we did the \"handle_mm_fault()\", but\nsince fault handling no longer uses ZERO_PAGE for new anonymous pages,\nwe now need to handle that special case in follow_page() instead.\n\nIn particular, the removal of ZERO_PAGE effectively removed the core\nfile writing optimization where we would skip writing pages that had not\nbeen populated at all, and increased memory pressure a lot by allocating\nall those useless newly zeroed pages.\n\nThis reinstates the optimization by making the unmapped PTE case the\nsame as for a non-existent page table, which already did this correctly.\n\nWhile at it, this also fixes the XIP case for follow_page(), where the\ncaller could not differentiate between the case of a page that simply\ncould not be used (because it had no \"struct page\" associated with it)\nand a page that just wasn\u0027t mapped.\n\nWe do that by simply returning an error pointer for pages that could not\nbe turned into a \"struct page *\".  The error is arbitrarily picked to be\nEFAULT, since that was what get_user_pages() already used for the\nequivalent IO-mapped page case.\n\n[ Also removed an impossible test for pte_offset_map_lock() failing:\n  that\u0027s not how that function works ]\n\nAcked-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2165009bdf63f79716a36ad545df14c3cdf958b7",
      "tree": "83d1735f2104b6b5158be56a362856ac1079861d",
      "parents": [
        "cfc53f65f56f9f33c0cf522124045ac5a64076b3"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "dave@linux.vnet.ibm.com",
        "time": "Thu Jun 12 15:21:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 12 18:05:41 2008 -0700"
      },
      "message": "pagemap: pass mm into pagewalkers\n\nWe need this at least for huge page detection for now, because powerpc\nneeds the vm_area_struct to be able to determine whether a virtual address\nis referring to a huge page (its pmd_huge() doesn\u0027t work).\n\nIt might also come in handy for some of the other users.\n\nSigned-off-by: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nAcked-by: 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": "c700be3d1320d2be4f04c8a5330186b7df724438",
      "tree": "f6f44d9fc37462ecc7ae7bac6b26c3da9ac29964",
      "parents": [
        "df0bcab2c66ac876d5e80864fca5cce944a44540"
      ],
      "author": {
        "name": "kosaki.motohiro@jp.fujitsu.com",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Jun 12 15:21:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 12 18:05:39 2008 -0700"
      },
      "message": "mm: fix incorrect variable type in do_try_to_free_pages()\n\n\"Smarter retry of costly-order allocations\" patch series change behaver of\ndo_try_to_free_pages().  But unfortunately ret variable type was\nunchanged.\n\nThus an overflow is possible.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a1603be58f11edb1b30cb1e40cfbdd4439289d0",
      "tree": "822e2711385da42bd3b53472b74ee99963913915",
      "parents": [
        "f969c5672b16b857e5231ad3c78f08d8ef3305aa"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Jun 12 16:29:55 2008 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 12 07:56:17 2008 -0700"
      },
      "message": "nommu: Correct kobjsize() page validity checks.\n\nThis implements a few changes on top of the recent kobjsize() refactoring\nintroduced by commit 6cfd53fc03670c7a544a56d441eb1a6cc800d72b.\n\nAs Christoph points out:\n\n\tvirt_to_head_page cannot return NULL. virt_to_page also\n\tdoes not return NULL. pfn_valid() needs to be used to\n\tfigure out if a page is valid.  Otherwise the page struct\n\treference that was returned may have PageReserved() set\n\tto indicate that it is not a valid page.\n\nAs discussed further in the thread, virt_addr_valid() is the preferable\nway to validate the object pointer in this case. In addition to fixing\nup the reserved page case, it also has the benefit of encapsulating the\nhack introduced by commit 4016a1390d07f15b267eecb20e76a48fd5c524ef on\nthe impacted platforms, allowing us to get rid of the extra checking in\nkobjsize() for the platforms that don\u0027t perform this type of bizarre\nmemory_end abuse (every nommu platform that isn\u0027t blackfin). If blackfin\ndecides to get in line with every other platform and use PageReserved\nfor the DMA pages in question, kobjsize() will also continue to work\nfine.\n\nIt also turns out that compound_order() will give us back 0-order for\nnon-head pages, so we can get rid of the PageCompound check and just\nuse compound_order() directly. Clean that up while we\u0027re at it.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc1a9d86ce989083703c4bdc11b75a87e1cc404a",
      "tree": "ee2b58df708b291f4a20311508cb26438647f82f",
      "parents": [
        "db3660c1905293b91653e07f7857576df71ebf28"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sun Jun 08 19:39:16 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 11:31:44 2008 +0200"
      },
      "message": "mm, x86: shrink_active_range() should check all\n\nNow we are using register_e820_active_regions() instead of\nadd_active_range() directly. So end_pfn could be different between the\nvalue in early_node_map to node_end_pfn.\n\nSo we need to make shrink_active_range() smarter.\n\nshrink_active_range() is a generic MM function in mm/page_alloc.c but\nit is only used on 32-bit x86. Should we move it back to some file in\narch/x86?\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dfa7e20cc0d1a7a620def4dce97de1ae5375f99b",
      "tree": "0e197e502fc884e9de2bc49d3d9cdbee9e7bc3c4",
      "parents": [
        "d5791d13b1d45542895104edf4b09476d5ad24b0"
      ],
      "author": {
        "name": "Russ Anderson",
        "email": "rja@sgi.com",
        "time": "Mon Jun 09 11:18:45 2008 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 09 10:22:24 2008 -0700"
      },
      "message": "mm: Minor clean-up of page flags in mm/page_alloc.c\n\nMinor source code cleanup of page flags in mm/page_alloc.c.\nMove the definition of the groups of bits to page-flags.h.\n\nThe purpose of this clean up is that the next patch will\nconditionally add a page flag to the groups.  Doing that\nin a header file is cleaner than adding #ifdefs to the\nC code.\n\nSigned-off-by: Russ Anderson \u003crja@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6cfd53fc03670c7a544a56d441eb1a6cc800d72b",
      "tree": "806badd9dc55ff81822694037ff10425b99eacaa",
      "parents": [
        "6f09bdfc717a0e1a89a029001484d5a195faab64"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Jun 05 22:46:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:09 2008 -0700"
      },
      "message": "nommu: fix kobjsize() for SLOB and SLUB\n\nkobjsize() has been abusing page-\u003eindex as a method for sorting out\ncompound order, which blows up both for page cache pages, and SLOB\u0027s\nreuse of the index in struct slob_page.\n\nPresently we are not able to accurately size arbitrary pointers that\ndon\u0027t come from kmalloc(), so the best we can do is sort out the\ncompound order from the head page if it\u0027s a compound page, or default\nto 0-order if it\u0027s impossible to ksize() the object.\n\nObviously this leaves quite a bit to be desired in terms of object\nsizing accuracy, but the behaviour is unchanged over the existing\nimplementation, while fixing the page-\u003eindex oopses originally reported\nhere:\n\n\thttp://marc.info/?l\u003dlinux-mm\u0026m\u003d121127773325245\u0026w\u003d2\n\nAccuracy could also be improved by having SLUB and SLOB both set PG_slab\non ksizeable pages, rather than just handling the __GFP_COMP cases\nirregardless of the PG_slab setting, as made possibly with Pekka\u0027s\npatches:\n\n\thttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d121139439900534\u0026w\u003d2\n\thttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d121139440000537\u0026w\u003d2\n\thttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d121139440000540\u0026w\u003d2\n\nThis is primarily a bugfix for nommu systems for 2.6.26, with the aim\nbeing to gradually kill off kobjsize() and its particular brand of\nobject abuse entirely.\n\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: 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": "a5b4592cf77b973c29e7c9695873a26052b58951",
      "tree": "9f2af3014d5d41ddc22d7aa2793b871ee15297d8",
      "parents": [
        "33dda515a1995dfb3b6b57d7ace9b3ee9d449c11"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Jun 05 22:46:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:09 2008 -0700"
      },
      "message": "brk: make sys_brk() honor COMPAT_BRK when computing lower bound\n\nFix a regression introduced by\n\ncommit 4cc6028d4040f95cdb590a87db478b42b8be0508\nAuthor: Jiri Kosina \u003cjkosina@suse.cz\u003e\nDate:   Wed Feb 6 22:39:44 2008 +0100\n\n    brk: check the lower bound properly\n\nThe check in sys_brk() on minimum value the brk might have must take\nCONFIG_COMPAT_BRK setting into account.  When this option is turned on\n(i.e.  we support ancient legacy binaries, e.g.  libc5-linked stuff), the\nlower bound on brk value is mm-\u003eend_code, otherwise the brk start is\nallowed to be arbitrarily shifted.\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nTested-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: \u003cstable@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": "4647875819aa210115d926242aa18e034517cece",
      "tree": "585c9743038dc7a8ac8651ea316d2e6ff0c0e274",
      "parents": [
        "e2d4ecafd24d6eee4ae6bdbede0cfd0e78423a33"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jun 05 22:45:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:09 2008 -0700"
      },
      "message": "hugetlb: fix lockdep error\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible recursive locking detected ]\n2.6.26-rc4 #30\n---------------------------------------------\nheap-overflow/2250 is trying to acquire lock:\n (\u0026mm-\u003epage_table_lock){--..}, at: [\u003cc0000000000cf2e8\u003e] .copy_hugetlb_page_range+0x108/0x280\n\nbut task is already holding lock:\n (\u0026mm-\u003epage_table_lock){--..}, at: [\u003cc0000000000cf2dc\u003e] .copy_hugetlb_page_range+0xfc/0x280\n\nother info that might help us debug this:\n3 locks held by heap-overflow/2250:\n #0:  (\u0026mm-\u003emmap_sem){----}, at: [\u003cc000000000050e44\u003e] .dup_mm+0x134/0x410\n #1:  (\u0026mm-\u003emmap_sem/1){--..}, at: [\u003cc000000000050e54\u003e] .dup_mm+0x144/0x410\n #2:  (\u0026mm-\u003epage_table_lock){--..}, at: [\u003cc0000000000cf2dc\u003e] .copy_hugetlb_page_range+0xfc/0x280\n\nstack backtrace:\nCall Trace:\n[c00000003b2774e0] [c000000000010ce4] .show_stack+0x74/0x1f0 (unreliable)\n[c00000003b2775a0] [c0000000003f10e0] .dump_stack+0x20/0x34\n[c00000003b277620] [c0000000000889bc] .__lock_acquire+0xaac/0x1080\n[c00000003b277740] [c000000000089000] .lock_acquire+0x70/0xb0\n[c00000003b2777d0] [c0000000003ee15c] ._spin_lock+0x4c/0x80\n[c00000003b277870] [c0000000000cf2e8] .copy_hugetlb_page_range+0x108/0x280\n[c00000003b277950] [c0000000000bcaa8] .copy_page_range+0x558/0x790\n[c00000003b277ac0] [c000000000050fe0] .dup_mm+0x2d0/0x410\n[c00000003b277ba0] [c000000000051d24] .copy_process+0xb94/0x1020\n[c00000003b277ca0] [c000000000052244] .do_fork+0x94/0x310\n[c00000003b277db0] [c000000000011240] .sys_clone+0x60/0x80\n[c00000003b277e30] [c0000000000078c4] .ppc_clone+0x8/0xc\n\nFix is the same way that mm/memory.c copy_page_range does the\nlockdep annotation.\n\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8c27ac9191ab9e6506ae5cbe70d87ac50f8e960",
      "tree": "2495cf0575b34b69210eca62c91224b474cf5092",
      "parents": [
        "0596152388e234efebce464355186ad9e16c8cb6"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sun Jun 01 13:15:22 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 03 13:26:26 2008 +0200"
      },
      "message": "x86, numa, 32-bit: print out debug info on all kvas\n\nalso fix the print out of node_remap_end_vaddr\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1434b65731963207a4cc84bd87e6191e34321986",
      "tree": "07f58551b451675c2f85ebe88e5feb8971577d78",
      "parents": [
        "4934ed888e6fe78d9d339471fb870819da911e8b",
        "76994412f8e824e79a593d6777ec327d85f942b2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 26 10:21:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 26 10:21:26 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: ksize() abuse checks\n  slob: Fix to return wrong pointer\n"
    },
    {
      "commit": "cd94b9dbfa300fc42e45f230010623fc08d59563",
      "tree": "ad9581e94a635032d74d3905975ebd4c39bed5f2",
      "parents": [
        "7eb54824b76793dd86afb54f182ef9aa64b3a45a"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Fri May 23 13:04:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:12 2008 -0700"
      },
      "message": "memory hotplug: fix early allocation handling\n\nTrying to add memory via add_memory() from within an initcall function\nresults in\n\nbootmem alloc of 163840 bytes failed!\nKernel panic - not syncing: Out of memory\n\nThis is caused by zone_wait_table_init() which uses system_state to decide\nif it should use the bootmem allocator or not.\n\nWhen initcalls are handled the system_state is still SYSTEM_BOOTING but\nthe bootmem allocator doesn\u0027t work anymore.  So the allocation will fail.\n\nTo fix this use slab_is_available() instead as indicator like we do it\neverywhere else.\n\n[akpm@linux-foundation.org: coding-style fix]\nReviewed-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7eb54824b76793dd86afb54f182ef9aa64b3a45a",
      "tree": "400753c14099e9ecbba9ab4665b4c1badd180839",
      "parents": [
        "03a74dcc7eebe6edd778317e82fafdf71e68488c"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Fri May 23 13:04:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:11 2008 -0700"
      },
      "message": "zonelists: handle a node zonelist with no applicable entries\n\nWhen booting 2.6.26-rc3 on a multi-node x86_32 numa system we are seeing\npanics when trying node local allocations:\n\n BUG: unable to handle kernel NULL pointer dereference at 0000034c\n IP: [\u003cc1042507\u003e] get_page_from_freelist+0x4a/0x18e\n *pdpt \u003d 00000000013a7001 *pde \u003d 0000000000000000\n Oops: 0000 [#1] SMP\n Modules linked in:\n\n Pid: 0, comm: swapper Not tainted (2.6.26-rc3-00003-g5abc28d #82)\n EIP: 0060:[\u003cc1042507\u003e] EFLAGS: 00010282 CPU: 0\n EIP is at get_page_from_freelist+0x4a/0x18e\n EAX: c1371ed8 EBX: 00000000 ECX: 00000000 EDX: 00000000\n ESI: f7801180 EDI: 00000000 EBP: 00000000 ESP: c1371ec0\n  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068\n Process swapper (pid: 0, ti\u003dc1370000 task\u003dc12f5b40 task.ti\u003dc1370000)\n Stack: 00000000 00000000 00000000 00000000 000612d0 000412d0 00000000 000412d0\n        f7801180 f7c0101c f7c01018 c10426e4 f7c01018 00000001 00000044 00000000\n        00000001 c12f5b40 00000001 00000010 00000000 000412d0 00000286 000412d0\n Call Trace:\n  [\u003cc10426e4\u003e] __alloc_pages_internal+0x99/0x378\n  [\u003cc10429ca\u003e] __alloc_pages+0x7/0x9\n  [\u003cc105e0e8\u003e] kmem_getpages+0x66/0xef\n  [\u003cc105ec55\u003e] cache_grow+0x8f/0x123\n  [\u003cc105f117\u003e] ____cache_alloc_node+0xb9/0xe4\n  [\u003cc105f427\u003e] kmem_cache_alloc_node+0x92/0xd2\n  [\u003cc122118c\u003e] setup_cpu_cache+0xaf/0x177\n  [\u003cc105e6ca\u003e] kmem_cache_create+0x2c8/0x353\n  [\u003cc13853af\u003e] kmem_cache_init+0x1ce/0x3ad\n  [\u003cc13755c5\u003e] start_kernel+0x178/0x1ee\n\nThis occurs when we are scanning the zonelists looking for a ZONE_NORMAL\npage.  In this system there is only ZONE_DMA and ZONE_NORMAL memory on\nnode 0, all other nodes are mapped above 4GB physical.  Here is a dump\nof the zonelists from this system:\n\n    zonelists pgdat\u003dc1400000\n     0: c14006c0:2 f7c006c0:2 f7e006c0:2 c1400360:1 c1400000:0\n     1: c14006c0:2 c1400360:1 c1400000:0\n    zonelists pgdat\u003df7c00000\n     0: f7c006c0:2 f7e006c0:2 c14006c0:2 c1400360:1 c1400000:0\n     1: f7c006c0:2\n    zonelists pgdat\u003df7e00000\n     0: f7e006c0:2 c14006c0:2 f7c006c0:2 c1400360:1 c1400000:0\n     1: f7e006c0:2\n\nWhen performing a node local allocation we call get_page_from_freelist()\nlooking for a page.  It in turn calls first_zones_zonelist() which returns\na preferred_zone.  Where there are no applicable zones this will be NULL.\nHowever we use this unconditionally, leading to this panic.\n\nWhere there are no applicable zones there is no possibility of a successful\nallocation, so simply fail the allocation.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\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": "80119ef5c8153e0a6cc5edf00c083dc98a9bd348",
      "tree": "a2af11a3991b1bebe9d764ab6d4d28891e86eda2",
      "parents": [
        "6c7c6afbb8c0e60d32a563cae7c6889211e9d9d8"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Fri May 23 13:04:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "mm: fix atomic_t overflow in vm\n\nThe atomic_t type is 32bit but a 64bit system can have more than 2^32\npages of virtual address space available.  Without this we overflow on\nludicrously large mappings\n\nSigned-off-by: Alan Cox \u003calan@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": "f7232154198f928fc25f420d6190468212a7632a",
      "tree": "3216938f94face00fd6c6094bc8ccb66c2ef3619",
      "parents": [
        "f899b0adc6fc8f60a9db8b52f36f06fd1abeaf7c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Fri May 23 13:04:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:07 2008 -0700"
      },
      "message": "mm: don\u0027t drop a partial page in a zone\u0027s memory map size\n\nIn a zone\u0027s present pages number, account for all pages occupied by the\nmemory map, including a partial.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nCc: 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": "42172d751b4596b8ca4346a1c251b5f1c661ab0c",
      "tree": "f9149aee9349c43bd8e253b407acae920e041d00",
      "parents": [
        "c2448278e3be3a43fe0343e138444742af1e99ae"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri May 23 13:04:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:07 2008 -0700"
      },
      "message": "mm: allow pfnmap -\u003efault()s\n\nTake out an assertion to allow -\u003efault handlers to service PFNMAP regions.\nThis is required to reimplement .nopfn handlers with .fault handlers and\nsubsequently remove nopfn.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Jes Sorensen \u003cjes@sgi.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76994412f8e824e79a593d6777ec327d85f942b2",
      "tree": "9acd5883a43daf1bf21ab23608915c1181fd2008",
      "parents": [
        "239f49c0800778c863585a103805c58afbad6748"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu May 22 19:22:25 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu May 22 19:52:18 2008 +0300"
      },
      "message": "slub: ksize() abuse checks\n\nAdd a WARN_ON for pages that don\u0027t have PageSlab nor PageCompound set to catch\nthe worst abusers of ksize() in the kernel.\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "19051c5035d217e572672a2ca9db06c1cef50e9b",
      "tree": "9fef0047e070c977463a85d5cbd0f9479694d286",
      "parents": [
        "8882b39421bae317e3ee864edd845e994307ce16"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu May 15 13:44:08 2008 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue May 20 13:31:53 2008 -0700"
      },
      "message": "mm: bdi: fix race in bdi_class device creation\n\nThere is a race from when a device is created with device_create() and\nthen the drvdata is set with a call to dev_set_drvdata() in which a\nsysfs file could be open, yet the drvdata will be NULL, causing all\nsorts of bad things to happen.\n\nThis patch fixes the problem by using the new function,\ndevice_create_vargs().\n\nMany thanks to Arthur Jones \u003cajones@riverbed.com\u003e for reporting the bug,\nand testing patches out.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Arthur Jones \u003cajones@riverbed.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "239f49c0800778c863585a103805c58afbad6748",
      "tree": "bc49ae2d4405b4431e6e7463b3eac52245793a02",
      "parents": [
        "f26a3988917913b3d11b2bd741601a2c64ab9204"
      ],
      "author": {
        "name": "MinChan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon May 19 22:12:08 2008 +0900"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon May 19 20:55:25 2008 +0300"
      },
      "message": "slob: Fix to return wrong pointer\n\nAlthough slob_alloc return NULL, __kmalloc_node returns NULL + align.\nBecause align always can be changed, it is very hard for debugging\nproblem of no page if it don\u0027t return NULL.\n\nWe have to return NULL in case of no page.\n\n[penberg@cs.helsinki.fi: fix formatting as suggested by Matt.]\nAcked-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "76cdd58e558669366adfaded436fda01b30cce3e",
      "tree": "deaccb499752c928919693edea65f9ea4c1fe756",
      "parents": [
        "1c12c4cf9411eb130b245fa8d0fbbaf989477c7b"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed May 14 16:05:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:15 2008 -0700"
      },
      "message": "memory_hotplug: always initialize pageblock bitmap\n\nTrying to online a new memory section that was added via memory hotplug\nsometimes results in crashes when the new pages are added via __free_page.\n Reason for that is that the pageblock bitmap isn\u0027t initialized and hence\ncontains random stuff.  That means that get_pageblock_migratetype()\nreturns also random stuff and therefore\n\n\tlist_add(\u0026page-\u003elru,\n\t\t\u0026zone-\u003efree_area[order].free_list[migratetype]);\n\nin __free_one_page() tries to do a list_add to something that isn\u0027t even\nnecessarily a list.\n\nThis happens since 86051ca5eaf5e560113ec7673462804c54284456 (\"mm: fix\nusemap initialization\") which makes sure that the pageblock bitmap gets\nonly initialized for pages present in a zone.  Unfortunately for hot-added\nmemory the zones \"grow\" after the memmap and the pageblock memmap have\nbeen initialized.  Which means that the new pages have an unitialized\nbitmap.  To solve this the calls to grow_zone_span() and grow_pgdat_span()\nare moved to __add_zone() just before the initialization happens.\n\nThe patch also moves the two functions since __add_zone() is the only\ncaller and I didn\u0027t want to add a forward declaration.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: \u003cstable@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": "1c12c4cf9411eb130b245fa8d0fbbaf989477c7b",
      "tree": "f61d58e955b3159007ef77513c1c4f1ed2c9ec23",
      "parents": [
        "44c81433e8b05dbc85985d939046f10f95901184"
      ],
      "author": {
        "name": "Venki Pallipadi",
        "email": "venkatesh.pallipadi@intel.com",
        "time": "Wed May 14 16:05:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:15 2008 -0700"
      },
      "message": "mprotect: prevent alteration of the PAT bits\n\nThere is a defect in mprotect, which lets the user change the page cache\ntype bits by-passing the kernel reserve_memtype and free_memtype\nwrappers.  Fix the problem by not letting mprotect change the PAT bits.\n\nSigned-off-by: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fd8a4221ad76df700ff34875c9fbc42302aa4ba3",
      "tree": "4f37586cef40dca7cc8b630e85965a698e3aa1be",
      "parents": [
        "3fc957721d18c93662f7d4dab455b80f53dd2641"
      ],
      "author": {
        "name": "Geoff Levand",
        "email": "geoffrey.levand@am.sony.com",
        "time": "Wed May 14 16:05:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:14 2008 -0700"
      },
      "message": "memory_hotplug: check for walk_memory_resource() failure in online_pages()\n\nAdd a check to online_pages() to test for failure of\nwalk_memory_resource().  This fixes a condition where a failure\nof walk_memory_resource() can lead to online_pages() returning\nsuccess without the requested pages being onlined.\n\nSigned-off-by: Geoff Levand \u003cgeoffrey.levand@am.sony.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Keith Mannthey \u003ckmannth@us.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3723ca3874a8fc2218c4726d57e3a7da9e83e47",
      "tree": "d7aa49e6ce3d10bcab1a79e3045425dad6906c40",
      "parents": [
        "3b7ec117bf6c98f5a845311c4ca5ca020a3d7689"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed May 14 16:05:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:14 2008 -0700"
      },
      "message": "memory hotplug: memmap_init_zone called twice\n\n__add_zone calls memmap_init_zone twice if memory gets attached to an empty\nzone.  Once via init_currently_empty_zone and once explictly right after that\ncall.\n\nLooks like this is currently not a bug, however the call is superfluous and\nmight lead to subtle bugs if memmap_init_zone gets changed.  So make sure it\nis called only once.\n\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ef0f720e47e895b613b0305eb0a483e3ec11f23",
      "tree": "e696a950d76c90199661515e1068fc00102a15bf",
      "parents": [
        "3b73a223661ed137c5d3d2635f954382e94f5a43"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 14 16:05:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:13 2008 -0700"
      },
      "message": "mm: fix infinite loop in filemap_fault\n\nfilemap_fault will go into an infinite loop if -\u003ereadpage() fails\nasynchronously.\n\nAFAICS the bug was introduced by this commit, which removed the wait after the\nfinal readpage:\n\n   commit d00806b183152af6d24f46f0c33f14162ca1262a\n   Author: Nick Piggin \u003cnpiggin@suse.de\u003e\n   Date:   Thu Jul 19 01:46:57 2007 -0700\n\n       mm: fix fault vs invalidate race for linear mappings\n\nFix by reintroducing the wait_on_page_locked() after -\u003ereadpage() to make sure\nthe page is up-to-date before jumping back to the beginning of the function.\n\nI\u0027ve noticed this while testing nfs exporting on fuse.  The patch\nfixes it.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "362a61ad61199e19a61b8e432015e2586b288f5b",
      "tree": "b766e454928eea0db1ec6e301340c27ef5f5244f",
      "parents": [
        "73f10281ea96d7e8b4fc1c5d755a7c8eb484155b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed May 14 06:37:36 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 10:05:18 2008 -0700"
      },
      "message": "fix SMP data race in pagetable setup vs walking\n\nThere is a possible data race in the page table walking code. After the split\nptlock patches, it actually seems to have been introduced to the core code, but\neven before that I think it would have impacted some architectures (powerpc\nand sparc64, at least, walk the page tables without taking locks eg. see\nfind_linux_pte()).\n\nThe race is as follows:\nThe pte page is allocated, zeroed, and its struct page gets its spinlock\ninitialized. The mm-wide ptl is then taken, and then the pte page is inserted\ninto the pagetables.\n\nAt this point, the spinlock is not guaranteed to have ordered the previous\nstores to initialize the pte page with the subsequent store to put it in the\npage tables. So another Linux page table walker might be walking down (without\nany locks, because we have split-leaf-ptls), and find that new pte we\u0027ve\ninserted. It might try to take the spinlock before the store from the other\nCPU initializes it. And subsequently it might read a pte_t out before stores\nfrom the other CPU have cleared the memory.\n\nThere are also similar races in higher levels of the page tables. They\nobviously don\u0027t involve the spinlock, but could see uninitialized memory.\n\nArch code and hardware pagetable walkers that walk the pagetables without\nlocks could see similar uninitialized memory problems, regardless of whether\nsplit ptes are enabled or not.\n\nI prefer to put the barriers in core code, because that\u0027s where the higher\nlevel logic happens, but the page table accessors are per-arch, and open-coding\nthem everywhere I don\u0027t think is an option. I\u0027ll put the read-side barriers\nin alpha arch code for now (other architectures perform data-dependent loads\nin order).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5aecd559871d23a3cc297e544c9d63f0b8441cf4",
      "tree": "490290335041770d190ad2acab7c1e4570efc36c",
      "parents": [
        "241937b863c8a3ef10511712f53285f41ab05308"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Mon May 12 14:02:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 13 08:02:24 2008 -0700"
      },
      "message": "mm/pdflush.c: merge the same code in two path\n\nSigned-off-by: Denis Cheng \u003ccrquan@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": "b5be11329f8cb2cc1a4c3b33b6b8d096c6012895",
      "tree": "30ccea8a490bbde0e0760274b6eb4c5863971caa",
      "parents": [
        "78f508ab07954d12896097ac07ab2fab443c7ca2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon May 12 14:02:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 13 08:02:23 2008 -0700"
      },
      "message": "make vmstat cpu-unplug safe\n\nWhen accessing cpu_online_map, we should prevent dynamic changing\nof cpu_online_map by get_online_cpus().\n\nUnfortunately, all_vm_events() doesn\u0027t do that.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a34912d90c17a90d9fad12c4c51833b4e70707b",
      "tree": "a3811697f5eba3c5d12216ac76f681420046b219",
      "parents": [
        "0f1bce41fed02e45f31c2409f29e69e1fedebcdc",
        "75065ff619e42fe35178eda863cbcddd57776794"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:48:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:48:36 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  Revert \"relay: fix splice problem\"\n  docbook: fix bio missing parameter\n  block: use unitialized_var() in bio_alloc_bioset()\n  block: avoid duplicate calls to get_part() in disk stat code\n  cfq-iosched: make io priorities inherit CPU scheduling class as well as nice\n  block: optimize generic_unplug_device()\n  block: get rid of likely/unlikely predictions in merge logic\n  vfs: splice remove_suid() cleanup\n  cfq-iosched: fix RCU race in the cfq io_context destructor handling\n  block: adjust tagging function queue bit locking\n  block: sysfs store function needs to grab queue_lock and use queue_flag_*()\n"
    },
    {
      "commit": "4ea33e2dc2dab10960877e1649ee527c033f42c0",
      "tree": "5e66cd116868336d7a0fa3e6da38ebbf3e8d5a32",
      "parents": [
        "ba719baeabbff5476eeb91c223e6921ba29e1490"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Tue May 06 20:42:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:46:56 2008 -0700"
      },
      "message": "slub: fix atomic usage in any_slab_objects()\n\nany_slab_objects() does an atomic_read on an atomic_long_t, this\nfixes it to use atomic_long_read instead.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f3d4ee108c184ab215036051087aaaaa8de7661",
      "tree": "373f4f928f0687ca84478964b43c26e3ec9cec70",
      "parents": [
        "07416d29bcf608257f1e5280642dcbe0021518a3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed May 07 09:22:39 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed May 07 09:29:00 2008 +0200"
      },
      "message": "vfs: splice remove_suid() cleanup\n\ngeneric_file_splice_write() duplicates remove_suid() just because it\ndoesn\u0027t hold i_mutex.  But it grabs i_mutex inside splice_from_pipe()\nanyway, so this is rather pointless.\n\nMove locking to generic_file_splice_write() and call remove_suid() and\n__splice_from_pipe() instead.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "aeed5fce37196e09b4dac3a1c00d8b7122e040ce",
      "tree": "d16a8f824ad06ac5dea6052f1986165a0d7fc865",
      "parents": [
        "bb78be8397d3b0900af3d717672218ee3ea07985"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue May 06 20:49:23 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 06 13:08:58 2008 -0700"
      },
      "message": "x86: fix PAE pmd_bad bootup warning\n\nFix warning from pmd_bad() at bootup on a HIGHMEM64G HIGHPTE x86_32.\n\nThat came from 9fc34113f6880b215cbea4e7017fc818700384c2 x86: debug pmd_bad();\nbut we understand now that the typecasting was wrong for PAE in the previous\nversion: pagetable pages above 4GB looked bad and stopped Arjan from booting.\n\nAnd revert that cded932b75ab0a5f9181ee3da34a0a488d1a14fd x86: fix pmd_bad\nand pud_bad to support huge pages.  It was the wrong way round: we shouldn\u0027t\nweaken every pmd_bad and pud_bad check to let huge pages slip through - in\npart they check that we _don\u0027t_ have a huge page where it\u0027s not expected.\n\nPut the x86 pmd_bad() and pud_bad() definitions back to what they have long\nbeen: they can be improved (x86_32 should use PTE_MASK, to stop PAE thinking\njunk in the upper word is good; and x86_64 should follow x86_32\u0027s stricter\ncomparison, to stop thinking any subset of required bits is good); but that\nshould be a later patch.\n\nFix Hans\u0027 good observation that follow_page() will never find pmd_huge()\nbecause that would have already failed the pmd_bad test: test pmd_huge in\nbetween the pmd_none and pmd_bad tests.  Tighten x86\u0027s pmd_huge() check?\nNo, once it\u0027s a hugepage entry, it can get quite far from a good pmd: for\nexample, PROT_NONE leaves it with only ACCESSED of the KERN_PGTABLE bits.\n\nHowever... though follow_page() contains this and another test for huge\npages, so it\u0027s nice to keep it working on them, where does it actually get\ncalled on a huge page?  get_user_pages() checks is_vm_hugetlb_page(vma) to\nto call alternative hugetlb processing, as does unmap_vmas() and others.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nEarlier-version-tested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Jeff Chua \u003cjeff.chua.linux@gmail.com\u003e\nCc: Hans Rosenfeld \u003chans.rosenfeld@amd.com\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f6acb63508700b5f8cd817082b62c96ba907775e",
      "tree": "0fc0cdd4660fdf186f3becc1b80d743f8d3edbea",
      "parents": [
        "f715e6f15ee167026581a8a2e09b2ed644b974aa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Apr 29 16:16:06 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri May 02 00:27:13 2008 +0300"
      },
      "message": "slub: #ifdef simplification\n\nIf we make SLUB_DEBUG depend on SYSFS then we can simplify some\n#ifdefs and avoid others.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "0121c619d03820d965745e56f80f6eb5994533fe",
      "tree": "75ecdc5dee9c3a6bb64ee095f51cc831be2cd475",
      "parents": [
        "886c35fbcf6fb2eee15687efc2d64d99b6ad9a4a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Apr 29 16:11:12 2008 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri May 02 00:26:31 2008 +0300"
      },
      "message": "slub: Whitespace cleanup and use of strict_strtoul\n\nFix some issues with wrapping and use strict_strtoul to make parameter\npassing from sysfs safer.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "55e462b05b5df4fd113c4a304c4f487d44b0898e",
      "tree": "0d538695cc0611395666194a6326b3ad424a9dc7",
      "parents": [
        "f39e578172f30d3bdd4533465c7ec00db738eb9d"
      ],
      "author": {
        "name": "Balaji Rao",
        "email": "balajirrao@gmail.com",
        "time": "Thu May 01 04:35:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:04:02 2008 -0700"
      },
      "message": "memcg: simple stats for memory resource controller\n\nImplement trivial statistics for the memory resource controller.\n\nSigned-off-by: Balaji Rao \u003cbalajirrao@gmail.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c85d194bfd2e36c5254b8058c1f35cfce0dfa10a",
      "tree": "63c3862e412c4741bf6661f8dc70e91371aea875",
      "parents": [
        "5045790589bd426b5d515d78fa71f0fc92dd4e83"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu May 01 04:34:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:59 2008 -0700"
      },
      "message": "docbook: fix vmalloc missing parameter notation\n\nFix vmalloc kernel-doc warning:\n\nWarning(linux-2.6.25-git14//mm/vmalloc.c:555): No description found for parameter \u0027caller\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8bd2258e2d520dff28c855658bd24bdafb5102d",
      "tree": "d76db1dc858cb316bc7d5b8473f690a753fd2c93",
      "parents": [
        "6f6d6a1a6a1336431a6cba60ace9e97c3a496a19"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Thu May 01 04:34:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 01 08:03:58 2008 -0700"
      },
      "message": "remove div_long_long_rem\n\nx86 is the only arch right now, which provides an optimized for\ndiv_long_long_rem and it has the downside that one has to be very careful that\nthe divide doesn\u0027t overflow.\n\nThe API is a little akward, as the arguments for the unsigned divide are\nsigned.  The signed version also doesn\u0027t handle a negative divisor and\nproduces worse code on 64bit archs.\n\nThere is little incentive to keep this API alive, so this converts the few\nusers to the new API.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5167464446e527b5a3b5618ba0baff93048bcbbe",
      "tree": "798e82ec478d6d6935ae371fc764ae95d86a337d",
      "parents": [
        "3a902c5f6851cd0b64c33efaa3bd57aa27a82efb"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Apr 30 00:55:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:55 2008 -0700"
      },
      "message": "revert \"memory hotplug: allocate usemap on the section with pgdat\"\n\nThis:\n\ncommit 86f6dae1377523689bd8468fed2f2dd180fc0560\nAuthor: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nDate:   Mon Apr 28 02:13:33 2008 -0700\n\n    memory hotplug: allocate usemap on the section with pgdat\n\n    Usemaps are allocated on the section which has pgdat by this.\n\n    Because usemap size is very small, many other sections usemaps are allocated\n    on only one page.  If a section has usemap, it can\u0027t be removed until removing\n    other sections.  This dependency is not desirable for memory removing.\n\n    Pgdat has similar feature.  When a section has pgdat area, it must be the last\n    section for removing on the node.  So, if section A has pgdat and section B\n    has usemap for section A, Both sections can\u0027t be removed due to dependency\n    each other.\n\n    To solve this issue, this patch collects usemap on same section with pgdat.\n    If other sections doesn\u0027t have any dependency, this section will be able to be\n    removed finally.\n\n    Signed-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\n    Cc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\n    Cc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\n    Cc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\n    Signed-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n    Signed-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nbroke davem\u0027s sparc64 bootup.  Revert it while we work out what went wrong.\n\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a902c5f6851cd0b64c33efaa3bd57aa27a82efb",
      "tree": "9803f7bdc847ed8cd5192816d9ca0ee9e310cd60",
      "parents": [
        "969a19f1c405a8e9d15ceb9e75e3f4a321aaf56f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Apr 30 00:55:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:55 2008 -0700"
      },
      "message": "mm: fix warning on memory offline\n\nKAMEZAWA Hiroyuki found a warning message in the buffer dirtying code that\nis coming from page migration caller.\n\nWARNING: at fs/buffer.c:720 __set_page_dirty+0x330/0x360()\nCall Trace:\n [\u003ca000000100015220\u003e] show_stack+0x80/0xa0\n [\u003ca000000100015270\u003e] dump_stack+0x30/0x60\n [\u003ca000000100089ed0\u003e] warn_on_slowpath+0x90/0xe0\n [\u003ca0000001001f8b10\u003e] __set_page_dirty+0x330/0x360\n [\u003ca0000001001ffb90\u003e] __set_page_dirty_buffers+0xd0/0x280\n [\u003ca00000010012fec0\u003e] set_page_dirty+0xc0/0x260\n [\u003ca000000100195670\u003e] migrate_page_copy+0x5d0/0x5e0\n [\u003ca000000100197840\u003e] buffer_migrate_page+0x2e0/0x3c0\n [\u003ca000000100195eb0\u003e] migrate_pages+0x770/0xe00\n\nWhat was happening is that migrate_page_copy wants to transfer the PG_dirty\nbit from old page to new page, so what it would do is set_page_dirty(newpage).\nHowever set_page_dirty() is used to set the entire page dirty, wheras in\nthis case, only part of the page was dirty, and it also was not uptodate.\n\nMarking the whole page dirty with set_page_dirty would lead to corruption or\nunresolvable conditions -- a dirty \u0026\u0026 !uptodate page and dirty \u0026\u0026 !uptodate\nbuffers.\n\nPossibly we could just ClearPageDirty(oldpage); SetPageDirty(newpage);\nhowever in the interests of keeping the change minimal...\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nTested-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": "d40cee245ff6ad05d3448401d7320be82c1c5af1",
      "tree": "5467cada898e80d5e43592393b21252312c908fa",
      "parents": [
        "d7853d1f8932c847a8d7b3b38e6baedf77148cfb"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Apr 30 00:55:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "mm: remove remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "3ac7fe5a4aab409bd5674d0b070bce97f9d20872",
      "tree": "5e12e8864bb8737695e4eb9c63970602d5f69e73",
      "parents": [
        "30327acf7846c5eb97c8e31c78317a2918d3e515"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "infrastructure to debug (dynamic) objects\n\nWe can see an ever repeating problem pattern with objects of any kind in the\nkernel:\n\n1) freeing of active objects\n2) reinitialization of active objects\n\nBoth problems can be hard to debug because the crash happens at a point where\nwe have no chance to decode the root cause anymore.  One problem spot are\nkernel timers, where the detection of the problem often happens in interrupt\ncontext and usually causes the machine to panic.\n\nWhile working on a timer related bug report I had to hack specialized code\ninto the timer subsystem to get a reasonable hint for the root cause.  This\ndebug hack was fine for temporary use, but far from a mergeable solution due\nto the intrusiveness into the timer code.\n\nThe code further lacked the ability to detect and report the root cause\ninstantly and keep the system operational.\n\nKeeping the system operational is important to get hold of the debug\ninformation without special debugging aids like serial consoles and special\nknowledge of the bug reporter.\n\nThe problems described above are not restricted to timers, but timers tend to\nexpose it usually in a full system crash.  Other objects are less explosive,\nbut the symptoms caused by such mistakes can be even harder to debug.\n\nInstead of creating specialized debugging code for the timer subsystem a\ngeneric infrastructure is created which allows developers to verify their code\nand provides an easy to enable debug facility for users in case of trouble.\n\nThe debugobjects core code keeps track of operations on static and dynamic\nobjects by inserting them into a hashed list and sanity checking them on\nobject operations and provides additional checks whenever kernel memory is\nfreed.\n\nThe tracked object operations are:\n- initializing an object\n- adding an object to a subsystem list\n- deleting an object from a subsystem list\n\nEach operation is sanity checked before the operation is executed and the\nsubsystem specific code can provide a fixup function which allows to prevent\nthe damage of the operation.  When the sanity check triggers a warning message\nand a stack trace is printed.\n\nThe list of operations can be extended if the need arises.  For now it\u0027s\nlimited to the requirements of the first user (timers).\n\nThe core code enqueues the objects into hash buckets.  The hash index is\ngenerated from the address of the object to simplify the lookup for the check\non kfree/vfree.  Each bucket has it\u0027s own spinlock to avoid contention on a\nglobal lock.\n\nThe debug code can be compiled in without being active.  The runtime overhead\nis minimal and could be optimized by asm alternatives.  A kernel command line\noption enables the debugging code.\n\nThanks to Ingo Molnar for review, suggestions and cleanup patches.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc3ba692a4d19019387c5acaea63131f9eab05dd",
      "tree": "c86e025cb8f79c7ffc479029989b7378bcb9f285",
      "parents": [
        "dd5656e59ca7b25fb60a22f9079905ed0da5ed0c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: Add NR_WRITEBACK_TEMP counter\n\nFuse will use temporary buffers to write back dirty data from memory mappings\n(normal writes are done synchronously).  This is needed, because there cannot\nbe any guarantee about the time in which a write will complete.\n\nBy using temporary buffers, from the MM\u0027s point if view the page is written\nback immediately.  If the writeout was due to memory pressure, this\neffectively migrates data from a full zone to a less full zone.\n\nThis patch adds a new counter (NR_WRITEBACK_TEMP) for the number of pages used\nas temporary buffers.\n\n[Lee.Schermerhorn@hp.com: add vmstat_text for NR_WRITEBACK_TEMP]\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: 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": "dd5656e59ca7b25fb60a22f9079905ed0da5ed0c",
      "tree": "47c156e6023e93f3028c63a2594bbb3e27e968a4",
      "parents": [
        "e4ad08fe64afca4ef79ecc4c624e6e871688da0d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: export bdi_writeout_inc()\n\nFuse needs this for writable mmap support.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\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": "e4ad08fe64afca4ef79ecc4c624e6e871688da0d",
      "tree": "5b8b390b874700041dc0c095e8ba9ac3ed42ea77",
      "parents": [
        "76f1418b485da2707531178e517bbb5cf06b3c76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: add separate writeback accounting capability\n\nAdd a new BDI capability flag: BDI_CAP_NO_ACCT_WB.  If this flag is\nset, then don\u0027t update the per-bdi writeback stats from\ntest_set_page_writeback() and test_clear_page_writeback().\n\nMisc cleanups:\n\n - convert bdi_cap_writeback_dirty() and friends to static inline functions\n - create a flag that includes all three dirty/writeback related flags,\n   since almst all users will want to have them toghether\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\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": "76f1418b485da2707531178e517bbb5cf06b3c76",
      "tree": "138a012d965ebc284163f42e0ff5786c6de1cda5",
      "parents": [
        "a42dde04152750426cc620fd277e80fffae2f65a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: move statistics to debugfs\n\nMove BDI statistics to debugfs:\n\n   /sys/kernel/debug/bdi/\u003cbdi\u003e/stats\n\nUse postcore_initcall() to initialize the sysfs class and debugfs,\nbecause debugfs is initialized in core_initcall().\n\nUpdate descriptions in ABI documentation.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "a42dde04152750426cc620fd277e80fffae2f65a",
      "tree": "98cdf246280c59e0bf044ae6d2c229fc27b73203",
      "parents": [
        "189d3c4a94ef19fca2a71a6a336e9fda900e25e7"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Apr 30 00:54:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: allow setting a maximum for the bdi dirty limit\n\nAdd \"max_ratio\" to /sys/class/bdi.  This indicates the maximum percentage of\nthe global dirty threshold allocated to this bdi.\n\n[mszeredi@suse.cz]\n\n - fix parsing in max_ratio_store().\n - export bdi_set_max_ratio() to modules\n - limit bdi_dirty with bdi-\u003emax_ratio\n - document new sysfs attribute\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "189d3c4a94ef19fca2a71a6a336e9fda900e25e7",
      "tree": "75c0de871fe9922885a2fa073f15806d829342fa",
      "parents": [
        "b6f2fcbcfca9db2bd7aa24940224fcd3bbdbb8aa"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Apr 30 00:54:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: allow setting a minimum for the bdi dirty limit\n\nUnder normal circumstances each device is given a part of the total write-back\ncache that relates to its current avg writeout speed in relation to the other\ndevices.\n\nmin_ratio - allows one to assign a minimum portion of the write-back cache to\na particular device.  This is useful in situations where you might want to\nprovide a minimum QoS.  (One request for this feature came from flash based\nstorage people who wanted to avoid writing out at all costs - they of course\nneeded some pdflush hacks as well)\n\nmax_ratio - allows one to assign a maximum portion of the dirty limit to a\nparticular device.  This is useful in situations where you want to avoid one\ndevice taking all or most of the write-back cache.  Eg.  an NFS mount that is\nprone to get stuck, or a FUSE mount which you don\u0027t trust to play fair.\n\nAdd \"min_ratio\" to /sys/class/bdi.  This indicates the minimum percentage of\nthe global dirty threshold allocated to this bdi.\n\n[mszeredi@suse.cz]\n\n - fix parsing in min_ratio_store()\n - document new sysfs attribute\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "cf0ca9fe5dd9e3693d935757a7b2fc50fc576554",
      "tree": "c795c5271eda9fc67579fa3176c646b892dfdb41",
      "parents": [
        "caafa4324335aeb11bc233d5f87aca8cce30beba"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Apr 30 00:54:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:49 2008 -0700"
      },
      "message": "mm: bdi: export BDI attributes in sysfs\n\nProvide a place in sysfs (/sys/class/bdi) for the backing_dev_info object.\nThis allows us to see and set the various BDI specific variables.\n\nIn particular this properly exposes the read-ahead window for all relevant\nusers and /sys/block/\u003cblock\u003e/queue/read_ahead_kb should be deprecated.\n\nWith patient help from Kay Sievers and Greg KH\n\n[mszeredi@suse.cz]\n\n - split off NFS and FUSE changes into separate patches\n - document new sysfs attributes under Documentation/ABI\n - do bdi_class_init as a core_initcall, otherwise the \"default\" BDI\n   won\u0027t be initialized\n - remove bdi_init_fmt macro, it\u0027s not used very much\n\n[akpm@linux-foundation.org: fix ia64 warning]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@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": "41b25a3784c137ad52c71619c73b925860b1b3a2",
      "tree": "4c7e858a692c8ffa41294d661e8f10d58927ed67",
      "parents": [
        "2f3517418dc0684a32318f2c5b53257416448b1e"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Apr 30 00:52:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:30 2008 -0700"
      },
      "message": "/proc/pagetypeinfo: fix output for memoryless nodes\n\non memoryless node, /proc/pagetypeinfo is displayed slightly funny output.\nthis patch fix it.\n\noutput example (header is outputed, but no data is outputed)\n--------------------------------------------------------------\nPage block order: 14\nPages per block:  16384\n\nFree pages count per migrate type at order       0      1      2      3      4      5    \\\n  6      7      8      9     10     11     12     13     14     15     16\n\nNumber of blocks type     Unmovable  Reclaimable      Movable      Reserve      Isolate\nPage block order: 14\nPages per block:  16384\n\nFree pages count per migrate type at order       0      1      2      3      4      5    \\\n  6      7      8      9     10     11     12     13     14     15     16\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "3d71f86f4dfccd749e4421f10301f3f3b31da88a",
      "tree": "7a052e776b660a2fa1bbe3702fd061bc3d3e6a37",
      "parents": [
        "6a6375db13703b42dd51b28576d444bb73c541b9"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Apr 29 01:02:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:20 2008 -0700"
      },
      "message": "mm: use non-racy method for /proc/swaps creation\n\nUse proc_create() to make sure that -\u003eproc_fops be setup before gluing PDE to\nmain tree.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "925d1c401fa6cfd0df5d2e37da8981494ccdec07",
      "tree": "4f3b7a09311cd99783b822350628125e44f9902d",
      "parents": [
        "e93b4ea20adb20f1f1f07f10ba5d7dd739d2843e"
      ],
      "author": {
        "name": "Matt Helsley",
        "email": "matthltc@us.ibm.com",
        "time": "Tue Apr 29 01:01:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:17 2008 -0700"
      },
      "message": "procfs task exe symlink\n\nThe kernel implements readlink of /proc/pid/exe by getting the file from\nthe first executable VMA.  Then the path to the file is reconstructed and\nreported as the result.\n\nBecause of the VMA walk the code is slightly different on nommu systems.\nThis patch avoids separate /proc/pid/exe code on nommu systems.  Instead of\nwalking the VMAs to find the first executable file-backed VMA we store a\nreference to the exec\u0027d file in the mm_struct.\n\nThat reference would prevent the filesystem holding the executable file\nfrom being unmounted even after unmapping the VMAs.  So we track the number\nof VM_EXECUTABLE VMAs and drop the new reference when the last one is\nunmapped.  This avoids pinning the mounted filesystem.\n\n[akpm@linux-foundation.org: improve comments]\n[yamamoto@valinux.co.jp: fix dup_mmap]\nSigned-off-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc:\"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c40ba4fd64f98e7a5cba8ffaedbd68642a85700",
      "tree": "8aba0ac7b89f436d73c1cf74058315aee8b6025f",
      "parents": [
        "4d89dc6ab2711258bfd12c72d753f3ad56b244e2"
      ],
      "author": {
        "name": "Nadia Derbey",
        "email": "Nadia.Derbey@bull.net",
        "time": "Tue Apr 29 01:00:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:12 2008 -0700"
      },
      "message": "ipc: define the slab_memory_callback priority as a constant\n\nThis is a trivial patch that defines the priority of slab_memory_callback in\nthe callback chain as a constant.  This is to prepare for next patch in the\nseries.\n\nSigned-off-by: Nadia Derbey \u003cNadia.Derbey@bull.net\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1faf8e40a8ab12ae1f7f474965e6fb031e43f8d6",
      "tree": "7448f437cc527d4396269945e070c841e0f1603d",
      "parents": [
        "33327948782bcef89c78eb47af86b6a2df9fd4a5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Apr 29 01:00:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:11 2008 -0700"
      },
      "message": "memcg: remove redundant initialization in mem_cgroup_create()\n\n*mem has been zeroed, that means mem-\u003einfo has already been filled with 0.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33327948782bcef89c78eb47af86b6a2df9fd4a5",
      "tree": "c1045eaee1b63a6be37a09c969e2433a5c595c33",
      "parents": [
        "4a56d02e34baedbea5eb1fd558f2b856b8c7db1e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 29 01:00:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:11 2008 -0700"
      },
      "message": "memcgroup: use vmalloc for mem_cgroup allocation\n\nOn ia64, this kmalloc() requires order-4 pages.  But this is not necessary to\nbe physically contiguous.  For big mem_cgroup, vmalloc is better.  For small\nones, kmalloc is used.\n\n[akpm@linux-foundation.org: simplification]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4a56d02e34baedbea5eb1fd558f2b856b8c7db1e",
      "tree": "212dc2ed8562014963f2bd8b66578a5aa36f426c",
      "parents": [
        "3eae90c3cdd4e762d0f4f5e939c98780fccded57"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Apr 29 01:00:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:11 2008 -0700"
      },
      "message": "memcgroup: make the memory controller more desktop responsive\n\nThis patch makes the memory controller more responsive on my desktop.\n\n1. Set all cached pages as inactive.  We were by default marking all pages\n   as active, thus forcing us to go through two passes for reclaiming pages\n\n2. Remove congestion_wait(), since we already have that logic in\n   do_try_to_free_pages()\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: 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": "3eae90c3cdd4e762d0f4f5e939c98780fccded57",
      "tree": "d5b6f138e8464827b7b882fc6acea3916aca8957",
      "parents": [
        "29f2a4dac856e9433a502b05b40e8e90385d8e27"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 29 01:00:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "memcg: remove redundant function calls\n\nremove_list/add_list uses page_cgroup_zoneinfo() in it.\n\nSo, it\u0027s called twice before and after lock.\n\n\tmz \u003d page_cgroup_zoneinfo();\n\tlock();\n\tmz \u003d page_cgroup_zoneinfo();\n\t....\n\tunlock();\n\nAnd address of mz never changes.\n\nThis is not good. This patch fixes this behavior.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29f2a4dac856e9433a502b05b40e8e90385d8e27",
      "tree": "242772a246a6a5170ed5183d3fe3944a6f36a169",
      "parents": [
        "85cc59db12724e1248f5e4841e61339cf485d5c7"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Tue Apr 29 01:00:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "memcgroup: implement failcounter reset\n\nThis is a very common requirement from people using the resource accounting\nfacilities (not only memcgroup but also OpenVZ beancounters).  They want to\nput the cgroup in an initial state without re-creating it.\n\nFor example after re-configuring a group people want to observe how this new\nconfiguration fits the group needs without saving the previous failcnt value.\n\nMerge two resets into one mem_cgroup_reset() function to demonstrate how\nmultiplexing work.\n\nBesides, I have plans to move the files, that correspond to res_counter to the\nres_counter.c file and somehow \"import\" them into controller.  I don\u0027t know\nhow to make it gracefully yet, but merging resets of max_usage and failcnt in\none function will be there for sure.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Menage \u003cmenage@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": "85cc59db12724e1248f5e4841e61339cf485d5c7",
      "tree": "960340cafba30181a1e2f60c93cd54a6fdb637ff",
      "parents": [
        "b6ac57d50a375aa2f267e1b2b56c46564a936d00"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Tue Apr 29 01:00:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "memcgroup: use triggers in force_empty and max_usage files\n\nThese two files are essentially event callbacks.  They do not care about the\ncontents of the string, but only about the fact of the write itself.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Menage \u003cmenage@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": "b6ac57d50a375aa2f267e1b2b56c46564a936d00",
      "tree": "51aca62f4b9961f2105672b3429723ca73d78386",
      "parents": [
        "faebe9fdf35058bb8421e4c09f6f70994eaf8db2"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Apr 29 01:00:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "memcgroup: move memory controller allocations to their own slabs\n\nMove the memory controller data structure page_cgroup to its own slab cache.\nIt saves space on the system, allocations are not necessarily pushed to order\nof 2 and should provide performance benefits.  Users who disable the memory\ncontroller can also double check that the memory controller is not allocating\npage_cgroup\u0027s.\n\nNOTE: Hugh Dickins brought up the issue of whether we want to mark page_cgroup\nas __GFP_MOVABLE or __GFP_RECLAIMABLE.  I don\u0027t think there is an easy answer\nat the moment.  page_cgroup\u0027s are associated with user pages, they can be\nreclaimed once the user page has been reclaimed, so it might make sense to\nmark them as __GFP_RECLAIMABLE.  For now, I am leaving the marking to default\nvalues that the slab allocator uses.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@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": "c84872e168d10926acd2dee975d19172eef79252",
      "tree": "c28f4f87ad38b524fe2a4c1e0e590bea3aacd92a",
      "parents": [
        "cf475ad28ac35cc9ba612d67158f29b73b38b05d"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Tue Apr 29 01:00:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "memcgroup: add the max_usage member on the res_counter\n\nThis field is the maximal value of the usage one since the counter creation\n(or since the latest reset).\n\nTo reset this to the usage value simply write anything to the appropriate\ncgroup file.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: 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": "cf475ad28ac35cc9ba612d67158f29b73b38b05d",
      "tree": "2c7cd568d00357bd42643ea602884e731cc24f26",
      "parents": [
        "29486df325e1fe6e1764afcb19e3370804c2b002"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Apr 29 01:00:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "cgroups: add an owner to the mm_struct\n\nRemove the mem_cgroup member from mm_struct and instead adds an owner.\n\nThis approach was suggested by Paul Menage.  The advantage of this approach\nis that, once the mm-\u003eowner is known, using the subsystem id, the cgroup\ncan be determined.  It also allows several control groups that are\nvirtually grouped by mm_struct, to exist independent of the memory\ncontroller i.e., without adding mem_cgroup\u0027s for each controller, to\nmm_struct.\n\nA new config option CONFIG_MM_OWNER is added and the memory resource\ncontroller selects this config option.\n\nThis patch also adds cgroup callbacks to notify subsystems when mm-\u003eowner\nchanges.  The mm_cgroup_changed callback is called with the task_lock() of\nthe new task held and is called just prior to changing the mm-\u003eowner.\n\nI am indebted to Paul Menage for the several reviews of this patchset and\nhelping me make it lighter and simpler.\n\nThis patch was tested on a powerpc box, it was compiled with both the\nMM_OWNER config turned on and off.\n\nAfter the thread group leader exits, it\u0027s moved to init_css_state by\ncgroup_exit(), thus all future charges from runnings threads would be\nredirected to the init_css_set\u0027s subsystem.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e,\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c27e8818a09bbdfe7c07c629cb2c27e1a742e156",
      "tree": "2ed583bc69f4224259c00aad8703a0bc452b8469",
      "parents": [
        "c64745cf0f34f2cb08fc28c93d844e583d0d591d"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Tue Apr 29 01:00:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:08 2008 -0700"
      },
      "message": "CGroup API files: drop mem_cgroup_force_empty()\n\nThis function isn\u0027t needed - a NULL pointer in the cftype read function will\nresult in the same EINVAL response to userspace.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Li Zefan\" \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"YAMAMOTO Takashi\" \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c64745cf0f34f2cb08fc28c93d844e583d0d591d",
      "tree": "d957cd0cd83917ee69c72eb92d1db0c4cb2ed2bc",
      "parents": [
        "9179656961adcea3c25403365597e486d851ac5e"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Tue Apr 29 01:00:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:08 2008 -0700"
      },
      "message": "CGroup API files: use cgroup map for memcontrol stats file\n\nRemove the seq_file boilerplate used to construct the memcontrol stats map,\nand instead use the new map representation for cgroup control files\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Li Zefan\" \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"YAMAMOTO Takashi\" \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c3daa722b624eaf0c5ea60e4f180bd0684542e2",
      "tree": "afdb7e2068b018569dda8415b184b6de2ab330a6",
      "parents": [
        "2c7eabf37647dd459d555e76954b4de87be2321f"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Tue Apr 29 00:59:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:08 2008 -0700"
      },
      "message": "CGroup API files: use read_u64 in memory controller\n\nUpdate the memory controller to use read_u64 for its limit/usage/failcnt\ncontrol files, calling the new res_counter_read_u64() function.\n\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: \"Li Zefan\" \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"YAMAMOTO Takashi\" \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "551883ae8c9c31460e796e7b1b8aa9069de268b4",
      "tree": "2f2aaef8024656b3b5e1cf9e599608e54d2e483e",
      "parents": [
        "a41f24ea9fd6169b147c53c2392e2887cc1d9247"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Apr 29 00:58:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "page allocator: explicitly retry hugepage allocations\n\nAdd __GFP_REPEAT to hugepage allocations.  Do so to not necessitate userspace\nputting pressure on the VM by repeated echo\u0027s into /proc/sys/vm/nr_hugepages\nto grow the pool.  With the previous patch to allow for large-order\n__GFP_REPEAT attempts to loop for a bit (as opposed to indefinitely), this\nincreases the likelihood of getting hugepages when the system experiences (or\nrecently experienced) load.\n\nMel tested the patchset on an x86_32 laptop.  With the patches, it was easier\nto use the proc interface to grow the hugepage pool.  The following is the\noutput of a script that grows the pool as much as possible running on\n2.6.25-rc9.\n\nAllocating hugepages test\n-------------------------\nDisabling OOM Killer for current test process\nStarting page count: 0\nAttempt 1: 57 pages Progress made with 57 pages\nAttempt 2: 73 pages Progress made with 16 pages\nAttempt 3: 74 pages Progress made with 1 pages\nAttempt 4: 75 pages Progress made with 1 pages\nAttempt 5: 77 pages Progress made with 2 pages\n\n77 pages was the most it allocated but it took 5 attempts from userspace\nto get it. With the 3 patches in this series applied,\n\nAllocating hugepages test\n-------------------------\nDisabling OOM Killer for current test process\nStarting page count: 0\nAttempt 1: 75 pages Progress made with 75 pages\nAttempt 2: 76 pages Progress made with 1 pages\nAttempt 3: 79 pages Progress made with 3 pages\n\nAnd 79 pages was the most it got. Your patches were able to allocate the\nbulk of possible pages on the first attempt.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nTested-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a41f24ea9fd6169b147c53c2392e2887cc1d9247",
      "tree": "e6cf79a82f6516a30731f7dec7ed5d76466bb350",
      "parents": [
        "ab857d09386661145924c9403792234aeca4bdff"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Apr 29 00:58:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "page allocator: smarter retry of costly-order allocations\n\nBecause of page order checks in __alloc_pages(), hugepage (and similarly\nlarge order) allocations will not retry unless explicitly marked\n__GFP_REPEAT. However, the current retry logic is nearly an infinite\nloop (or until reclaim does no progress whatsoever). For these costly\nallocations, that seems like overkill and could potentially never\nterminate. Mel observed that allowing current __GFP_REPEAT semantics for\nhugepage allocations essentially killed the system. I believe this is\nbecause we may continue to reclaim small orders of pages all over, but\nnever have enough to satisfy the hugepage allocation request. This is\nclearly only a problem for large order allocations, of which hugepages\nare the most obvious (to me).\n\nModify try_to_free_pages() to indicate how many pages were reclaimed.\nUse that information in __alloc_pages() to eventually fail a large\n__GFP_REPEAT allocation when we\u0027ve reclaimed an order of pages equal to\nor greater than the allocation\u0027s order. This relies on lumpy reclaim\nfunctioning as advertised. Due to fragmentation, lumpy reclaim may not\nbe able to free up the order needed in one invocation, so multiple\niterations may be requred. In other words, the more fragmented memory\nis, the more retry attempts __GFP_REPEAT will make (particularly for\nhigher order allocations).\n\nThis changes the semantics of __GFP_REPEAT subtly, but *only* for\nallocations \u003e PAGE_ALLOC_COSTLY_ORDER. With this patch, for those size\nallocations, we will try up to some point (at least 1\u003c\u003corder reclaimed\npages), rather than forever (which is the case for allocations \u003c\u003d\nPAGE_ALLOC_COSTLY_ORDER).\n\nThis change improves the /proc/sys/vm/nr_hugepages interface with a\nfollow-on patch that makes pool allocations use __GFP_REPEAT. Rather\nthan administrators repeatedly echo\u0027ing a particular value into the\nsysctl, and forcing reclaim into action manually, this change allows for\nthe sysctl to attempt a reasonable effort itself. Similarly, dynamic\npool growth should be more successful under load, as lumpy reclaim can\ntry to free up pages, rather than failing right away.\n\nChoosing to reclaim only up to the order of the requested allocation\nstrikes a balance between not failing hugepage allocations and returning\nto the caller when it\u0027s unlikely to every succeed. Because of lumpy\nreclaim, if we have freed the order requested, hopefully it has been in\nbig chunks and those chunks will allow our allocation to succeed. If\nthat isn\u0027t the case after freeing up the current order, I don\u0027t think it\nis likely to succeed in the future, although it is possible given a\nparticular fragmentation pattern.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nTested-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab857d09386661145924c9403792234aeca4bdff",
      "tree": "02027a87f919d721615664910b415f21bd88e9c5",
      "parents": [
        "86051ca5eaf5e560113ec7673462804c54284456"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Tue Apr 29 00:58:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "mm: fix misleading __GFP_REPEAT related comments\n\nThe definition and use of __GFP_REPEAT, __GFP_NOFAIL and __GFP_NORETRY in the\ncore VM have somewhat differing comments as to their actual semantics.\nAnnoyingly, the flags definition has inline and header comments, which might\nbe interpreted as not being equivalent.  Just add references to the header\ncomments in the inline ones so they don\u0027t go out of sync in the future.  In\ntheir use in __alloc_pages() clarify that the current implementation treats\nlow-order allocations and __GFP_REPEAT allocations as distinct cases.\n\nTo clarify, the flags\u0027 semantics are:\n\n__GFP_NORETRY means try no harder than one run through __alloc_pages\n\n__GFP_REPEAT means __GFP_NOFAIL\n\n__GFP_NOFAIL means repeat forever\n\norder \u003c\u003d PAGE_ALLOC_COSTLY_ORDER means __GFP_NOFAIL\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.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": "86051ca5eaf5e560113ec7673462804c54284456",
      "tree": "e2e6fd3df079f85c43c7e164569a8c962f91e537",
      "parents": [
        "a01e035ebb552223c03f2d9138ffc73f2d4d3965"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 29 00:58:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:05:58 2008 -0700"
      },
      "message": "mm: fix usemap initialization\n\nusemap must be initialized only when pfn is within zone.  If not, it corrupts\nmemory.\n\nAnd this patch also reduces the number of calls to set_pageblock_migratetype()\nfrom\n\t(pfn \u0026 (pageblock_nr_pages -1)\nto\n\t!(pfn \u0026 (pageblock_nr_pages-1)\nit should be called once per pageblock.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Shi Weihua \u003cshiwh@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: \u003cstable@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": "7b8ee84d8926e6c6ec584548d23a12f1410b4db7",
      "tree": "39ad257e276625771e5112dfa0d5b620532b0fb6",
      "parents": [
        "b331d259b1147f82d692f3b866e036017cbde8fe"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Apr 28 14:13:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 17:29:18 2008 -0700"
      },
      "message": "mm: fix integer as NULL pointer warnings\n\nmm/hugetlb.c:207:11: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e97e386b126c2d60b8da61ce1e4964b41b3d1514",
      "tree": "7e04b7f735004330777200c6742568fc130ff893",
      "parents": [
        "d9dedc13851f9cbd568fbc631a17b0be83404957",
        "c124f5b54f879e5870befcc076addbd5d614663f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 14:08:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 14:08:56 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: pack objects denser\n  slub: Calculate min_objects based on number of processors.\n  slub: Drop DEFAULT_MAX_ORDER / DEFAULT_MIN_OBJECTS\n  slub: Simplify any_slab_object checks\n  slub: Make the order configurable for each slab cache\n  slub: Drop fallback to page allocator method\n  slub: Fallback to minimal order during slab page allocation\n  slub: Update statistics handling for variable order slabs\n  slub: Add kmem_cache_order_objects struct\n  slub: for_each_object must be passed the number of objects in a slab\n  slub: Store max number of objects in the page struct.\n  slub: Dump list of objects not freed on kmem_cache_close()\n  slub: free_list() cleanup\n  slub: improve kmem_cache_destroy() error message\n  slob: fix bug - when slob allocates \"struct kmem_cache\", it does not force alignment.\n"
    },
    {
      "commit": "1e5ad9a3b9b78767a2eb1345201e46f41f9457ef",
      "tree": "c1b47287f98a660ee9e94c617c9c8d09f815734f",
      "parents": [
        "0c96c5979a522c3323c30a078a70120e29b5bdbc"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Apr 28 20:40:08 2008 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 13:44:29 2008 -0700"
      },
      "message": "mm/memory_hotplug.c must #include \"internal.h\"\n\nThis patch fixes the following compile error caused by commit\n04753278769f3b6c3b79a080edb52f21d83bf6e2 (\"memory hotplug: register\nsection/node id to free\"):\n\n    CC      mm/memory_hotplug.o\n  /home/bunk/linux/kernel-2.6/git/linux-2.6/mm/memory_hotplug.c: In function ‘put_page_bootmem’:\n  /home/bunk/linux/kernel-2.6/git/linux-2.6/mm/memory_hotplug.c:82: error: implicit declaration of function ‘__free_pages_bootmem’\n  /home/bunk/linux/kernel-2.6/git/linux-2.6/mm/memory_hotplug.c: At top level:\n  /home/bunk/linux/kernel-2.6/git/linux-2.6/mm/memory_hotplug.c:87: warning: no previous prototype for ‘register_page_bootmem_info_section’\n  make[2]: *** [mm/memory_hotplug.o] Error 1\n\n[ Andrew: \"Argh.  The -mm-only memory-hotplug-add-removable-to-sysfs-\n  to-show-memblock-removability.patch debugging patch adds that include\n  so nobody hit this before. ]\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4016a1390d07f15b267eecb20e76a48fd5c524ef",
      "tree": "ae9ce9bd7d2fd784a396893c4d4b2a79b2d7342d",
      "parents": [
        "468fd62ed9090ccbe872489df5d0d099510df4b5"
      ],
      "author": {
        "name": "Michael Hennerich",
        "email": "Michael.Hennerich@analog.com",
        "time": "Mon Apr 28 02:13:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "mm/nommu.c: return 0 from kobjsize with invalid objects\n\nDon\u0027t perform kobjsize operations on objects the kernel doesn\u0027t manage.\n\nOn Blackfin, drivers can get dma coherent memory by calling a function\ndma_alloc_coherent(). We do this in nommu by configuring a chunk of uncached\nmemory at the top of memory.\n\nSince we don\u0027t want the kernel to use the uncached memory, we lie to the\nkernel, and tell it that it\u0027s max memory is between 0, and the start of the\nuncached dma coherent section.\n\nthis all works well, until this memory gets exposed into userspace (with a\nframe buffer), when you look at the process\u0027s maps, it shows the framebuf:\n\nroot:/proc\u003e cat maps\n[snip]\n03f0ef00-03f34700 rw-p 00000000 1f:00 192        /dev/fb0\nroot:/proc\u003e\n\nThis is outside the \"normal\" range for the kernel. When the kernel tries to\nfind the size of this object (when you run ps), it dies in nommu.c in\nkobjsize.\n\nBUG_ON(page-\u003eindex \u003e\u003d MAX_ORDER);\n\nsince the page we are referring to is outside what the kernel thinks is it\u0027s\nmax valid memory.\n\nroot:~\u003e while [ 1 ]; ps \u003e /dev/null; done\nkernel BUG at mm/nommu.c:119!\nKernel panic - not syncing: BUG!\n\nWe fixed this by adding a check to reject out of range object pointers as it\nalready does that for NULL pointers.\n\nSigned-off-by: Michael Hennerich \u003cMichael.Hennerich@analog.com\u003e\nSigned-off-by: Robin Getz \u003crgetz@blackfin.uclinux.org\u003e\nAcked-by: 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": "468fd62ed9090ccbe872489df5d0d099510df4b5",
      "tree": "017ab340cac72bf86423f181f085e7bc39fd70ea",
      "parents": [
        "8cece85ec744bdc7ea0fc2d33f65b3f031c28468"
      ],
      "author": {
        "name": "Dimitri Sivanich",
        "email": "sivanich@sgi.com",
        "time": "Mon Apr 28 02:13:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "vmstats: add cond_resched() to refresh_cpu_vm_stats()\n\nWe\u0027ve found that it can take quite a bit of time (100\u0027s of usec) to get\nthrough the zone loop in refresh_cpu_vm_stats().\n\nAdding a cond_resched() to allow other threads to run in the non-preemptive\ncase.\n\nSigned-off-by: Dimitri Sivanich \u003csivanich@sgi.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2309f9e6fe3f1de661eab9613f7903ab4420c753",
      "tree": "283c26f2cd9f42bd63e7b514278aafe7c53a4dc0",
      "parents": [
        "97d87c9710bc6c5f2585fb9dc58f5bedbe996f10"
      ],
      "author": {
        "name": "Pavel Machek",
        "email": "pavel@ucw.cz",
        "time": "Mon Apr 28 02:13:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "mm/page_alloc.c: remove hand-coded get_order()\n\nRemove hand-coded get_order() from page_alloc.c.\n\nSigned-off-by: Pavel Machek \u003cpavel@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": "97d87c9710bc6c5f2585fb9dc58f5bedbe996f10",
      "tree": "60d6b2adc950c55330504fc472464339328d7ef7",
      "parents": [
        "0c0a4a517a31e05efb38304668198a873bfec6ca"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 28 02:13:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "oom_kill: remove unused parameter in badness()\n\nIn commit 4c4a22148909e4c003562ea7ffe0a06e26919e3c, we moved the\nmemcontroller-related code from badness() to select_bad_process(), so the\nparameter \u0027mem\u0027 in badness() is unused now.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c0a4a517a31e05efb38304668198a873bfec6ca",
      "tree": "3d02fe9dbf160cd5d328c1e2cf4b40ce37426c5f",
      "parents": [
        "86f6dae1377523689bd8468fed2f2dd180fc0560"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:26 2008 -0700"
      },
      "message": "memory hotplug: free memmaps allocated by bootmem\n\nThis patch is to free memmaps which is allocated by bootmem.\n\nFreeing usemap is not necessary.  The pages of usemap may be necessary for\nother sections.\n\nIf removing section is last section on the node, its section is the final user\nof usemap page.  (usemaps are allocated on its section by previous patch.) But\nit shouldn\u0027t be freed too, because the section must be logical offline state\nwhich all pages are isolated against page allocater.  If it is freed, page\nalloctor may use it which will be removed physically soon.  It will be\ndisaster.  So, this patch keeps it as it is.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@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": "86f6dae1377523689bd8468fed2f2dd180fc0560",
      "tree": "90c4495ae947627d610f13c8a185fd16358bc14e",
      "parents": [
        "e70260aabea3af2a84b951e75166dcebe689b88e"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: allocate usemap on the section with pgdat\n\nUsemaps are allocated on the section which has pgdat by this.\n\nBecause usemap size is very small, many other sections usemaps are allocated\non only one page.  If a section has usemap, it can\u0027t be removed until removing\nother sections.  This dependency is not desirable for memory removing.\n\nPgdat has similar feature.  When a section has pgdat area, it must be the last\nsection for removing on the node.  So, if section A has pgdat and section B\nhas usemap for section A, Both sections can\u0027t be removed due to dependency\neach other.\n\nTo solve this issue, this patch collects usemap on same section with pgdat.\nIf other sections doesn\u0027t have any dependency, this section will be able to be\nremoved finally.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@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": "e70260aabea3af2a84b951e75166dcebe689b88e",
      "tree": "196dc5f2804f9f5496f51954330a036e3a2762d8",
      "parents": [
        "9d99217a02a06a7cc83f065b73e976970970c58c"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: make alloc_bootmem_section()\n\nalloc_bootmem_section() can allocate specified section\u0027s area.  This is used\nfor usemap to keep same section with pgdat by later patch.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@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": "9d99217a02a06a7cc83f065b73e976970970c58c",
      "tree": "14d270c37701f9ae621c9cd8b076e207ee86e5d0",
      "parents": [
        "04753278769f3b6c3b79a080edb52f21d83bf6e2"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: align memmap to page size\n\nTo free memmap easier, this patch aligns it to page size.  Bootmem allocater\nmay mix some objects in one pages.  It\u0027s not good for freeing memmap of memory\nhot-remove.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@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": "04753278769f3b6c3b79a080edb52f21d83bf6e2",
      "tree": "0dff4088b44016b6d04930b2fc09419412821aa2",
      "parents": [
        "7f2e9525ba55b1c42ad6c4a5a59d7eb7bdd9be72"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Mon Apr 28 02:13:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "memory hotplug: register section/node id to free\n\nThis patch set is to free pages which is allocated by bootmem for\nmemory-hotremove.  Some structures of memory management are allocated by\nbootmem.  ex) memmap, etc.\n\nTo remove memory physically, some of them must be freed according to\ncircumstance.  This patch set makes basis to free those pages, and free\nmemmaps.\n\nBasic my idea is using remain members of struct page to remember information\nof users of bootmem (section number or node id).  When the section is\nremoving, kernel can confirm it.  By this information, some issues can be\nsolved.\n\n  1) When the memmap of removing section is allocated on other\n     section by bootmem, it should/can be free.\n  2) When the memmap of removing section is allocated on the\n     same section, it shouldn\u0027t be freed. Because the section has to be\n     logical memory offlined already and all pages must be isolated against\n     page allocater. If it is freed, page allocator may use it which will\n     be removed physically soon.\n  3) When removing section has other section\u0027s memmap,\n     kernel will be able to show easily which section should be removed\n     before it for user. (Not implemented yet)\n  4) When the above case 2), the page isolation will be able to check and skip\n     memmap\u0027s page when logical memory offline (offline_pages()).\n     Current page isolation code fails in this case because this page is\n     just reserved page and it can\u0027t distinguish this pages can be\n     removed or not. But, it will be able to do by this patch.\n     (Not implemented yet.)\n  5) The node information like pgdat has similar issues. But, this\n     will be able to be solved too by this.\n     (Not implemented yet, but, remembering node id in the pages.)\n\nFortunately, current bootmem allocator just keeps PageReserved flags,\nand doesn\u0027t use any other members of page struct. The users of\nbootmem doesn\u0027t use them too.\n\nThis patch:\n\nThis is to register information which is node or section\u0027s id.  Kernel can\ndistinguish which node/section uses the pages allcated by bootmem.  This is\nbasis for hot-remove sections or nodes.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Yasunori Goto \u003cy-goto@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"
    }
  ],
  "next": "7f2e9525ba55b1c42ad6c4a5a59d7eb7bdd9be72"
}
