)]}'
{
  "log": [
    {
      "commit": "6c5daf012c9155aafd2c7973e4278766c30dfad0",
      "tree": "33959d7b36d03e1610615641a2940cb2de5e8603",
      "parents": [
        "6d39b27f0ac7e805ae3bd9efa51d7da04bec0360",
        "c08d3b0e33edce28e9cfa7b64f7fe5bdeeb29248"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 08:32:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 08:32:11 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  truncate: use new helpers\n  truncate: new helpers\n  fs: fix overflow in sys_mount() for in-kernel calls\n  fs: Make unload_nls() NULL pointer safe\n  freeze_bdev: grab active reference to frozen superblocks\n  freeze_bdev: kill bd_mount_sem\n  exofs: remove BKL from super operations\n  fs/romfs: correct error-handling code\n  vfs: seq_file: add helpers for data filling\n  vfs: remove redundant position check in do_sendfile\n  vfs: change sb-\u003es_maxbytes to a loff_t\n  vfs: explicitly cast s_maxbytes in fiemap_check_ranges\n  libfs: return error code on failed attr set\n  seq_file: return a negative error code when seq_path_root() fails.\n  vfs: optimize touch_time() too\n  vfs: optimization for touch_atime()\n  vfs: split generic_forget_inode() so that hugetlbfs does not have to copy it\n  fs/inode.c: add dev-id and inode number for debugging in init_special_inode()\n  libfs: make simple_read_from_buffer conventional\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "8d65af789f3e2cf4cfbdbf71a0f7a61ebcd41d38",
      "tree": "121df3bfffc7853ac6d2c514ad514d4a748a0933",
      "parents": [
        "c0d0787b6d47d9f4d5e8bd321921104e854a9135"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 23 15:57:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:04 2009 -0700"
      },
      "message": "sysctl: remove \"struct file *\" argument of -\u003eproc_handler\n\nIt\u0027s unused.\n\nIt isn\u0027t needed -- read or write flag is already passed and sysctl\nshouldn\u0027t care about the rest.\n\nIt _was_ used in two places at arch/frv for some reason.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1dd3a27326d307952f8ad2499478c84dc7311517",
      "tree": "ae59d52935c790dd3fd0c8e12af5855cfe1abfcb",
      "parents": [
        "0c3e73e84fe3f64cf1c2e8bb4e91e8901cbcdc38"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Sep 23 15:56:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memcg: show swap usage in stat file\n\nWe now count MEM_CGROUP_STAT_SWAPOUT, so we can show swap usage.  It would\nbe useful for users to show swap usage in memory.stat file, because they\ndon\u0027t need calculate memsw.usage - res.usage to know swap usage.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-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": "0c3e73e84fe3f64cf1c2e8bb4e91e8901cbcdc38",
      "tree": "1c3e27fce3babd3703b34c9a353f253fcefb6325",
      "parents": [
        "4e41695356fb4e0b153be1440ad027e46e0a7ea2"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memcg: improve resource counter scalability\n\nReduce the resource counter overhead (mostly spinlock) associated with the\nroot cgroup.  This is a part of the several patches to reduce mem cgroup\noverhead.  I had posted other approaches earlier (including using percpu\ncounters).  Those patches will be a natural addition and will be added\niteratively on top of these.\n\nThe patch stops resource counter accounting for the root cgroup.  The data\nfor display is derived from the statisitcs we maintain via\nmem_cgroup_charge_statistics (which is more scalable).  What happens today\nis that, we do double accounting, once using res_counter_charge() and once\nusing memory_cgroup_charge_statistics().  For the root, since we don\u0027t\nimplement limits any more, we don\u0027t need to track every charge via\nres_counter_charge() and check for limit being exceeded and reclaim.\n\nThe main mem-\u003eres usage_in_bytes can be derived by summing the cache and\nrss usage data from memory statistics (MEM_CGROUP_STAT_RSS and\nMEM_CGROUP_STAT_CACHE).  However, for memsw-\u003eres usage_in_bytes, we need\nadditional data about swapped out memory.  This patch adds a\nMEM_CGROUP_STAT_SWAPOUT and uses that along with MEM_CGROUP_STAT_RSS and\nMEM_CGROUP_STAT_CACHE to derive the memsw data.  This data is computed\nrecursively when hierarchy is enabled.\n\nThe tests results I see on a 24 way show that\n\n1. The lock contention disappears from /proc/lock_stats\n2. The results of the test are comparable to running with\n   cgroup_disable\u003dmemory.\n\nHere is a sample of my program runs\n\nWithout Patch\n\n Performance counter stats for \u0027/home/balbir/parallel_pagefault\u0027:\n\n 7192804.124144  task-clock-msecs         #     23.937 CPUs\n         424691  context-switches         #      0.000 M/sec\n            267  CPU-migrations           #      0.000 M/sec\n       28498113  page-faults              #      0.004 M/sec\n  5826093739340  cycles                   #    809.989 M/sec\n   408883496292  instructions             #      0.070 IPC\n     7057079452  cache-references         #      0.981 M/sec\n     3036086243  cache-misses             #      0.422 M/sec\n\n  300.485365680  seconds time elapsed\n\nWith cgroup_disable\u003dmemory\n\n Performance counter stats for \u0027/home/balbir/parallel_pagefault\u0027:\n\n 7182183.546587  task-clock-msecs         #     23.915 CPUs\n         425458  context-switches         #      0.000 M/sec\n            203  CPU-migrations           #      0.000 M/sec\n       92545093  page-faults              #      0.013 M/sec\n  6034363609986  cycles                   #    840.185 M/sec\n   437204346785  instructions             #      0.072 IPC\n     6636073192  cache-references         #      0.924 M/sec\n     2358117732  cache-misses             #      0.328 M/sec\n\n  300.320905827  seconds time elapsed\n\nWith this patch applied\n\n Performance counter stats for \u0027/home/balbir/parallel_pagefault\u0027:\n\n 7191619.223977  task-clock-msecs         #     23.955 CPUs\n         422579  context-switches         #      0.000 M/sec\n             88  CPU-migrations           #      0.000 M/sec\n       91946060  page-faults              #      0.013 M/sec\n  5957054385619  cycles                   #    828.333 M/sec\n  1058117350365  instructions             #      0.178 IPC\n     9161776218  cache-references         #      1.274 M/sec\n     1920494280  cache-misses             #      0.267 M/sec\n\n  300.218764862  seconds time elapsed\n\nData from Prarit (kernel compile with make -j64 on a 64\nCPU/32G machine)\n\nFor a single run\n\nWithout patch\n\nreal 27m8.988s\nuser 87m24.916s\nsys 382m6.037s\n\nWith patch\n\nreal    4m18.607s\nuser    84m58.943s\nsys     50m52.682s\n\nWith config turned off\n\nreal    4m54.972s\nuser    90m13.456s\nsys     50m19.711s\n\nNOTE: The data looks counterintuitive due to the increased performance\nwith the patch, even over the config being turned off. We probably need\nmore runs, but so far all testing has shown that the patches definitely\nhelp.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Prarit Bhargava \u003cprarit@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.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": "4e41695356fb4e0b153be1440ad027e46e0a7ea2",
      "tree": "547dae77d1655a1acb260ea8b266c7b8a48f2d2c",
      "parents": [
        "75822b4495b62e8721e9b88e3cf9e653a0c85b73"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit reclaim on contention\n\nImplement reclaim from groups over their soft limit\n\nPermit reclaim from memory cgroups on contention (via the direct reclaim\npath).\n\nmemory cgroup soft limit reclaim finds the group that exceeds its soft\nlimit by the largest number of pages and reclaims pages from it and then\nreinserts the cgroup into its correct place in the rbtree.\n\nAdd additional checks to mem_cgroup_hierarchical_reclaim() to detect long\nloops in case all swap is turned off.  The code has been refactored and\nthe loop check (loop \u003c 2) has been enhanced for soft limits.  For soft\nlimits, we try to do more targetted reclaim.  Instead of bailing out after\ntwo loops, the routine now reclaims memory proportional to the size by\nwhich the soft limit is exceeded.  The proportion has been empirically\ndetermined.\n\n[akpm@linux-foundation.org: build fix]\n[kamezawa.hiroyu@jp.fujitsu.com: fix softlimit css refcnt handling]\n[nishimura@mxp.nes.nec.co.jp: refcount of the \"victim\" should be decremented before exiting the loop]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.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": "75822b4495b62e8721e9b88e3cf9e653a0c85b73",
      "tree": "b8d4c10f03a4e289f0a66b982243fd8980f9df07",
      "parents": [
        "f64c3f54940d6929a2b6dcffaab942bd62be2e66"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit refactor reclaim flags\n\nRefactor mem_cgroup_hierarchical_reclaim()\n\nRefactor the arguments passed to mem_cgroup_hierarchical_reclaim() into\nflags, so that new parameters don\u0027t have to be passed as we make the\nreclaim routine more flexible\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f64c3f54940d6929a2b6dcffaab942bd62be2e66",
      "tree": "7b3587700b08639970580be6c87f36df80ca8c74",
      "parents": [
        "296c81d89f4f14269f7346f81442910158c0a83a"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit organize cgroups\n\nOrganize cgroups over soft limit in a RB-Tree\n\nIntroduce an RB-Tree for storing memory cgroups that are over their soft\nlimit.  The overall goal is to\n\n1. Add a memory cgroup to the RB-Tree when the soft limit is exceeded.\n   We are careful about updates, updates take place only after a particular\n   time interval has passed\n2. We remove the node from the RB-Tree when the usage goes below the soft\n   limit\n\nThe next set of patches will exploit the RB-Tree to get the group that is\nover its soft limit by the largest amount and reclaim from it, when we\nface memory contention.\n\n[hugh.dickins@tiscali.co.uk: CONFIG_CGROUP_MEM_RES_CTLR\u003dy CONFIG_PREEMPT\u003dy fails to boot]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Jiri Slaby \u003cjirislaby@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": "296c81d89f4f14269f7346f81442910158c0a83a",
      "tree": "cf0e1facd1fed8282c1885bc4126e7bca1928712",
      "parents": [
        "a6df63615b943dbef22df04c19f4506330fe835e"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit interface\n\nAdd an interface to allow get/set of soft limits.  Soft limits for memory\nplus swap controller (memsw) is currently not supported.  Resource\ncounters have been enhanced to support soft limits and new type\nRES_SOFT_LIMIT has been added.  Unlike hard limits, soft limits can be\ndirectly set and do not need any reclaim or checks before setting them to\na newer value.\n\nKamezawa-San raised a question as to whether soft limit should belong to\nres_counter.  Since all resources understand the basic concepts of hard\nand soft limits, it is justified to add soft limits here.  Soft limits are\na generic resource usage feature, even file system quotas support soft\nlimits.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "261fb61a8bf6d3bd964ae6f1e6af49585d30db51",
      "tree": "417cebd2e18bc2457b5b09d8359ad71ba6afd56d",
      "parents": [
        "4b3bde4c983de36c59e6c1a24701f6fe816f9f55"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Sep 23 15:56:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "memcg: add comments explaining memory barriers\n\nAdd comments for the reason of smp_wmb() in mem_cgroup_commit_charge().\n\n[akpm@linux-foundation.org: coding-style fixes]\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-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": "4b3bde4c983de36c59e6c1a24701f6fe816f9f55",
      "tree": "e759c5ceccf57331b868b7feac61cae5e932c6d4",
      "parents": [
        "be367d09927023d081f9199665c8500f69f14d22"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "memcg: remove the overhead associated with the root cgroup\n\nChange the memory cgroup to remove the overhead associated with accounting\nall pages in the root cgroup.  As a side-effect, we can no longer set a\nmemory hard limit in the root cgroup.\n\nA new flag to track whether the page has been accounted or not has been\nadded as well.  Flags are now set atomically for page_cgroup,\npcg_default_flags is now obsolete and removed.\n\n[akpm@linux-foundation.org: fix a few documentation glitches]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.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": "be367d09927023d081f9199665c8500f69f14d22",
      "tree": "f0c5b9da037506da3c5890cf11b51b39a7d3c427",
      "parents": [
        "c378369d8b4fa516ff2b1e79c3eded4e0e955ebb"
      ],
      "author": {
        "name": "Ben Blum",
        "email": "bblum@google.com",
        "time": "Wed Sep 23 15:56:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:58 2009 -0700"
      },
      "message": "cgroups: let ss-\u003ecan_attach and ss-\u003eattach do whole threadgroups at a time\n\nAlter the ss-\u003ecan_attach and ss-\u003eattach functions to be able to deal with\na whole threadgroup at a time, for use in cgroup_attach_proc.  (This is a\npre-patch to cgroup-procs-writable.patch.)\n\nCurrently, new mode of the attach function can only tell the subsystem\nabout the old cgroup of the threadgroup leader.  No subsystem currently\nneeds that information for each thread that\u0027s being moved, but if one were\nto be added (for example, one that counts tasks within a group) this bit\nwould need to be reworked a bit to tell the subsystem the right\ninformation.\n\n[hidave.darkstar@gmail.com: fix build]\nSigned-off-by: Ben Blum \u003cbblum@google.com\u003e\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nAcked-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Young \u003chidave.darkstar@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": "2c6854fdadf940678fd54779b778f6faafb870bb",
      "tree": "0ed3efb3651813593e38e7976d1201a738b300a6",
      "parents": [
        "d2b5ec3aa0784335f031239e71fb50924cac9e0d"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "ieidus@redhat.com",
        "time": "Wed Sep 23 15:56:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:56 2009 -0700"
      },
      "message": "ksm: change default values to better fit into mainline kernel\n\nNow that ksm is in mainline it is better to change the default values to\nbetter fit to most of the users.\n\nThis patch change the ksm default values to be:\n\n\tksm_thread_pages_to_scan \u003d 100 (instead of 200)\n\tksm_thread_sleep_millisecs \u003d 20 (like before)\n\tksm_run \u003d KSM_RUN_STOP (instead of KSM_RUN_MERGE - meaning ksm is\n\t                        disabled by default)\n\tksm_max_kernel_pages \u003d nr_free_buffer_pages / 4 (instead of 2046)\n\nThe important aspect of this patch is: it disables ksm by default, and sets\nthe number of the kernel_pages that can be allocated to be a reasonable\nnumber.\n\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25d9e2d15286281ec834b829a4aaf8969011f1cd",
      "tree": "e4329a481ca197afae30f04335e023c7d04f7d67",
      "parents": [
        "eca6f534e61919b28fb21aafbd1c2983deae75be"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Fri Aug 21 02:35:05 2009 +1000"
      },
      "committer": {
        "name": "al",
        "email": "al@dizzy.pdmi.ras.ru",
        "time": "Thu Sep 24 08:41:47 2009 -0400"
      },
      "message": "truncate: new helpers\n\nIntroduce new truncate helpers truncate_pagecache and inode_newsize_ok.\nvmtruncate is also consolidated from mm/memory.c and mm/nommu.c and\ninto mm/truncate.c.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "db7907865817137bfa3d5b4b30de9cc859b41bf1",
      "tree": "06a03dc68b8792ddb75bf900325e195d9d72c26a",
      "parents": [
        "78f1c4d6b027993763a5aba83873b0462d06db8f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 24 09:34:52 2009 -0600"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 24 09:34:52 2009 +0930"
      },
      "message": "cpumask: use new-style cpumask ops in mm/quicklist.\n\nThis slipped past the previous sweeps.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4266c97a3ef4604561a22212eb0eab8a3c338971",
      "tree": "35b7627d6f8d1e5b236d604d02aaee8215fbb5c0",
      "parents": [
        "4fd8da8d62416d0dae05603ab5990a498d9aeb12"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Wed Sep 23 17:05:53 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 09:22:10 2009 -0700"
      },
      "message": "nommu: fix two build breakages\n\nMy 58fa879e1e640a1856f736b418984ebeccee1c95 \"mm: FOLL flags for GUP flags\"\nbroke CONFIG_NOMMU build by forgetting to update nommu.c foll_flags type:\n\n  mm/nommu.c:171: error: conflicting types for `__get_user_pages\u0027\n  mm/internal.h:254: error: previous declaration of `__get_user_pages\u0027 was here\n  make[1]: *** [mm/nommu.o] Error 1\n\nMy 03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5 \"mm: move highest_memmap_pfn\"\nbroke CONFIG_NOMMU build by forgetting to add a nommu.c highest_memmap_pfn:\n\n  mm/built-in.o: In function `memmap_init_zone\u0027:\n  (.meminit.text+0x326): undefined reference to `highest_memmap_pfn\u0027\n  mm/built-in.o: In function `memmap_init_zone\u0027:\n  (.meminit.text+0x32d): undefined reference to `highest_memmap_pfn\u0027\n\nFix both breakages, and give myself 30 lashes (ouch!)\n\nReported-by: Michal Simek \u003cmichal.simek@petalogix.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81ac3ad9061dd9cd490ee92f0c5316a14d77ce18",
      "tree": "1787b8c307b5e70e2763c4e7c0767c2b7e108dc4",
      "parents": [
        "26562c59fa9111ae3ea7b78045889662aac9e5ac"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Sep 22 16:45:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:42 2009 -0700"
      },
      "message": "kcore: register module area in generic way\n\nSome archs define MODULED_VADDR/MODULES_END which is not in VMALLOC area.\nThis is handled only in x86-64.  This patch make it more generic.  And we\ncan use vread/vwrite to access the area.  Fix it.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: WANG Cong \u003cxiyou.wangcong@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": "908eedc6168bd92e89f90d89fa389065a36358fa",
      "tree": "612881abb2aae920ab1e62e88990ee7b6a988f51",
      "parents": [
        "9492587cf35d370db33ef4b38375dfb35a105b61"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Sep 22 16:45:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:41 2009 -0700"
      },
      "message": "walk system ram range\n\nOriginally, walk_memory_resource() was introduced to traverse all memory\nof \"System RAM\" for detecting memory hotplug/unplug range.  For doing so,\nflags of IORESOUCE_MEM|IORESOURCE_BUSY was used and this was enough for\nmemory hotplug.\n\nBut for using other purpose, /proc/kcore, this may includes some firmware\narea marked as IORESOURCE_BUSY | IORESOUCE_MEM.  This patch makes the\ncheck strict to find out busy \"System RAM\".\n\nNote: PPC64 keeps their own walk_memory_resouce(), which walk through\nppc64\u0027s lmb informaton.  Because old kclist_add() is called per lmb, this\npatch makes no difference in behavior, finally.\n\nAnd this patch removes CONFIG_MEMORY_HOTPLUG check from this function.\nBecause pfn_valid() just show \"there is memmap or not* and cannot be used\nfor \"there is physical memory or not\", this function is useful in generic\nto scan physical memory range.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Américo Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d899bf7b55f503ba7d3d07ed27c3a37e270fa7db",
      "tree": "32a5ee7816b2f0cb3261dcca8102b9cafe9251bd",
      "parents": [
        "cba8aafe1e07dfc8bae5ba78be8e02883bd34d31"
      ],
      "author": {
        "name": "Stefani Seibold",
        "email": "stefani@seibold.net",
        "time": "Tue Sep 22 16:45:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 07:39:41 2009 -0700"
      },
      "message": "procfs: provide stack information for threads\n\nA patch to give a better overview of the userland application stack usage,\nespecially for embedded linux.\n\nCurrently you are only able to dump the main process/thread stack usage\nwhich is showed in /proc/pid/status by the \"VmStk\" Value.  But you get no\ninformation about the consumed stack memory of the the threads.\n\nThere is an enhancement in the /proc/\u003cpid\u003e/{task/*,}/*maps and which marks\nthe vm mapping where the thread stack pointer reside with \"[thread stack\nxxxxxxxx]\".  xxxxxxxx is the maximum size of stack.  This is a value\ninformation, because libpthread doesn\u0027t set the start of the stack to the\ntop of the mapped area, depending of the pthread usage.\n\nA sample output of /proc/\u003cpid\u003e/task/\u003ctid\u003e/maps looks like:\n\n08048000-08049000 r-xp 00000000 03:00 8312       /opt/z\n08049000-0804a000 rw-p 00001000 03:00 8312       /opt/z\n0804a000-0806b000 rw-p 00000000 00:00 0          [heap]\na7d12000-a7d13000 ---p 00000000 00:00 0\na7d13000-a7f13000 rw-p 00000000 00:00 0          [thread stack: 001ff4b4]\na7f13000-a7f14000 ---p 00000000 00:00 0\na7f14000-a7f36000 rw-p 00000000 00:00 0\na7f36000-a8069000 r-xp 00000000 03:00 4222       /lib/libc.so.6\na8069000-a806b000 r--p 00133000 03:00 4222       /lib/libc.so.6\na806b000-a806c000 rw-p 00135000 03:00 4222       /lib/libc.so.6\na806c000-a806f000 rw-p 00000000 00:00 0\na806f000-a8083000 r-xp 00000000 03:00 14462      /lib/libpthread.so.0\na8083000-a8084000 r--p 00013000 03:00 14462      /lib/libpthread.so.0\na8084000-a8085000 rw-p 00014000 03:00 14462      /lib/libpthread.so.0\na8085000-a8088000 rw-p 00000000 00:00 0\na8088000-a80a4000 r-xp 00000000 03:00 8317       /lib/ld-linux.so.2\na80a4000-a80a5000 r--p 0001b000 03:00 8317       /lib/ld-linux.so.2\na80a5000-a80a6000 rw-p 0001c000 03:00 8317       /lib/ld-linux.so.2\nafaf5000-afb0a000 rw-p 00000000 00:00 0          [stack]\nffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]\n\nAlso there is a new entry \"stack usage\" in /proc/\u003cpid\u003e/{task/*,}/status\nwhich will you give the current stack usage in kb.\n\nA sample output of /proc/self/status looks like:\n\nName:\tcat\nState:\tR (running)\nTgid:\t507\nPid:\t507\n.\n.\n.\nCapBnd:\tfffffffffffffeff\nvoluntary_ctxt_switches:\t0\nnonvoluntary_ctxt_switches:\t0\nStack usage:\t12 kB\n\nI also fixed stack base address in /proc/\u003cpid\u003e/{task/*,}/stat to the base\naddress of the associated thread stack and not the one of the main\nprocess.  This makes more sense.\n\n[akpm@linux-foundation.org: fs/proc/array.c now needs walk_page_range()]\nSigned-off-by: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: 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": "342ff1a1b558ebbdb8cbd55ab6a63eca8b2473ca",
      "tree": "1f967f283dade6e03897169bb29513354f49f910",
      "parents": [
        "50223e486cabdcf7e540e519da1f26bab3084e5d",
        "24ed7a97464db44592495f98cff8bcee02f92bc2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:51:45 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)\n  trivial: fix typo in aic7xxx comment\n  trivial: fix comment typo in drivers/ata/pata_hpt37x.c\n  trivial: typo in kernel-parameters.txt\n  trivial: fix typo in tracing documentation\n  trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c\n  trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c\n  trivial: remove unnecessary semicolons\n  trivial: Fix duplicated word \"options\" in comment\n  trivial: kbuild: remove extraneous blank line after declaration of usage()\n  trivial: improve help text for mm debug config options\n  trivial: doc: hpfall: accept disk device to unload as argument\n  trivial: doc: hpfall: reduce risk that hpfall can do harm\n  trivial: SubmittingPatches: Fix reference to renumbered step\n  trivial: fix typos \"man[ae]g?ment\" -\u003e \"management\"\n  trivial: media/video/cx88: add __init/__exit macros to cx88 drivers\n  trivial: fix typo in CONFIG_DEBUG_FS in gcov doc\n  trivial: fix missing printk space in amd_k7_smp_check\n  trivial: fix typo s/ketymap/keymap/ in comment\n  trivial: fix typo \"to to\" in multiple files\n  trivial: fix typos in comments s/DGBU/DBGU/\n  ...\n"
    },
    {
      "commit": "eb8cdec4a984fde123a91250dcc9e0bddf5eafdc",
      "tree": "9f97b5949e6e63ae947363149b62ed224dad5ab9",
      "parents": [
        "02e87d1a934c70e3599eb7a29db783806d329e17"
      ],
      "author": {
        "name": "Bernd Schmidt",
        "email": "bernds_cb1@t-online.de",
        "time": "Mon Sep 21 17:03:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:43 2009 -0700"
      },
      "message": "nommu: add support for Memory Protection Units (MPU)\n\nSome architectures (like the Blackfin arch) implement some of the\n\"simpler\" features that one would expect out of a MMU such as memory\nprotection.\n\nIn our case, we actually get read/write/exec protection down to the page\nboundary so processes can\u0027t stomp on each other let alone the kernel.\n\nThere is a performance decrease (which depends greatly on the workload)\nhowever as the hardware/software interaction was not optimized at design\ntime.\n\nSigned-off-by: Bernd Schmidt \u003cbernds_cb1@t-online.de\u003e\nSigned-off-by: Bryan Wu \u003ccooloney@kernel.org\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f68e14805085972b4e0b0ab684af37f713b9c262",
      "tree": "6e0cc9e1e3f29b36ec3d7acfaf863cf9bb39ea5b",
      "parents": [
        "3d2d827f5ca5e32816194119d5c980c7e04474a6"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Sep 21 17:03:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:42 2009 -0700"
      },
      "message": "mm: reduce atomic use on use_mm fast path\n\nWhen the mm being switched to matches the active mm, we don\u0027t need to\nincrement and then drop the mm count.  In a simple benchmark this happens\nin about 50% of time.  Making that conditional reduces contention on that\ncacheline on SMP systems.\n\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@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": "3d2d827f5ca5e32816194119d5c980c7e04474a6",
      "tree": "fe0e84669f5f20e1dff8e3dc6b191b4d5dfc0145",
      "parents": [
        "425fbf047cc70bb30dff368a6da02c8c2d229318"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Mon Sep 21 17:03:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:42 2009 -0700"
      },
      "message": "mm: move use_mm/unuse_mm from aio.c to mm/\n\nAnyone who wants to do copy to/from user from a kernel thread, needs\nuse_mm (like what fs/aio has).  Move that into mm/, to make reusing and\nexporting easier down the line, and make aio use it.  Next intended user,\nbesides aio, will be vhost-net.\n\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@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": "425fbf047cc70bb30dff368a6da02c8c2d229318",
      "tree": "7e71fc7a73c799debba250998ab3b3f56c124e90",
      "parents": [
        "6e17b17f1fc7b2f24383a693d63550d9e1460081"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Sep 21 17:03:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:42 2009 -0700"
      },
      "message": "shmem: initialize struct shmem_sb_info to zero\n\nFixes the following kmemcheck false positive (the compiler is using\na 32-bit mov to load the 16-bit sbinfo-\u003emode in shmem_fill_super):\n\n[    0.337000] Total of 1 processors activated (3088.38 BogoMIPS).\n[    0.352000] CPU0 attaching NULL sched-domain.\n[    0.360000] WARNING: kmemcheck: Caught 32-bit read from uninitialized\nmemory (9f8020fc)\n[    0.361000]\na44240820000000041f6998100000000000000000000000000000000ff030000\n[    0.368000]  i i i i i i i i i i i i i i i i u u u u i i i i i i i i i i u\nu\n[    0.375000]                                                          ^\n[    0.376000]\n[    0.377000] Pid: 9, comm: khelper Not tainted (2.6.31-tip #206) P4DC6\n[    0.378000] EIP: 0060:[\u003c810a3a95\u003e] EFLAGS: 00010246 CPU: 0\n[    0.379000] EIP is at shmem_fill_super+0xb5/0x120\n[    0.380000] EAX: 00000000 EBX: 9f845400 ECX: 824042a4 EDX: 8199f641\n[    0.381000] ESI: 9f8020c0 EDI: 9f845400 EBP: 9f81af68 ESP: 81cd6eec\n[    0.382000]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068\n[    0.383000] CR0: 8005003b CR2: 9f806200 CR3: 01ccd000 CR4: 000006d0\n[    0.384000] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000\n[    0.385000] DR6: ffff4ff0 DR7: 00000400\n[    0.386000]  [\u003c810c25fc\u003e] get_sb_nodev+0x3c/0x80\n[    0.388000]  [\u003c810a3514\u003e] shmem_get_sb+0x14/0x20\n[    0.390000]  [\u003c810c207f\u003e] vfs_kern_mount+0x4f/0x120\n[    0.392000]  [\u003c81b2849e\u003e] init_tmpfs+0x7e/0xb0\n[    0.394000]  [\u003c81b11597\u003e] do_basic_setup+0x17/0x30\n[    0.396000]  [\u003c81b11907\u003e] kernel_init+0x57/0xa0\n[    0.398000]  [\u003c810039b7\u003e] kernel_thread_helper+0x7/0x10\n[    0.400000]  [\u003cffffffff\u003e] 0xffffffff\n[    0.402000] khelper used greatest stack depth: 2820 bytes left\n[    0.407000] calling  init_mmap_min_addr+0x0/0x10 @ 1\n[    0.408000] initcall init_mmap_min_addr+0x0/0x10 returned 0 after 0 usecs\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAnalysed-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e52780d41a741fb4861ae1df2413dd816ec11b1",
      "tree": "b3722349661ed0ce87841b110f568616892cf719",
      "parents": [
        "90f72aa58bbf076b68e289fbd71eb829bc505923"
      ],
      "author": {
        "name": "Eric B Munson",
        "email": "ebmunson@us.ibm.com",
        "time": "Mon Sep 21 17:03:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:42 2009 -0700"
      },
      "message": "hugetlb: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions\n\nAdd a flag for mmap that will be used to request a huge page region that\nwill look like anonymous memory to userspace.  This is accomplished by\nusing a file on the internal vfsmount.  MAP_HUGETLB is a modifier of\nMAP_ANONYMOUS and so must be specified with it.  The region will behave\nthe same as a MAP_ANONYMOUS region using small pages.\n\n[akpm@linux-foundation.org: fix arch definitions of MAP_HUGETLB]\nSigned-off-by: Eric B Munson \u003cebmunson@us.ibm.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8dbf0a7a4c5d98e8b70da9f7f4f6a89f3b7a7bb",
      "tree": "1f40d51f39965017999c36e3a5ae78b67e43f5d5",
      "parents": [
        "252c5f94d944487e9f50ece7942b0fbf659c5c31"
      ],
      "author": {
        "name": "Huang Shijie",
        "email": "shijie8@gmail.com",
        "time": "Mon Sep 21 17:03:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mmap: save some cycles for the shared anonymous mapping\n\nshmem_zero_setup() does not change vm_start, pgoff or vm_flags, only some\ndrivers change them (such as /driver/video/bfin-t350mcqb-fb.c).\n\nMove these codes to a more proper place to save cycles for shared\nanonymous mapping.\n\nSigned-off-by: Huang Shijie \u003cshijie8@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "252c5f94d944487e9f50ece7942b0fbf659c5c31",
      "tree": "0dd21bdb968ce5bd3f30fadce261984d3b1abf98",
      "parents": [
        "3f96b79ad96263cc0ece7bb340cddf9b2ddfb1b3"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Sep 21 17:03:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mmap: avoid unnecessary anon_vma lock acquisition in vma_adjust()\n\nWe noticed very erratic behavior [throughput] with the AIM7 shared\nworkload running on recent distro [SLES11] and mainline kernels on an\n8-socket, 32-core, 256GB x86_64 platform.  On the SLES11 kernel\n[2.6.27.19+] with Barcelona processors, as we increased the load [10s of\nthousands of tasks], the throughput would vary between two \"plateaus\"--one\nat ~65K jobs per minute and one at ~130K jpm.  The simple patch below\ncauses the results to smooth out at the ~130k plateau.\n\nBut wait, there\u0027s more:\n\nWe do not see this behavior on smaller platforms--e.g., 4 socket/8 core.\nThis could be the result of the larger number of cpus on the larger\nplatform--a scalability issue--or it could be the result of the larger\nnumber of interconnect \"hops\" between some nodes in this platform and how\nthe tasks for a given load end up distributed over the nodes\u0027 cpus and\nmemories--a stochastic NUMA effect.\n\nThe variability in the results are less pronounced [on the same platform]\nwith Shanghai processors and with mainline kernels.  With 31-rc6 on\nShanghai processors and 288 file systems on 288 fibre attached storage\nvolumes, the curves [jpm vs load] are both quite flat with the patched\nkernel consistently producing ~3.9% better throughput [~80K jpm vs ~77K\njpm] than the unpatched kernel.\n\nProfiling indicated that the \"slow\" runs were incurring high[er]\ncontention on an anon_vma lock in vma_adjust(), apparently called from the\nsbrk() system call.\n\nThe patch:\n\nA comment in mm/mmap.c:vma_adjust() suggests that we don\u0027t really need the\nanon_vma lock when we\u0027re only adjusting the end of a vma, as is the case\nfor brk().  The comment questions whether it\u0027s worth while to optimize for\nthis case.  Apparently, on the newer, larger x86_64 platforms, with\ninteresting NUMA topologies, it is worth while--especially considering\nthat the patch [if correct!] is quite simple.\n\nWe can detect this condition--no overlap with next vma--by noting a NULL\n\"importer\".  The anon_vma pointer will also be NULL in this case, so\nsimply avoid loading vma-\u003eanon_vma to avoid the lock.\n\nHowever, we DO need to take the anon_vma lock when we\u0027re inserting a vma\n[\u0027insert\u0027 non-NULL] even when we have no overlap [NULL \"importer\"], so we\nneed to check for \u0027insert\u0027, as well.  And Hugh points out that we should\nalso take it when adjusting vm_start (so that rmap.c can rely upon\nvma_address() while it holds the anon_vma lock).\n\nakpm: Zhang Yanmin reprts a 150% throughput improvement with aim7, so it\nmight be -stable material even though thiss isn\u0027t a regression: \"this\nissue is not clear on dual socket Nehalem machine (2*4*2 cpu), but is\nsevere on large machine (4*8*2 cpu)\"\n\n[hugh.dickins@tiscali.co.uk: test vma start too]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Eric Whitney \u003ceric.whitney@hp.com\u003e\nTested-by: \"Zhang, Yanmin\" \u003cyanmin_zhang@linux.intel.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": "3f96b79ad96263cc0ece7bb340cddf9b2ddfb1b3",
      "tree": "0da9828c16543164f1b055fd927ea3e222ca05e5",
      "parents": [
        "cdf7b3418ad5a8783efe8f9124023d9b869fec0f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "tmpfs: depend on shmem\n\nCONFIG_SHMEM off gives you (ramfs masquerading as) tmpfs, even when\nCONFIG_TMPFS is off: that\u0027s a little anomalous, and I\u0027d intended to make\nmore sense of it by removing CONFIG_TMPFS altogether, always enabling its\ncode when CONFIG_SHMEM; but so many defconfigs have CONFIG_SHMEM on\nCONFIG_TMPFS off that we\u0027d better leave that as is.\n\nBut there is no point in asking for CONFIG_TMPFS if CONFIG_SHMEM is off:\nmake TMPFS depend on SHMEM, which also prevents TMPFS_POSIX_ACL\nshmem_acl.o being pointlessly built into the kernel when SHMEM is off.\n\nAnd a selfish change, to prevent the world from being rebuilt when I\nswitch between CONFIG_SHMEM on and off: the only CONFIG_SHMEM in the\nheader files is mm.h shmem_lock() - give that a shmem.c stub instead.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\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": "cdf7b3418ad5a8783efe8f9124023d9b869fec0f",
      "tree": "0504a26ba5d7cbbaa71bdd2911d55c6934de8be5",
      "parents": [
        "03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5"
      ],
      "author": {
        "name": "Huang Shijie",
        "email": "shijie8@gmail.com",
        "time": "Mon Sep 21 17:03:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mmap: remove unnecessary code\n\nIf (flags \u0026 MAP_LOCKED) is true, it means vm_flags has already contained\nthe bit VM_LOCKED which is set by calc_vm_flag_bits().\n\nSo there is no need to reset it again, just remove it.\n\nSigned-off-by: Huang Shijie \u003cshijie8@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5",
      "tree": "bf19c5019705796e90ef592233aca5f09025a92f",
      "parents": [
        "62eede62dafb4a6633eae7ffbeb34c60dba5e7b1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mm: move highest_memmap_pfn\n\nMove highest_memmap_pfn __read_mostly from page_alloc.c next to zero_pfn\n__read_mostly in memory.c: to help them share a cacheline, since they\u0027re\nvery often tested together in vm_normal_page().\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62eede62dafb4a6633eae7ffbeb34c60dba5e7b1",
      "tree": "e55a0ca4ad0c55ad162443146268cfb4c473750f",
      "parents": [
        "3ae77f43b1118a76ea37952d444319c15e002c03"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mm: ZERO_PAGE without PTE_SPECIAL\n\nReinstate anonymous use of ZERO_PAGE to all architectures, not just to\nthose which __HAVE_ARCH_PTE_SPECIAL: as suggested by Nick Piggin.\n\nContrary to how I\u0027d imagined it, there\u0027s nothing ugly about this, just a\nzero_pfn test built into one or another block of vm_normal_page().\n\nBut the MIPS ZERO_PAGE-of-many-colours case demands is_zero_pfn() and\nmy_zero_pfn() inlines.  Reinstate its mremap move_pte() shuffling of\nZERO_PAGEs we did from 2.6.17 to 2.6.19?  Not unless someone shouts for\nthat: it would have to take vm_flags to weed out some cases.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ae77f43b1118a76ea37952d444319c15e002c03",
      "tree": "78152c28d4c8be8da36148e2e38e87e1b08b839b",
      "parents": [
        "6e919717c82c5773ac671816c8392c70d261685f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:41 2009 -0700"
      },
      "message": "mm: hugetlbfs_pagecache_present\n\nRename hugetlbfs_backed() to hugetlbfs_pagecache_present()\nand add more comments, as suggested by Mel Gorman.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e919717c82c5773ac671816c8392c70d261685f",
      "tree": "76e22da3ba5000e4ea408315723cc67f3e4b6352",
      "parents": [
        "58fa879e1e640a1856f736b418984ebeccee1c95"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: m(un)lock avoid ZERO_PAGE\n\nI\u0027m still reluctant to clutter __get_user_pages() with another flag, just\nto avoid touching ZERO_PAGE count in mlock(); though we can add that later\nif it shows up as an issue in practice.\n\nBut when mlocking, we can test page-\u003emapping slightly earlier, to avoid\nthe potentially bouncy rescheduling of lock_page on ZERO_PAGE - mlock\ndidn\u0027t lock_page in olden ZERO_PAGE days, so we might have regressed.\n\nAnd when munlocking, it turns out that FOLL_DUMP coincidentally does\nwhat\u0027s needed to avoid all updates to ZERO_PAGE, so use that here also.\nPlus add comment suggested by KAMEZAWA Hiroyuki.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58fa879e1e640a1856f736b418984ebeccee1c95",
      "tree": "dc37bce8379e29c46e79f105cc71d137b14965cf",
      "parents": [
        "a13ea5b759645a0779edc6dbfec9abfd83220844"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: FOLL flags for GUP flags\n\n__get_user_pages() has been taking its own GUP flags, then processing\nthem into FOLL flags for follow_page().  Though oddly named, the FOLL\nflags are more widely used, so pass them to __get_user_pages() now.\nSorry, VM flags, VM_FAULT flags and FAULT_FLAGs are still distinct.\n\n(The patch to __get_user_pages() looks peculiar, with both gup_flags\nand foll_flags: the gup_flags remain constant; but as before there\u0027s\nan exceptional case, out of scope of the patch, in which foll_flags\nper page have FOLL_WRITE masked off.)\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a13ea5b759645a0779edc6dbfec9abfd83220844",
      "tree": "864dd495718195bd065d9f26edac2504e6de5af0",
      "parents": [
        "1ac0cb5d0e22d5e483f56b2bc12172dec1cf7536"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: reinstate ZERO_PAGE\n\nKAMEZAWA Hiroyuki has observed customers of earlier kernels taking\nadvantage of the ZERO_PAGE: which we stopped do_anonymous_page() from\nusing in 2.6.24.  And there were a couple of regression reports on LKML.\n\nFollowing suggestions from Linus, reinstate do_anonymous_page() use of\nthe ZERO_PAGE; but this time avoid dirtying its struct page cacheline\nwith (map)count updates - let vm_normal_page() regard it as abnormal.\n\nUse it only on arches which __HAVE_ARCH_PTE_SPECIAL (x86, s390, sh32,\nmost powerpc): that\u0027s not essential, but minimizes additional branches\n(keeping them in the unlikely pte_special case); and incidentally\nexcludes mips (some models of which needed eight colours of ZERO_PAGE\nto avoid costly exceptions).\n\nDon\u0027t be fanatical about avoiding ZERO_PAGE updates: get_user_pages()\ncallers won\u0027t want to make exceptions for it, so increment its count\nthere.  Changes to mlock and migration? happily seems not needed.\n\nIn most places it\u0027s quicker to check pfn than struct page address:\nprepare a __read_mostly zero_pfn for that.  Does get_dump_page()\nstill need its ZERO_PAGE check? probably not, but keep it anyway.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ac0cb5d0e22d5e483f56b2bc12172dec1cf7536",
      "tree": "68114711dc747a557895896af991623438034c2d",
      "parents": [
        "2a15efc953b26ad57d7d38b9e6782d57e53b4ab2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: fix anonymous dirtying\n\ndo_anonymous_page() has been wrong to dirty the pte regardless.\nIf it\u0027s not going to mark the pte writable, then it won\u0027t help\nto mark it dirty here, and clogs up memory with pages which will\nneed swap instead of being thrown away.  Especially wrong if no\novercommit is chosen, and this vma is not yet VM_ACCOUNTed -\nwe could exceed the limit and OOM despite no overcommit.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \u003cstable@kernel.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a15efc953b26ad57d7d38b9e6782d57e53b4ab2",
      "tree": "f4d04903b3303e80460d2fa3f38da2b7eea82d22",
      "parents": [
        "8e4b9a60718970bbc02dfd3abd0b956ab65af231"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: follow_hugetlb_page flags\n\nfollow_hugetlb_page() shouldn\u0027t be guessing about the coredump case\neither: pass the foll_flags down to it, instead of just the write bit.\n\nRemove that obscure huge_zeropage_ok() test.  The decision is easy,\nthough unlike the non-huge case - here vm_ops-\u003efault is always set.\nBut we know that a fault would serve up zeroes, unless there\u0027s\nalready a hugetlbfs pagecache page to back the range.\n\n(Alternatively, since hugetlb pages aren\u0027t swapped out under pressure,\nyou could save more dump space by arguing that a page not yet faulted\ninto this process cannot be relevant to the dump; but that would be\nmore surprising.)\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e4b9a60718970bbc02dfd3abd0b956ab65af231",
      "tree": "4c19152cea19882071a74f92c0cf6a16d5711f41",
      "parents": [
        "f3e8fccd06d27773186a0094371daf2d84c79469"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: FOLL_DUMP replace FOLL_ANON\n\nThe \"FOLL_ANON optimization\" and its use_zero_page() test have caused\nconfusion and bugs: why does it test VM_SHARED? for the very good but\nunsatisfying reason that VMware crashed without.  As we look to maybe\nreinstating anonymous use of the ZERO_PAGE, we need to sort this out.\n\nEasily done: it\u0027s silly for __get_user_pages() and follow_page() to\nbe guessing whether it\u0027s safe to assume that they\u0027re being used for\na coredump (which can take a shortcut snapshot where other uses must\nhandle a fault) - just tell them with GUP_FLAGS_DUMP and FOLL_DUMP.\n\nget_dump_page() doesn\u0027t even want a ZERO_PAGE: an error suits fine.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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": "f3e8fccd06d27773186a0094371daf2d84c79469",
      "tree": "46e652e6ac3588a26c6d3e38ea10274eb3fc2ea8",
      "parents": [
        "1c3aff1ceec2cc86810e2690e67873ff0c505862"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: add get_dump_page\n\nIn preparation for the next patch, add a simple get_dump_page(addr)\ninterface for the CONFIG_ELF_CORE dumpers to use, instead of calling\nget_user_pages() directly.  They\u0027re not interested in errors: they\njust want to use holes as much as possible, to save space and make\nsure that the data is aligned where the headers said it would be.\n\nOh, and don\u0027t use that horrid DUMP_SEEK(off) macro!\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c3aff1ceec2cc86810e2690e67873ff0c505862",
      "tree": "bf2f1badfd3f8859299f00c8a95c0a11e5cfa778",
      "parents": [
        "408e82b78bcc9f1b47c76e833c3df97f675947de"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: remove unused GUP flags\n\nGUP_FLAGS_IGNORE_VMA_PERMISSIONS and GUP_FLAGS_IGNORE_SIGKILL were\nflags added solely to prevent __get_user_pages() from doing some of\nwhat it usually does, in the munlock case: we can now remove them.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "408e82b78bcc9f1b47c76e833c3df97f675947de",
      "tree": "393fb1c659f3fe23928c722d3cffcac3429c1aee",
      "parents": [
        "5d3bc2709114b416cab588c577e02c2470e40a6c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:03:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:40 2009 -0700"
      },
      "message": "mm: munlock use follow_page\n\nHiroaki Wakabayashi points out that when mlock() has been interrupted\nby SIGKILL, the subsequent munlock() takes unnecessarily long because\nits use of __get_user_pages() insists on faulting in all the pages\nwhich mlock() never reached.\n\nIt\u0027s worse than slowness if mlock() is terminated by Out Of Memory kill:\nthe munlock_vma_pages_all() in exit_mmap() insists on faulting in all the\npages which mlock() could not find memory for; so innocent bystanders are\nkilled too, and perhaps the system hangs.\n\n__get_user_pages() does a lot that\u0027s silly for munlock(): so remove the\nmunlock option from __mlock_vma_pages_range(), and use a simple loop of\nfollow_page()s in munlock_vma_pages_range() instead; ignoring absent\npages, and not marking present pages as accessed or dirty.\n\n(Change munlock() to only go so far as mlock() reached?  That does not\nwork out, given the convention that mlock() claims complete success even\nwhen it has to give up early - in part so that an underlying file can be\nextended later, and those pages locked which earlier would give SIGBUS.)\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \u003cstable@kernel.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Hiroaki Wakabayashi \u003cprimulaelatior@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": "a6f9edd65beaef24836e8934c8912c1e974dd45c",
      "tree": "041c60ed559d3bc1f289d0040e75cfdd78f0acd0",
      "parents": [
        "5f8dcc21211a3d4e3a7a5ca366b469fb88117f61"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:03:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "page-allocator: maintain rolling count of pages to free from the PCP\n\nWhen round-robin freeing pages from the PCP lists, empty lists may be\nencountered.  In the event one of the lists has more pages than another,\nthere may be numerous checks for list_empty() which is undesirable.  This\npatch maintains a count of pages to free which is incremented when empty\nlists are encountered.  The intention is that more pages will then be\nfreed from fuller lists than the empty ones reducing the number of empty\nlist checks in the free path.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.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": "5f8dcc21211a3d4e3a7a5ca366b469fb88117f61",
      "tree": "4bbb1b55c7787462fe313c7c003e77823c032422",
      "parents": [
        "5d863b89688e5811cd9e5bd0082cb38abe03adf3"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:03:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "page-allocator: split per-cpu list into one-list-per-migrate-type\n\nThe following two patches remove searching in the page allocator fast-path\nby maintaining multiple free-lists in the per-cpu structure.  At the time\nthe search was introduced, increasing the per-cpu structures would waste a\nlot of memory as per-cpu structures were statically allocated at\ncompile-time.  This is no longer the case.\n\nThe patches are as follows. They are based on mmotm-2009-08-27.\n\nPatch 1 adds multiple lists to struct per_cpu_pages, one per\n\tmigratetype that can be stored on the PCP lists.\n\nPatch 2 notes that the pcpu drain path check empty lists multiple times. The\n\tpatch reduces the number of checks by maintaining a count of free\n\tlists encountered. Lists containing pages will then free multiple\n\tpages in batch\n\nThe patches were tested with kernbench, netperf udp/tcp, hackbench and\nsysbench.  The netperf tests were not bound to any CPU in particular and\nwere run such that the results should be 99% confidence that the reported\nresults are within 1% of the estimated mean.  sysbench was run with a\npostgres background and read-only tests.  Similar to netperf, it was run\nmultiple times so that it\u0027s 99% confidence results are within 1%.  The\npatches were tested on x86, x86-64 and ppc64 as\n\nx86:\tIntel Pentium D 3GHz with 8G RAM (no-brand machine)\n\tkernbench\t- No significant difference, variance well within noise\n\tnetperf-udp\t- 1.34% to 2.28% gain\n\tnetperf-tcp\t- 0.45% to 1.22% gain\n\thackbench\t- Small variances, very close to noise\n\tsysbench\t- Very small gains\n\nx86-64:\tAMD Phenom 9950 1.3GHz with 8G RAM (no-brand machine)\n\tkernbench\t- No significant difference, variance well within noise\n\tnetperf-udp\t- 1.83% to 10.42% gains\n\tnetperf-tcp\t- No conclusive until buffer \u003e\u003d PAGE_SIZE\n\t\t\t\t4096\t+15.83%\n\t\t\t\t8192\t+ 0.34% (not significant)\n\t\t\t\t16384\t+ 1%\n\thackbench\t- Small gains, very close to noise\n\tsysbench\t- 0.79% to 1.6% gain\n\nppc64:\tPPC970MP 2.5GHz with 10GB RAM (it\u0027s a terrasoft powerstation)\n\tkernbench\t- No significant difference, variance well within noise\n\tnetperf-udp\t- 2-3% gain for almost all buffer sizes tested\n\tnetperf-tcp\t- losses on small buffers, gains on larger buffers\n\t\t\t  possibly indicates some bad caching effect.\n\thackbench\t- No significant difference\n\tsysbench\t- 2-4% gain\n\nThis patch:\n\nCurrently the per-cpu page allocator searches the PCP list for pages of\nthe correct migrate-type to reduce the possibility of pages being\ninappropriate placed from a fragmentation perspective.  This search is\npotentially expensive in a fast-path and undesirable.  Splitting the\nper-cpu list into multiple lists increases the size of a per-cpu structure\nand this was potentially a major problem at the time the search was\nintroduced.  These problem has been mitigated as now only the necessary\nnumber of structures is allocated for the running system.\n\nThis patch replaces a list search in the per-cpu allocator with one list\nper migrate type.  The potential snag with this approach is when bulk\nfreeing pages.  We round-robin free pages based on migrate type which has\nlittle bearing on the cache hotness of the page and potentially checks\nempty lists repeatedly in the event the majority of PCP pages are of one\ntype.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.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": "8c5cd6f3a1721085652da204d454af4f8b92eda2",
      "tree": "3fcb6f4cd7e5981c2713f05340ec931574768cff",
      "parents": [
        "495789a51a91cb8c015d8d77fecbac1caf20b186"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: oom_kill doesn\u0027t kill vfork parent (or child)\n\nCurrent oom_kill doesn\u0027t only kill the victim process, but also kill all\nthas shread the same mm.  it mean vfork parent will be killed.\n\nThis is definitely incorrect.  another process have another oom_adj.  we\nshouldn\u0027t ignore their oom_adj (it might have OOM_DISABLE).\n\nfollowing caller hit the minefield.\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\n        switch (constraint) {\n        case CONSTRAINT_MEMORY_POLICY:\n                oom_kill_process(current, gfp_mask, order, 0, NULL,\n                                \"No available memory (MPOL_BIND)\");\n                break;\n\nNote: force_sig(SIGKILL) send SIGKILL to all thread in the process.\nWe don\u0027t need to care multi thread in here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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: Oleg Nesterov \u003coleg@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": "495789a51a91cb8c015d8d77fecbac1caf20b186",
      "tree": "ac2a71ed40ed84f5673326aa6bf7f278b54d989a",
      "parents": [
        "28b83c5193e7ab951e402252278f2cc79dc4d298"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: make oom_score to per-process value\n\noom-killer kills a process, not task.  Then oom_score should be calculated\nas per-process too.  it makes consistency more and makes speed up\nselect_bad_process().\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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: Oleg Nesterov \u003coleg@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": "28b83c5193e7ab951e402252278f2cc79dc4d298",
      "tree": "10080e8d3957c2a03f8419ab44c9ecb0ffcdaee0",
      "parents": [
        "f168e1b6390e2d79cf57e48e6ae6d9b0a9e2851a"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:03:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "oom: move oom_adj value from task_struct to signal_struct\n\nCurrently, OOM logic callflow is here.\n\n    __out_of_memory()\n        select_bad_process()            for each task\n            badness()                   calculate badness of one task\n                oom_kill_process()      search child\n                    oom_kill_task()     kill target task and mm shared tasks with it\n\nexample, process-A have two thread, thread-A and thread-B and it have very\nfat memory and each thread have following oom_adj and oom_score.\n\n     thread-A: oom_adj \u003d OOM_DISABLE, oom_score \u003d 0\n     thread-B: oom_adj \u003d 0,           oom_score \u003d very-high\n\nThen, select_bad_process() select thread-B, but oom_kill_task() refuse\nkill the task because thread-A have OOM_DISABLE.  Thus __out_of_memory()\ncall select_bad_process() again.  but select_bad_process() select the same\ntask.  It mean kernel fall in livelock.\n\nThe fact is, select_bad_process() must select killable task.  otherwise\nOOM logic go into livelock.\n\nAnd root cause is, oom_adj shouldn\u0027t be per-thread value.  it should be\nper-process value because OOM-killer kill a process, not thread.  Thus\nThis patch moves oomkilladj (now more appropriately named oom_adj) from\nstruct task_struct to struct signal_struct.  it naturally prevent\nselect_bad_process() choose wrong task.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\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: Rik van Riel \u003criel@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "f168e1b6390e2d79cf57e48e6ae6d9b0a9e2851a",
      "tree": "8b265240661b26cea90aebd279cd420bfbfcd368",
      "parents": [
        "f86296317434b21585e229f6c49a33cb9ebab4d3"
      ],
      "author": {
        "name": "Vincent Li",
        "email": "macli@brc.ubc.ca",
        "time": "Mon Sep 21 17:03:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "mm/vmscan: remove page_queue_congested() comment\n\nCommit 084f71ae5c(kill page_queue_congested()) removed\npage_queue_congested().  Remove the page_queue_congested() comment in\nvmscan pageout() too.\n\nSigned-off-by: Vincent Li \u003cmacli@brc.ubc.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f86296317434b21585e229f6c49a33cb9ebab4d3",
      "tree": "d4fb05d4aee1a8e373ec053e7316dc9847b2c417",
      "parents": [
        "1a8670a29b5277cbe601f74ab63d2c5211fb3005"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Sep 21 17:03:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:39 2009 -0700"
      },
      "message": "mm: do batched scans for mem_cgroup\n\nFor mem_cgroup, shrink_zone() may call shrink_list() with nr_to_scan\u003d1, in\nwhich case shrink_list() _still_ calls isolate_pages() with the much\nlarger SWAP_CLUSTER_MAX.  It effectively scales up the inactive list scan\nrate by up to 32 times.\n\nFor example, with 16k inactive pages and DEF_PRIORITY\u003d12, (16k \u003e\u003e 12)\u003d4.\nSo when shrink_zone() expects to scan 4 pages in the active/inactive list,\nthe active list will be scanned 4 pages, while the inactive list will be\n(over) scanned SWAP_CLUSTER_MAX\u003d32 pages in effect.  And that could break\nthe balance between the two lists.\n\nIt can further impact the scan of anon active list, due to the anon\nactive/inactive ratio rebalance logic in balance_pgdat()/shrink_zone():\n\ninactive anon list over scanned \u003d\u003e inactive_anon_is_low() \u003d\u003d TRUE\n                                \u003d\u003e shrink_active_list()\n                                \u003d\u003e active anon list over scanned\n\nSo the end result may be\n\n- anon inactive  \u003d\u003e over scanned\n- anon active    \u003d\u003e over scanned (maybe not as much)\n- file inactive  \u003d\u003e over scanned\n- file active    \u003d\u003e under scanned (relatively)\n\nThe accesses to nr_saved_scan are not lock protected and so not 100%\naccurate, however we can tolerate small errors and the resulted small\nimbalanced scan rates between zones.\n\nCc: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b21767637c3c99890a248fe47ac414e51cf5eb7",
      "tree": "ebedeecddd3e8d7d665464c4fadbea40ee43a317",
      "parents": [
        "2c85f51d222ccdd8c401d77a36b723a89156810d"
      ],
      "author": {
        "name": "Vincent Li",
        "email": "macli@brc.ubc.ca",
        "time": "Mon Sep 21 17:03:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm/vmscan: rename zone_nr_pages() to zone_nr_lru_pages()\n\nThe name `zone_nr_pages\u0027 can be mis-read as zone\u0027s (total) number pages,\nbut it actually returns zone\u0027s LRU list number pages.\n\nSigned-off-by: Vincent Li \u003cmacli@brc.ubc.ca\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.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": "2c85f51d222ccdd8c401d77a36b723a89156810d",
      "tree": "fb94c6ea243504043e434f0a7d26cfd4831b33a9",
      "parents": [
        "3c1596efe167322dae87f8390d36f91ce2d7f936"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: also use alloc_large_system_hash() for the PID hash table\n\nThis is being done by allowing boot time allocations to specify that they\nmay want a sub-page sized amount of memory.\n\nOverall this seems more consistent with the other hash table allocations,\nand allows making two supposedly mm-only variables really mm-only\n(nr_{kernel,all}_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.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": "4481374ce88ba8f460c8b89f2572027bd27057d0",
      "tree": "6896601b6a1da0e3e932ffa75fcff966c834c02c",
      "parents": [
        "4738e1b9cf8f9e28d7de080a5e6ce5d0095ea18f"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: replace various uses of num_physpages by totalram_pages\n\nSizing of memory allocations shouldn\u0027t depend on the number of physical\npages found in a system, as that generally includes (perhaps a huge amount\nof) non-RAM pages.  The amount of what actually is usable as storage\nshould instead be used as a basis here.\n\nSome of the calculations (i.e.  those not intending to use high memory)\nshould likely even use (totalram_pages - totalhigh_pages).\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4738e1b9cf8f9e28d7de080a5e6ce5d0095ea18f",
      "tree": "96804aacfd79495dbb787055473f92ccb6dab65d",
      "parents": [
        "78986a678f6ec3759a01976749f4437d8bf2d6c3"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Sep 21 17:03:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "memory hotplug: fix updating of num_physpages for hot plugged memory\n\nSizing of memory allocations shouldn\u0027t depend on the number of physical\npages found in a system, as that generally includes (perhaps a huge amount\nof) non-RAM pages.  The amount of what actually is usable as storage\nshould instead be used as a basis here.\n\nIn line with that, the memory hotplug code should update num_physpages in\na way that it retains its original (post-boot) meaning; in particular,\ndecreasing the value should at best be done with great care - this patch\ndoesn\u0027t try to ever decrease this value at all as it doesn\u0027t really seem\nmeaningful to do so.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Dave Hansen \u003chaveblue@us.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": "78986a678f6ec3759a01976749f4437d8bf2d6c3",
      "tree": "ec3a4f4d3fe5a40f8809657341ad34a9fc8eb61c",
      "parents": [
        "ceddc3a52d783fabbf1ba623601419b9d6337194"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:03:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "page-allocator: limit the number of MIGRATE_RESERVE pageblocks per zone\n\nAfter anti-fragmentation was merged, a bug was reported whereby devices\nthat depended on high-order atomic allocations were failing.  The solution\nwas to preserve a property in the buddy allocator which tended to keep the\nminimum number of free pages in the zone at the lower physical addresses\nand contiguous.  To preserve this property, MIGRATE_RESERVE was introduced\nand a number of pageblocks at the start of a zone would be marked\n\"reserve\", the number of which depended on min_free_kbytes.\n\nAnti-fragmentation works by avoiding the mixing of page migratetypes\nwithin the same pageblock.  One way of helping this is to increase\nmin_free_kbytes because it becomes less like that it will be necessary to\nplace pages of of MIGRATE_RESERVE is unbounded, the free memory is kept\nthere in large contiguous blocks instead of helping anti-fragmentation as\nmuch as it should.  With the page-allocator tracepoint patches applied, it\nwas found during anti-fragmentation tests that the number of\nfragmentation-related events were far higher than expected even with\nmin_free_kbytes at higher values.\n\nThis patch limits the number of MIGRATE_RESERVE blocks that exist per zone\nto two.  For example, with a sufficient min_free_kbytes, 4MB of memory\nwill be kept aside on an x86-64 and remain more or less free and\ncontiguous for the systems uptime.  This should be sufficient for devices\ndepending on high-order atomic allocations while helping fragmentation\ncontrol when min_free_kbytes is tuned appropriately.  As side-effect of\nthis patch is that the reserve variable is converted to int as unsigned\nlong was the wrong type to use when ensuring that only the required number\nof reserve blocks are created.\n\nWith the patches applied, fragmentation-related events as measured by the\npage allocator tracepoints were significantly reduced when running some\nfragmentation stress-tests on systems with min_free_kbytes tuned to a\nvalue appropriate for hugepage allocations at runtime.  On x86, the events\nrecorded were reduced by 99.8%, on x86-64 by 99.72% and on ppc64 by\n99.83%.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\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": "ceddc3a52d783fabbf1ba623601419b9d6337194",
      "tree": "651d0fd4d5bf2455468f90364b88f01f982d79af",
      "parents": [
        "edcf4748cd56adcdf0856cc99ef108a4ea3ac7fe"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:03:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: document is_page_cache_freeable()\n\nEnlighten the reader of this code about what reference count makes a page\ncache page freeable.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "edcf4748cd56adcdf0856cc99ef108a4ea3ac7fe",
      "tree": "317d477d08dea82f5eef2e9c17294d0f0639ea81",
      "parents": [
        "6c0b13519d1c755d874e82c8fb8a6dcef0ee402c"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:02:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:38 2009 -0700"
      },
      "message": "mm: return boolean from page_has_private()\n\nMake page_has_private() return a true boolean value and remove the double\nnegations from the two callsites using it for arithmetic.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c0b13519d1c755d874e82c8fb8a6dcef0ee402c",
      "tree": "0fe6e6902a488ad6c59ecee971fe64c81edbcce3",
      "parents": [
        "401a8e1c1670085b8177330ca47d4f7c4ac88761"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:02:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:37 2009 -0700"
      },
      "message": "mm: return boolean from page_is_file_cache()\n\npage_is_file_cache() has been used for both boolean checks and LRU\narithmetic, which was always a bit weird.\n\nNow that page_lru_base_type() exists for LRU arithmetic, make\npage_is_file_cache() a real predicate function and adjust the\nboolean-using callsites to drop those pesky double negations.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "401a8e1c1670085b8177330ca47d4f7c4ac88761",
      "tree": "5883daaed42fa2a186e5769bab1c10535dc39a41",
      "parents": [
        "b7c46d151cb82856a429709d1227ba1648028232"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:02:58 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: introduce page_lru_base_type()\n\nInstead of abusing page_is_file_cache() for LRU list index arithmetic, add\nanother helper with a more appropriate name and convert the non-boolean\nusers of page_is_file_cache() accordingly.\n\nThis new helper gives the LRU base type a page is supposed to live on,\ninactive anon or inactive file.\n\n[hugh.dickins@tiscali.co.uk: convert del_page_from_lru() also]\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b7c46d151cb82856a429709d1227ba1648028232",
      "tree": "b93012b4bb2ffd603c020b38d8f1f6f3b4714ff7",
      "parents": [
        "bba78819548a59a52e60f0b259997bbd011164ae"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:02:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: drop unneeded double negations\n\nRemove double negations where the operand is already boolean.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bba78819548a59a52e60f0b259997bbd011164ae",
      "tree": "1d788069848ba86906269d8eb8b1b13119260e5a",
      "parents": [
        "bbba809e96539672f775a3d70102657d05816a5b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 21 17:02:56 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: remove broken \u0027kzalloc\u0027 mempool\n\nThe kzalloc mempool zeros items when they are initially allocated, but\ndoes not rezero used items that are returned to the pool.  Consequently\nmempool_alloc()s may return non-zeroed memory.\n\nSince there are/were only two in-tree users for\nmempool_create_kzalloc_pool(), and \u0027fixing\u0027 this in a way that will\nre-zero used (but not new) items before first use is non-trivial, just\nremove it.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72ff13b7036bc7923e0f2b5f4a724ca260d49aab",
      "tree": "5c2cd317f9001ce5a49341852ccb1f1bf291e089",
      "parents": [
        "cff397e6b3c5bd67e26946792e81ab064c9acc1f"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@kernel.org",
        "time": "Mon Sep 21 17:02:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: includecheck fix for mm/nommu.c\n\nFix the following \u0027make includecheck\u0027 warning:\n\n  mm/nommu.c: internal.h is included more than once.\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cff397e6b3c5bd67e26946792e81ab064c9acc1f",
      "tree": "2edb4c761d81ed9d2c99b03ce1ab928f7caa5951",
      "parents": [
        "2ca4532a49be92d7b2766c3244b30fa8bfb0114d"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@kernel.org",
        "time": "Mon Sep 21 17:02:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: includecheck fix for mm/shmem.c\n\nFix the following \u0027make includecheck\u0027 warning:\n\n  mm/shmem.c: linux/vfs.h is included more than once.\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ca4532a49be92d7b2766c3244b30fa8bfb0114d",
      "tree": "1dc838cebacb10317dff78ceccd50b97e24c4f7f",
      "parents": [
        "31a5639623a487d6db996c8138c9e53fef2e2d91"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Mon Sep 21 17:02:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: add_to_swap_cache() does not return -EEXIST\n\nAfter commit 355cfa73 (\"mm: modify swap_map and add SWAP_HAS_CACHE flag\"),\nonly the context which have set SWAP_HAS_CACHE flag by swapcache_prepare()\nor get_swap_page() would call add_to_swap_cache().  So add_to_swap_cache()\ndoesn\u0027t return -EEXIST any more.\n\nEven though it doesn\u0027t return -EEXIST, it\u0027s not good behavior conceptually\nto call swapcache_prepare() in the -EEXIST case, because it means clearing\nSWAP_HAS_CACHE flag while the entry is on swap cache.\n\nThis patch removes redundant codes and comments from callers of it, and\nadds VM_BUG_ON() in error path of add_to_swap_cache() and some comments.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31a5639623a487d6db996c8138c9e53fef2e2d91",
      "tree": "4fff22b4a0333df084a6cd89e8ecbc332dbfa299",
      "parents": [
        "8fbb398f5c78832ee61e0d5ed0793fa8857bd853"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Mon Sep 21 17:02:50 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:35 2009 -0700"
      },
      "message": "mm: add_to_swap_cache() must not sleep\n\nAfter commit 355cfa73 (\"mm: modify swap_map and add SWAP_HAS_CACHE flag\"),\nread_swap_cache_async() will busy-wait while a entry doesn\u0027t exist in swap\ncache but it has SWAP_HAS_CACHE flag.\n\nSuch entries can exist on add/delete path of swap cache.  On add path,\nadd_to_swap_cache() is called soon after SWAP_HAS_CACHE flag is set, and\non delete path, swapcache_free() will be called (SWAP_HAS_CACHE flag is\ncleared) soon after __delete_from_swap_cache() is called.  So, the\nbusy-wait works well in most cases.\n\nBut this mechanism can cause soft lockup if add_to_swap_cache() sleeps and\nread_swap_cache_async() tries to swap-in the same entry on the same cpu.\n\nThis patch calls radix_tree_preload() before swapcache_prepare() and\ndivides add_to_swap_cache() into two part: radix_tree_preload() part and\nradix_tree_insert() part(define it as __add_to_swap_cache()).\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0d3d062a6e289e065bd0aa537a6806a1806bf8aa",
      "tree": "9895e9cb48674d072885af3424e1ef145ec81f28",
      "parents": [
        "e0fff1bd12469c45dab088e353d8882761387bb6"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "tracing, page-allocator: add trace event for page traffic related to the buddy lists\n\nThe page allocation trace event reports that a page was successfully\nallocated but it does not specify where it came from.  When analysing\nperformance, it can be important to distinguish between pages coming from\nthe per-cpu allocator and pages coming from the buddy lists as the latter\nrequires the zone lock to the taken and more data structures to be\nexamined.\n\nThis patch adds a trace event for __rmqueue reporting when a page is being\nallocated from the buddy lists.  It distinguishes between being called to\nrefill the per-cpu lists or whether it is a high-order allocation.\nSimilarly, this patch adds an event to catch when the PCP lists are being\ndrained a little and pages are going back to the buddy lists.\n\nThis is trickier to draw conclusions from but high activity on those\nevents could explain why there were a large number of cache misses on a\npage-allocator-intensive workload.  The coalescing and splitting of\nbuddies involves a lot of writing of page metadata and cache line bounces\nnot to mention the acquisition of an interrupt-safe lock necessary to\nenter this path.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0fff1bd12469c45dab088e353d8882761387bb6",
      "tree": "dc120a7597bbd4f3841f951346dbe1f7b85dd3fb",
      "parents": [
        "4b4f278c030aa4b6ee0915f396e9a9478d92d610"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "tracing, page-allocator: add trace events for anti-fragmentation falling back to other migratetypes\n\nFragmentation avoidance depends on being able to use free pages from lists\nof the appropriate migrate type.  In the event this is not possible,\n__rmqueue_fallback() selects a different list and in some circumstances\nchange the migratetype of the pageblock.  Simplistically, the more times\nthis event occurs, the more likely that fragmentation will be a problem\nlater for hugepage allocation at least but there are other considerations\nsuch as the order of page being split to satisfy the allocation.\n\nThis patch adds a trace event for __rmqueue_fallback() that reports what\npage is being used for the fallback, the orders of relevant pages, the\ndesired migratetype and the migratetype of the lists being used, whether\nthe pageblock changed type and whether this event is important with\nrespect to fragmentation avoidance or not.  This information can be used\nto help analyse fragmentation avoidance and help decide whether\nmin_free_kbytes should be increased or not.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b4f278c030aa4b6ee0915f396e9a9478d92d610",
      "tree": "10825c2d197977bc9080093a6ecbd3ce80723876",
      "parents": [
        "38a398572fa2d8124f7479e40db581b5b72719c9"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "tracing, page-allocator: add trace events for page allocation and page freeing\n\nThis patch adds trace events for the allocation and freeing of pages,\nincluding the freeing of pagevecs.  Using the events, it will be known\nwhat struct page and pfns are being allocated and freed and what the call\nsite was in many cases.\n\nThe page alloc tracepoints be used as an indicator as to whether the\nworkload was heavily dependant on the page allocator or not.  You can make\na guess based on vmstat but you can\u0027t get a per-process breakdown.\nDepending on the call path, the call_site for page allocation may be\n__get_free_pages() instead of a useful callsite.  Instead of passing down\na return address similar to slab debugging, the user should enable the\nstacktrace and seg-addr options to get a proper stack trace.\n\nThe pagevec free tracepoint has a different usecase.  It can be used to\nget a idea of how many pages are being dumped off the LRU and whether it\nis kswapd doing the work or a process doing direct reclaim.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Li Ming Chun \u003cmacli@brc.ubc.ca\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "38a398572fa2d8124f7479e40db581b5b72719c9",
      "tree": "cad43f1cb00b760507278cc7b55f8e7fa4ab4fab",
      "parents": [
        "cc013a88906bad9d2832d6316de1c7dbc1c2a794"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "page-allocator: remove dead function free_cold_page()\n\nThe function free_cold_page() has no callers so delete it.\n\nSigned-off-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": "d0107eb07320b5d37c0f8a9f015534caebb28a48",
      "tree": "9f4f1000af3919d1118356ae7c6b298c6aa81769",
      "parents": [
        "dd32c279983bf77fdcc8a9aa4a05b0ffdc75859c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Sep 21 17:02:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:34 2009 -0700"
      },
      "message": "kcore: fix vread/vwrite to be aware of holes\n\nvread/vwrite access vmalloc area without checking there is a page or not.\nIn most case, this works well.\n\nIn old ages, the caller of get_vm_ara() is only IOREMAP and there is no\nmemory hole within vm_struct\u0027s [addr...addr + size - PAGE_SIZE] (\n-PAGE_SIZE is for a guard page.)\n\nAfter per-cpu-alloc patch, it uses get_vm_area() for reserve continuous\nvirtual address but remap _later_.  There tend to be a hole in valid\nvmalloc area in vm_struct lists.  Then, skip the hole (not mapped page) is\nnecessary.  This patch updates vread/vwrite() for avoiding memory hole.\n\nRoutines which access vmalloc area without knowing for which addr is used\nare\n  - /proc/kcore\n  - /dev/kmem\n\nkcore checks IOREMAP, /dev/kmem doesn\u0027t.  After this patch, IOREMAP is\nchecked and /dev/kmem will avoid to read/write it.  Fixes to /proc/kcore\nwill be in the next patch in series.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Mike Smith \u003cscgtrp@gmail.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd32c279983bf77fdcc8a9aa4a05b0ffdc75859c",
      "tree": "399737a47e6ab1b3a39f6f2950fec325421d082d",
      "parents": [
        "2f66a68f3fac2e94da360c342ff78ab45553f86c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Sep 21 17:02:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "vmalloc: unmap vmalloc area after hiding it\n\nvmap area should be purged after vm_struct is removed from the list\nbecause vread/vwrite etc...believes the range is valid while it\u0027s on\nvm_struct list.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nCc: Mike Smith \u003cscgtrp@gmail.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f66a68f3fac2e94da360c342ff78ab45553f86c",
      "tree": "ec8de9c7d18d866e63e2c9bcbecf902896b687bd",
      "parents": [
        "fe1ff49d0d1c30254dbfc84c3786eb538e0cc7d1"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Sep 21 17:02:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "page-allocator: change migratetype for all pageblocks within a high-order page during __rmqueue_fallback\n\nWhen there are no pages of a target migratetype free, the page allocator\nselects a high-order block of another migratetype to allocate from.  When\nthe order of the page taken is greater than pageblock_order, all\npageblocks within that high-order page should change migratetype so that\npages are later freed to the correct free-lists.\n\nThe current behaviour is that pageblocks change migratetype if the order\nbeing split matches the pageblock_order.  When pageblock_order \u003c\nMAX_ORDER-1, ownership is not changing correct and pages are being later\nfreed to the incorrect list and this impacts fragmentation avoidance.\n\nThis patch changes all pageblocks within the high-order page being split\nto the correct migratetype.  Without the patch, allocation success rates\nfor hugepages under stress were about 59% of physical memory on x86-64.\nWith the patch applied, this goes up to 65%.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "fe1ff49d0d1c30254dbfc84c3786eb538e0cc7d1",
      "tree": "aed0b1c5355e42ce27788fa4868dc770cbbebe75",
      "parents": [
        "398499d5f3613c47f2143b8c54a04efb5d7a6da9"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Sep 21 17:02:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "mm: kmem_cache_create(): make it easier to catch NULL cache names\n\nRight now, if you inadvertently pass NULL to kmem_cache_create() at boot\ntime, it crashes much later after boot somewhere deep inside sysfs which\nmakes it very non obvious to figure out what\u0027s going on.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\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": "7103ad323b1ae32bedc3267402117e2f8b45e48d",
      "tree": "d4255fceb827cc0a70b5a748182766d22934dc78",
      "parents": [
        "35451beecbd7c86ce3249d543594517a5fe9a0cd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "ksm: mremap use err from ksm_madvise\n\nmremap move\u0027s use of ksm_madvise() was assuming -ENOMEM on failure,\nbecause ksm_madvise used to say -EAGAIN for that; but ksm_madvise now says\n-ENOMEM (letting madvise convert that to -EAGAIN), and can also say\n-ERESTARTSYS when signalled: so pass the error from ksm_madvise.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "35451beecbd7c86ce3249d543594517a5fe9a0cd",
      "tree": "e72759e6e6fcd142ab85c607a9b3dd3e1c016eed",
      "parents": [
        "a913e182ab9484308e870af37a14d372742d53b0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "ksm: unmerge is an origin of OOMs\n\nJust as the swapoff system call allocates many pages of RAM to various\nprocesses, perhaps triggering OOM, so \"echo 2 \u003e/sys/kernel/mm/ksm/run\"\n(unmerge) is liable to allocate many pages of RAM to various processes,\nperhaps triggering OOM; and each is normally run from a modest admin\nprocess (swapoff or shell), easily repeated until it succeeds.\n\nSo treat unmerge_and_remove_all_rmap_items() in the same way that we treat\ntry_to_unuse(): generalize PF_SWAPOFF to PF_OOM_ORIGIN, and bracket both\nwith that, to ask the OOM killer to kill them first, to prevent them from\nspawning more and more OOM kills.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a913e182ab9484308e870af37a14d372742d53b0",
      "tree": "0fca5598aeba4c53999ec46b6b82b46f9a981965",
      "parents": [
        "8314c4f24a0a5c9b1f7544e9fa83a1d5367ddaa7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "ksm: clean up obsolete references\n\nA few cleanups, given the munlock fix: the comment on ksm_test_exit() no\nlonger applies, and it can be made private to ksm.c; there\u0027s no more\nreference to mmu_gather or tlb.h, and mmap.c doesn\u0027t need ksm.h.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8314c4f24a0a5c9b1f7544e9fa83a1d5367ddaa7",
      "tree": "f3265e2ff817e447c11b9f9070ce1eed9a19731a",
      "parents": [
        "7701c9c0f54feb682d0cefa2ae1f4a1e00e0ba09"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "ksm: remove VM_MERGEABLE_FLAGS\n\nKSM originally stood for Kernel Shared Memory: but the kernel has long\nsupported shared memory, and VM_SHARED and VM_MAYSHARE vmas, and KSM is\nsomething else.  So we switched to saying \"merge\" instead of \"share\".\n\nBut Chris Wright points out that this is confusing where mmap.c merges\nadjacent vmas: most especially in the name VM_MERGEABLE_FLAGS, used by\nis_mergeable_vma() to let vmas be merged despite flags being different.\n\nCall it VMA_MERGE_DESPITE_FLAGS?  Perhaps, but at present it consists\nonly of VM_CAN_NONLINEAR: so for now it\u0027s clearer on all sides to use\nthat directly, with a comment on it in is_mergeable_vma().\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7701c9c0f54feb682d0cefa2ae1f4a1e00e0ba09",
      "tree": "50f98c7bf7071f1559c529b0c963a9dc86c54e00",
      "parents": [
        "2ffd8679c8e4ec226718bff58b50b226dd477015"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "ksm: add some documentation\n\nAdd Documentation/vm/ksm.txt: how to use the Kernel Samepage Merging feature\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ffd8679c8e4ec226718bff58b50b226dd477015",
      "tree": "5e58b19da86defa012613a850c6f57dd69ab51f3",
      "parents": [
        "1c2fb7a4c2ca7a958b02bc1e615d0254990bba8d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: sysfs and defaults\n\nAt present KSM is just a waste of space if you don\u0027t have CONFIG_SYSFS\u003dy\nto provide the /sys/kernel/mm/ksm files to tune and activate it.\n\nMake KSM depend on SYSFS?  Could do, but it might be better to provide\nsome defaults so that KSM works out-of-the-box, ready for testers to\nmadvise MADV_MERGEABLE, even without SYSFS.\n\nThough anyone serious is likely to want to retune the numbers to their\ntaste once they have experience; and whether these settings ever reach\n2.6.32 can be discussed along the way.\n\nSave 1kB from tiny kernels by #ifdef\u0027ing the SYSFS side of it.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c2fb7a4c2ca7a958b02bc1e615d0254990bba8d",
      "tree": "489a97bd453b8002f2234f7e736548103315fa38",
      "parents": [
        "9ba6929480088a85c1ff60a4b1f1c9fc80dbd2b7"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Sep 21 17:02:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: fix deadlock with munlock in exit_mmap\n\nRawhide users have reported hang at startup when cryptsetup is run: the\nsame problem can be simply reproduced by running a program int main() {\nmlockall(MCL_CURRENT | MCL_FUTURE); return 0; }\n\nThe problem is that exit_mmap() applies munlock_vma_pages_all() to\nclean up VM_LOCKED areas, and its current implementation (stupidly)\ntries to fault in absent pages, for example where PROT_NONE prevented\nthem being faulted in when mlocking.  Whereas the \"ksm: fix oom\ndeadlock\" patch, knowing there\u0027s a race by which KSM might try to fault\nin pages after exit_mmap() had finally zapped the range, backs out of\nsuch faults doing nothing when its ksm_test_exit() notices mm_users 0.\n\nSo revert that part of \"ksm: fix oom deadlock\" which moved the\nksm_exit() call from before exit_mmap() to the middle of exit_mmap();\nand remove those ksm_test_exit() checks from the page fault paths, so\nallowing the munlocking to proceed without interference.\n\nksm_exit, if there are rmap_items still chained on this mm slot, takes\nmmap_sem write side: so preventing KSM from working on an mm while\nexit_mmap runs.  And KSM will bail out as soon as it notices that\nmm_users is already zero, thanks to its internal ksm_test_exit checks.\nSo that when a task is killed by OOM killer or the user, KSM will not\nindefinitely prevent it from running exit_mmap to release its memory.\n\nThis does break a part of what \"ksm: fix oom deadlock\" was trying to\nachieve.  When unmerging KSM (echo 2 \u003e/sys/kernel/mm/ksm), and even\nwhen ksmd itself has to cancel a KSM page, it is possible that the\nfirst OOM-kill victim would be the KSM process being faulted: then its\nmemory won\u0027t be freed until a second victim has been selected (freeing\nmemory for the unmerging fault to complete).\n\nBut the OOM killer is already liable to kill a second victim once the\nintended victim\u0027s p-\u003emm goes to NULL: so there\u0027s not much point in\nrejecting this KSM patch before fixing that OOM behaviour.  It is very\nmuch more important to allow KSM users to boot up, than to haggle over\nan unlikely and poorly supported OOM case.\n\nWe also intend to fix munlocking to not fault pages: at which point\nthis patch _could_ be reverted; though that would be controversial, so\nwe hope to find a better solution.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nAcked-by: Justin M. Forbes \u003cjforbes@redhat.com\u003e\nAcked-for-now-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Izik Eidus \u003cieidus@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": "9ba6929480088a85c1ff60a4b1f1c9fc80dbd2b7",
      "tree": "39aab8cdffae598b55e35c578f70820712286ab4",
      "parents": [
        "cd551f97519d35855be5a8720a47cc802ee4fd06"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: fix oom deadlock\n\nThere\u0027s a now-obvious deadlock in KSM\u0027s out-of-memory handling:\nimagine ksmd or KSM_RUN_UNMERGE handling, holding ksm_thread_mutex,\ntrying to allocate a page to break KSM in an mm which becomes the\nOOM victim (quite likely in the unmerge case): it\u0027s killed and goes\nto exit, and hangs there waiting to acquire ksm_thread_mutex.\n\nClearly we must not require ksm_thread_mutex in __ksm_exit, simple\nthough that made everything else: perhaps use mmap_sem somehow?\nAnd part of the answer lies in the comments on unmerge_ksm_pages:\n__ksm_exit should also leave all the rmap_item removal to ksmd.\n\nBut there\u0027s a fundamental problem, that KSM relies upon mmap_sem to\nguarantee the consistency of the mm it\u0027s dealing with, yet exit_mmap\ntears down an mm without taking mmap_sem.  And bumping mm_users won\u0027t\nhelp at all, that just ensures that the pages the OOM killer assumes\nare on their way to being freed will not be freed.\n\nThe best answer seems to be, to move the ksm_exit callout from just\nbefore exit_mmap, to the middle of exit_mmap: after the mm\u0027s pages\nhave been freed (if the mmu_gather is flushed), but before its page\ntables and vma structures have been freed; and down_write,up_write\nmmap_sem there to serialize with KSM\u0027s own reliance on mmap_sem.\n\nBut KSM then needs to be careful, whenever it downs mmap_sem, to\ncheck that the mm is not already exiting: there\u0027s a danger of using\nfind_vma on a layout that\u0027s being torn apart, or writing into page\ntables which have been freed for reuse; and even do_anonymous_page\nand __do_fault need to check they\u0027re not being called by break_ksm\nto reinstate a pte after zap_pte_range has zapped that page table.\n\nThough it might be clearer to add an exiting flag, set while holding\nmmap_sem in __ksm_exit, that wouldn\u0027t cover the issue of reinstating\na zapped pte.  All we need is to check whether mm_users is 0 - but\nmust remember that ksmd may detect that before __ksm_exit is reached.\nSo, ksm_test_exit(mm) added to comment such checks on mm-\u003emm_users.\n\n__ksm_exit now has to leave clearing up the rmap_items to ksmd,\nthat needs ksm_thread_mutex; but shift the exiting mm just after the\nksm_scan cursor so that it will soon be dealt with.  __ksm_enter raise\nmm_count to hold the mm_struct, ksmd\u0027s exit processing (exactly like\nits processing when it finds all VM_MERGEABLEs unmapped) mmdrop it,\nsimilar procedure for KSM_RUN_UNMERGE (which has stopped ksmd).\n\nBut also give __ksm_exit a fast path: when there\u0027s no complication\n(no rmap_items attached to mm and it\u0027s not at the ksm_scan cursor),\nit can safely do all the exiting work itself.  This is not just an\noptimization: when ksmd is not running, the raised mm_count would\notherwise leak mm_structs.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd551f97519d35855be5a8720a47cc802ee4fd06",
      "tree": "8363f75f66efaf725de9ee7de781efbc2c502407",
      "parents": [
        "d952b79136a6c32a3f97e0628ca78340f1d5c6f9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: distribute remove_mm_from_lists\n\nDo some housekeeping in ksm.c, to help make the next patch easier\nto understand: remove the function remove_mm_from_lists, distributing\nits code to its callsites scan_get_next_rmap_item and __ksm_exit.\n\nThat turns out to be a win in scan_get_next_rmap_item: move its\nremove_trailing_rmap_items and cursor advancement up, and it becomes\nsimpler than before.  __ksm_exit becomes messier, but will change\nagain; and moving its remove_trailing_rmap_items up lets us strengthen\nthe unstable tree item\u0027s age condition in remove_rmap_item_from_tree.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d952b79136a6c32a3f97e0628ca78340f1d5c6f9",
      "tree": "d46b096fa097c39faa21c89f329d0c84bd700062",
      "parents": [
        "81464e30609cdbd3d96d8dd6991e7481195a89a1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: fix endless loop on oom\n\nbreak_ksm has been looping endlessly ignoring VM_FAULT_OOM: that should\nonly be a problem for ksmd when a memory control group imposes limits\n(normally the OOM killer will kill others with an mm until it succeeds);\nbut in general (especially for MADV_UNMERGEABLE and KSM_RUN_UNMERGE) we\ndo need to route the error (or kill) back to the caller (or sighandling).\n\nTest signal_pending in unmerge_ksm_pages, which could be a lengthy\nprocedure if it has to spill into swap: returning -ERESTARTSYS so that\ntrivial signals will restart but fatals will terminate (is that right?\nwe do different things in different places in mm, none exactly this).\n\nunmerge_and_remove_all_rmap_items was forgetting to lock when going\ndown the mm_list: fix that.  Whether it\u0027s successful or not, reset\nksm_scan cursor to head; but only if it\u0027s successful, reset seqnr\n(shown in full_scans) - page counts will have gone down to zero.\n\nThis patch leaves a significant OOM deadlock, but it\u0027s a good step\non the way, and that deadlock is fixed in a subsequent patch.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "81464e30609cdbd3d96d8dd6991e7481195a89a1",
      "tree": "ec25711be5bf99e94264e3b201c0e148b9c8641a",
      "parents": [
        "6e15838425ac855982f10419558649954a0684a3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: five little cleanups\n\n1. We don\u0027t use __break_cow entry point now: merge it into break_cow.\n2. remove_all_slot_rmap_items is just a special case of\n   remove_trailing_rmap_items: use the latter instead.\n3. Extend comment on unmerge_ksm_pages and rmap_items.\n4. try_to_merge_two_pages should use try_to_merge_with_ksm_page\n   instead of duplicating its code; and so swap them around.\n5. Comment on cmp_and_merge_page described last year\u0027s: update it.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6e15838425ac855982f10419558649954a0684a3",
      "tree": "f39e4a9b845e0bdf8f6b222ca718f155437e5b63",
      "parents": [
        "26465d3ea5a62d59efb3796b9e0e2b0656d02cb1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: keep quiet while list empty\n\nksm_scan_thread already sleeps in wait_event_interruptible until setting\nksm_run activates it; but if there\u0027s nothing on its list to look at, i.e.\nnobody has yet said madvise MADV_MERGEABLE, it\u0027s a shame to be clocking\nup system time and full_scans: ksmd_should_run added to check that too.\n\nAnd move the mutex_lock out around it: the new counts showed that when\nksm_run is stopped, a little work often got done afterwards, because it\nhad been read before taking the mutex.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26465d3ea5a62d59efb3796b9e0e2b0656d02cb1",
      "tree": "40644bae6d246a1ee0d38b98a5281a3a879725a1",
      "parents": [
        "473b0ce4d13ee77925a7062e25dea0d16a91f654"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: break cow once unshared\n\nWe kept agreeing not to bother about the unswappable shared KSM pages\nwhich later become unshared by others: observation suggests they\u0027re not\na significant proportion.  But they are disadvantageous, and it is easier\nto break COW to replace them by swappable pages, than offer statistics\nto show that they don\u0027t matter; then we can stop worrying about them.\n\nDoing this in ksm_do_scan, they don\u0027t go through cmp_and_merge_page on\nthis pass: give them a good chance of getting into the unstable tree\non the next pass, or back into the stable, by computing checksum now.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "473b0ce4d13ee77925a7062e25dea0d16a91f654",
      "tree": "965433f77af7ddce5d9911e353e13af6db9ea311",
      "parents": [
        "e178dfde3952192cf44eeb0612882f01fc96c0a9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: pages_unshared and pages_volatile\n\nThe pages_shared and pages_sharing counts give a good picture of how\nsuccessful KSM is at sharing; but no clue to how much wasted work it\u0027s\ndoing to get there.  Add pages_unshared (count of unique pages waiting\nin the unstable tree, hoping to find a mate) and pages_volatile.\n\npages_volatile is harder to define.  It includes those pages changing\ntoo fast to get into the unstable tree, but also whatever other edge\nconditions prevent a page getting into the trees: a high value may\ndeserve investigation.  Don\u0027t try to calculate it from the various\nconditions: it\u0027s the total of rmap_items less those accounted for.\n\nAlso show full_scans: the number of completed scans of everything\nregistered in the mm list.\n\nThe locking for all these counts is simply ksm_thread_mutex.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e178dfde3952192cf44eeb0612882f01fc96c0a9",
      "tree": "874b8dd5c2ebba6889621b14e01b7d503a098e4d",
      "parents": [
        "b4028260334e1ecf63fb5e0a95d65bb2db02c1ec"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: move pages_sharing updates\n\nThe pages_shared count is incremented and decremented when adding a node\nto and removing a node from the stable tree: easy to understand.  But the\npages_sharing count was hard to follow, being adjusted in various places:\nincrement and decrement it when adding to and removing from the stable tree.\n\nAnd the pages_sharing variable used to include the pages_shared, then those\nwere subtracted when shown in the pages_sharing sysfs file: now keep it as\nan exclusive count of leaves hanging off the stable tree nodes, throughout.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4028260334e1ecf63fb5e0a95d65bb2db02c1ec",
      "tree": "0fbfe22a83f4fcb0e47be45374b581f49967085e",
      "parents": [
        "339aa62469f65daf38a01d6c098b5f3ff8016653"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:32 2009 -0700"
      },
      "message": "ksm: rename kernel_pages_allocated\n\nWe\u0027re not implementing swapping of KSM pages in its first release;\nbut when that follows, \"kernel_pages_allocated\" will be a very poor\nname for the sysfs file showing number of nodes in the stable tree:\nrename that to \"pages_shared\" throughout.\n\nBut we already have a \"pages_shared\", counting those page slots\nsharing the shared pages: first rename that to... \"pages_sharing\".\n\nWhat will become of \"max_kernel_pages\" when the pages shared can\nbe swapped?  I guess it will just be removed, so keep that name.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nAcked-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "339aa62469f65daf38a01d6c098b5f3ff8016653",
      "tree": "fa38bc8d54fe98b8b1eadfdd0b58831c3ce40d76",
      "parents": [
        "36b2528dc1819dc783f69917ac20e66a678b3479"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "ieidus@redhat.com",
        "time": "Mon Sep 21 17:02:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: change ksm nice level to be 5\n\nksm should try not to disturb other tasks as much as possible.\n\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36b2528dc1819dc783f69917ac20e66a678b3479",
      "tree": "f784799e8080e01e66518492dda7418ab6368df4",
      "parents": [
        "1ff829957316670af64be24192ef849e7253a509"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "ieidus@redhat.com",
        "time": "Mon Sep 21 17:02:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: change copyright message\n\nAdding Hugh Dickins into the authors list.\n\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ff829957316670af64be24192ef849e7253a509",
      "tree": "9227f33bf6dd455edbada5153d1b72a1ca191590",
      "parents": [
        "31dbd01f314364b70c2e026a5793a29a4da8a9dc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:05 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: prevent mremap move poisoning\n\nKSM\u0027s scan allows for user pages to be COWed or unmapped at any time,\nwithout requiring any notification.  But its stable tree does assume that\nwhen it finds a KSM page where it placed a KSM page, then it is the same\nKSM page that it placed there.\n\nmremap move could break that assumption: if an area containing a KSM page\nwas unmapped, then an area containing a different KSM page was moved with\nmremap into the place of the original, before KSM\u0027s scan came around to\nnotice.  That could then poison a node of the stable tree, so that memcmps\nwould \"lie\" and upset the ordering of the tree.\n\nProbably noone will ever need mremap move on a VM_MERGEABLE area; except\nthat prohibiting it would make trouble for schemes in which we try making\neverything VM_MERGEABLE e.g.  for testing: an mremap which normally works\nwould then fail mysteriously.\n\nThere\u0027s no need to go to any trouble, such as re-sorting KSM\u0027s list of\nrmap_items to match the new layout: simply unmerge the area to COW all its\nKSM pages before moving, but leave VM_MERGEABLE on so that they\u0027re\nremerged later.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31dbd01f314364b70c2e026a5793a29a4da8a9dc",
      "tree": "1a2d47ae7b839129383dd4e10a9ed731f15a5bf9",
      "parents": [
        "9a840895147b12de5cdd633c600b38686840ee53"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "ieidus@redhat.com",
        "time": "Mon Sep 21 17:02:03 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: Kernel SamePage Merging\n\nKsm is code that allows merging of identical pages between one or more\napplications, in a way invisible to the applications that use it.  Pages\nthat are merged are marked as read-only, then COWed when any application\ntries to change them.\n\nWhereas fork() allows sharing anonymous pages between parent and child,\nksm can share anonymous pages between unrelated processes.\n\nKsm works by walking over the memory pages of the applications it scans,\nin order to find identical pages.  It uses two sorted data structures,\ncalled the stable and unstable trees, to locate identical pages in an\neffective way.\n\nWhen ksm finds two identical pages, it marks them as readonly and merges\nthem into a single page.  After the pages have been marked as readonly and\nmerged into one, Linux treats them as normal copy-on-write pages, copying\nto a fresh anonymous page if write access is required later.\n\nKsm scans and merges anonymous pages only in those memory areas that have\nbeen registered with it by madvise(addr, length, MADV_MERGEABLE).\n\nThe ksm scanner is controlled by sysfs files in /sys/kernel/mm/ksm/:\n\nmax_kernel_pages - the maximum number of unswappable kernel pages\n                   which may be allocated by ksm (0 for unlimited).\n\nkernel_pages_allocated - how many ksm pages are currently allocated,\n                         sharing identical content between different\n                         processes (pages unswappable in this release).\n\npages_shared - how many pages have been saved by sharing with ksm pages\n               (kernel_pages_allocated being excluded from this count).\n\npages_to_scan - how many pages ksm should scan before sleeping.\n\nsleep_millisecs - how many milliseconds ksm should sleep between scans.\n\nrun - write 0 to disable ksm, read 0 while ksm is disabled (default),\n      write 1 to run ksm, read 1 while ksm is running,\n      write 2 to disable ksm and unmerge all its pages.\n\nIncludes contributions by Andrea Arcangeli Chris Wright and Hugh Dickins.\n\n[hugh.dickins@tiscali.co.uk: fix rare page leak]\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a840895147b12de5cdd633c600b38686840ee53",
      "tree": "a266a69a39decb4ec0364ac331f0ab19b6f09f06",
      "parents": [
        "21333b2b66b805a360641568588e5a0bb06d9d1f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:01 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: identify PageKsm pages\n\nKSM will need to identify its kernel merged pages unambiguously, and\n/proc/kpageflags will probably like to do so too.\n\nSince KSM will only be substituting anonymous pages, statistics are best\npreserved by making a PageKsm page a special PageAnon page: one with no\nanon_vma.\n\nBut KSM then needs its own page_add_ksm_rmap() - keep it in ksm.h near\nPageKsm; and do_wp_page() must COW them, unlike singly mapped PageAnons.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "21333b2b66b805a360641568588e5a0bb06d9d1f",
      "tree": "c0ce4d31e31ae2d2b1ef975b00c0611a3099c7a3",
      "parents": [
        "f8af4da3b4c14e7267c4ffb952079af3912c51c5"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:01:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: no debug in page_dup_rmap()\n\npage_dup_rmap(), used on each mapped page when forking, was originally\njust an inline atomic_inc of mapcount.  2.6.22 added CONFIG_DEBUG_VM\nout-of-line checks to it, which would need to be ever-so-slightly\ncomplicated to allow for the PageKsm() we\u0027re about to define.\n\nBut I think these checks never caught anything.  And if it\u0027s coding errors\nwe\u0027re worried about, such checks should be in page_remove_rmap() too, not\njust when forking; whereas if it\u0027s pagetable corruption we\u0027re worried\nabout, then they shouldn\u0027t be limited to CONFIG_DEBUG_VM.\n\nOh, just revert page_dup_rmap() to an inline atomic_inc of mapcount.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@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": "f8af4da3b4c14e7267c4ffb952079af3912c51c5",
      "tree": "17b0cfbd2d3d9abf9008f69e7fee5369cec7afa5",
      "parents": [
        "d19f352484467a5e518639ddff0554669c10ffab"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:01:57 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: the mm interface to ksm\n\nThis patch presents the mm interface to a dummy version of ksm.c, for\nbetter scrutiny of that interface: the real ksm.c follows later.\n\nWhen CONFIG_KSM is not set, madvise(2) reject MADV_MERGEABLE and\nMADV_UNMERGEABLE with EINVAL, since that seems more helpful than\npretending that they can be serviced.  But when CONFIG_KSM\u003dy, accept them\neven if KSM is not currently running, and even on areas which KSM will not\ntouch (e.g.  hugetlb or shared file or special driver mappings).\n\nLike other madvices, report ENOMEM despite success if any area in the\nrange is unmapped, and use EAGAIN to report out of memory.\n\nDefine vma flag VM_MERGEABLE to identify an area on which KSM may try\nmerging pages: leave it to ksm_madvise() to decide whether to set it.\nDefine mm flag MMF_VM_MERGEABLE to identify an mm which might contain\nVM_MERGEABLE areas, to minimize callouts when forking or exiting.\n\nBased upon earlier patches by Chris Wright and Izik Eidus.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3866ea90d3635ddddcd77ce51087222ac7de85f2",
      "tree": "c11c2d04b66fa69472778bb03abb08c24e550211",
      "parents": [
        "828502d30073036a486d96b1fe051e0f08b6df83"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:01:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: first tidy up madvise_vma()\n\nmadvise.c has several levels of switch statements, what to do in which?\nMove MADV_DOFORK code down from madvise_vma() to madvise_behavior(), so\nmadvise_vma() can be a simple router, to madvise_behavior() by default.\n\nvma-\u003evm_flags is an unsigned long so use the same type for new_flags.  Add\nmissing comment lines to describe MADV_DONTFORK and MADV_DOFORK.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "828502d30073036a486d96b1fe051e0f08b6df83",
      "tree": "61b728cbeb88c1a2c522307dff6264e8d0b1d8f1",
      "parents": [
        "451ea25da71590361c71bf3044c55b870a887d53"
      ],
      "author": {
        "name": "Izik Eidus",
        "email": "ieidus@redhat.com",
        "time": "Mon Sep 21 17:01:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:31 2009 -0700"
      },
      "message": "ksm: add mmu_notifier set_pte_at_notify()\n\nKSM is a linux driver that allows dynamicly sharing identical memory pages\nbetween one or more processes.\n\nUnlike tradtional page sharing that is made at the allocation of the\nmemory, ksm do it dynamicly after the memory was created.  Memory is\nperiodically scanned; identical pages are identified and merged.\n\nThe sharing is made in a transparent way to the processes that use it.\n\nKsm is highly important for hypervisors (kvm), where in production\nenviorments there might be many copys of the same data data among the host\nmemory.  This kind of data can be: similar kernels, librarys, cache, and\nso on.\n\nEven that ksm was wrote for kvm, any userspace application that want to\nuse it to share its data can try it.\n\nKsm may be useful for any application that might have similar (page\naligment) data strctures among the memory, ksm will find this data merge\nit to one copy, and even if it will be changed and thereforew copy on\nwrited, ksm will merge it again as soon as it will be identical again.\n\nAnother reason to consider using ksm is the fact that it might simplify\nalot the userspace code of application that want to use shared private\ndata, instead that the application will mange shared area, ksm will do\nthis for the application, and even write to this data will be allowed\nwithout any synchinization acts from the application.\n\nKsm was designed to be a loadable module that doesn\u0027t change the VM code\nof linux.\n\nThis patch:\n\nThe set_pte_at_notify() macro allows setting a pte in the shadow page\ntable directly, instead of flushing the shadow page table entry and then\ngetting vmexit to set it.  It uses a new change_pte() callback to do so.\n\nset_pte_at_notify() is an optimization for kvm, and other users of\nmmu_notifiers, for COW pages.  It is useful for kvm when ksm is used,\nbecause it allows kvm not to have to receive vmexit and only then map the\nksm page into the shadow page table, but instead map it directly at the\nsame time as Linux maps the page into the host page table.\n\nUsers of mmu_notifiers who don\u0027t implement new mmu_notifier_change_pte()\ncallback will just receive the mmu_notifier_invalidate_page() callback.\n\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nSigned-off-by: Chris Wright \u003cchrisw@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "451ea25da71590361c71bf3044c55b870a887d53",
      "tree": "e2e9de6e7c1fb4f79c0413a3c4d401ec9263b722",
      "parents": [
        "bf88c8c83e4425d17e29daa5354ffb1f8ba7b225"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon Sep 21 17:01:48 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "mm: perform non-atomic test-clear of PG_mlocked on free\n\nBy the time PG_mlocked is cleared in the page freeing path, nobody else is\nlooking at our page-\u003eflags anymore.\n\nIt is thus safe to make the test-and-clear non-atomic and thereby removing\nan unnecessary and expensive operation from a hotpath.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bf88c8c83e4425d17e29daa5354ffb1f8ba7b225",
      "tree": "fc87d3c8c94ec6451cbc9821b5d999397eaf0808",
      "parents": [
        "945a11136ebdfa7fcce319ee6215958e84cb85f6"
      ],
      "author": {
        "name": "Figo.zhang",
        "email": "figo1802@gmail.com",
        "time": "Mon Sep 21 17:01:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "vmalloc.c: fix double error checking\n\nThere is no need for double error checking.\n\nSigned-off-by: Figo.zhang \u003cfigo1802@gmail.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "945a11136ebdfa7fcce319ee6215958e84cb85f6",
      "tree": "0553ecd55e5805ea147d6a0f6eae0686d5630cf5",
      "parents": [
        "a26f5320c4ee3d46a0da48fa0f3ac6a00b575793"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Mon Sep 21 17:01:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "mm: add gfp mask checking for __get_free_pages()\n\n__get_free_pages() with __GFP_HIGHMEM is not safe because the return\naddress cannot represent a highmem page.  get_zeroed_page() already has\nsuch a debug checking.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "a26f5320c4ee3d46a0da48fa0f3ac6a00b575793",
      "tree": "76e4502dae5d278c9a3cebbeda53f01aa1cf3e67",
      "parents": [
        "74a1c48fb4e9f10e3c83dcd39af73487968e35bf"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Sep 21 17:01:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:30 2009 -0700"
      },
      "message": "vmscan: kill unnecessary prefetch\n\nThe pages in the list passed move_active_pages_to_lru() are already\ntouched by shrink_active_list().  IOW the prefetch in\nmove_active_pages_to_lru() don\u0027t populate any cache.  it\u0027s pointless.\n\nThis patch remove it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "74a1c48fb4e9f10e3c83dcd39af73487968e35bf"
}
