)]}'
{
  "log": [
    {
      "commit": "718deb6b61e34c200c1f2b706176d9aac334cb2d",
      "tree": "fdf37190a8663d507bc740a6fa21437c6c22e611",
      "parents": [
        "bea4c899f2b5fad80099aea979780ef19f9b1987"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 19:35:36 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 19:48:48 2009 -0500"
      },
      "message": "Fix breakage in shmem.c\n\nReplacing\n\terror \u003d 0;\n\tif (error)\n\t\top\nwith nothing is not quite an equivalent transformation ;-)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1c7c474c31aea6d5cb2fb35f31d9e9e91ae466b1",
      "tree": "89a5fd1146be1744ce3ac94789542841512315b8",
      "parents": [
        "431547b3c4533b8c7fd150ab36980b9a3147797b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Nov 03 16:44:44 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "make generic_acl slightly more generic\n\nNow that we cache the ACL pointers in the generic inode all the generic_acl\ncruft can go away and generic_acl.c can directly implement xattr handlers\ndealing with the full Posix ACL semantics for in-memory filesystems.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "431547b3c4533b8c7fd150ab36980b9a3147797b",
      "tree": "807ff2790f3c13c7c91ed2afd6d833032899482d",
      "parents": [
        "ef26ca97e83052790940cbc444b01b0d17a813c1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Nov 13 09:52:56 2009 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:49 2009 -0500"
      },
      "message": "sanitize xattr handler prototypes\n\nAdd a flags argument to struct xattr_handler and pass it to all xattr\nhandler methods.  This allows using the same methods for multiple\nhandlers, e.g. for the ACL methods which perform exactly the same action\nfor the access and default ACLs, just using a different underlying\nattribute.  With a little more groundwork it\u0027ll also allow sharing the\nmethods for the regular user/trusted/secure handlers in extN, ocfs2 and\njffs2 like it\u0027s already done for xfs in this patch.\n\nAlso change the inode argument to the handlers to a dentry to allow\nusing the handlers mechnism for filesystems that require it later,\ne.g. cifs.\n\n[with GFS2 bits updated by Steven Whitehouse \u003cswhiteho@redhat.com\u003e]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0552f879d45cecc35d8e372a591fc5ed863bca58",
      "tree": "f3e0d76f7d5e7cf9a11ef4771294c7b4b552cd89",
      "parents": [
        "7715b521222b6ebb6e927fa261ed91ed687fe454"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 04:53:03 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:47 2009 -0500"
      },
      "message": "Untangling ima mess, part 1: alloc_file()\n\nThere are 2 groups of alloc_file() callers:\n\t* ones that are followed by ima_counts_get\n\t* ones giving non-regular files\nSo let\u0027s pull that ima_counts_get() into alloc_file();\nit\u0027s a no-op in case of non-regular files.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c48b9c45579a9b5e3e74694eebf3d2451f3dbd3",
      "tree": "cecbf786ae0650368a8136bdd90910e05d9b95c3",
      "parents": [
        "a95161aaa801c18c52b2e7cf3d6b4b141c00a20a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Aug 09 00:52:35 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:42 2009 -0500"
      },
      "message": "switch alloc_file() to passing struct path\n\n... and have the caller grab both mnt and dentry; kill\nleak in infiniband, while we are at it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4b42af81f0d7f95dff320f47d99c201925f406f5",
      "tree": "49829a9c58a5f7cac9a7b5e7efb22d6287794d72",
      "parents": [
        "853b3da10d617f08340e5fe569c99e7b54f2a568"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 05 18:25:56 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:40 2009 -0500"
      },
      "message": "switch shmem_file_setup() to alloc_file()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aaa468653b4a0d11c603c48d716f765177a5a9e4",
      "tree": "3cb8c9232dd405001fa38d5519937c5e6c6f32ab",
      "parents": [
        "570a335b8e22579e2a51a68136d2b1f907a20eec"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Dec 14 17:58:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:16 2009 -0800"
      },
      "message": "swap_info: note SWAP_MAP_SHMEM\n\nWhile we\u0027re fiddling with the swap_map values, let\u0027s assign a particular\nvalue to shmem/tmpfs swap pages: their swap counts are never incremented,\nand it helps swapoff\u0027s try_to_unuse() a little if it can immediately\ndistinguish those pages from process pages.\n\nSince we\u0027ve no use for SWAP_MAP_BAD | COUNT_CONTINUED,\nwe might as well use that 0xbf value for SWAP_MAP_SHMEM.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d7f18f6ea3a13af95bdf507fc54d42b165e1712",
      "tree": "8f6f3a6d46835aa767823fa7049609408a87afc2",
      "parents": [
        "53cddfcc0e760d2b364878b6dadbd0c6d087cfae",
        "56a131dcf7ed36c3c6e36bea448b674ea85ed5bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 25 09:27:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 25 09:27:30 2009 -0700"
      },
      "message": "Merge branch \u0027writeback\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027writeback\u0027 of git://git.kernel.dk/linux-2.6-block:\n  writeback: writeback_inodes_sb() should use bdi_start_writeback()\n  writeback: don\u0027t delay inodes redirtied by a fast dirtier\n  writeback: make the super_block pinning more efficient\n  writeback: don\u0027t resort for a single super_block in move_expired_inodes()\n  writeback: move inodes from one super_block together\n  writeback: get rid to incorrect references to pdflush in comments\n  writeback: improve readability of the wb_writeback() continue/break logic\n  writeback: cleanup writeback_single_inode()\n  writeback: kupdate writeback shall not stop when more io is possible\n  writeback: stop background writeback when below background threshold\n  writeback: balance_dirty_pages() shall write more than dirtied pages\n  fs: Fix busyloop in wb_writeback()\n"
    },
    {
      "commit": "5b0830cb9085f4b69f9d57d7f3aaff322ffbec26",
      "tree": "10040eb359269d4cd05487790b758144a69e8e39",
      "parents": [
        "71fd05a887e0f3f6bfff76ff81b33776177d0606"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 23 19:37:09 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 25 18:08:25 2009 +0200"
      },
      "message": "writeback: get rid to incorrect references to pdflush in comments\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\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": "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": "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": "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": "aa261f549d7652258331ebb12795f3bc4395d213",
      "tree": "0ca807db32a6e3f213fa52b5a053d2b27e5e6bac",
      "parents": [
        "6a46079cf57a7f7758e8b926980a4f852f89b34d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:16 2009 +0200"
      },
      "message": "HWPOISON: Enable .remove_error_page for migration aware file systems\n\nEnable removing of corrupted pages through truncation\nfor a bunch of file systems: ext*, xfs, gfs2, ocfs2, ntfs\nThese should cover most server needs.\n\nI chose the set of migration aware file systems for this\nfor now, assuming they have been especially audited.\nBut in general it should be safe for all file systems\non the data area that support read/write and truncate.\n\nCaveat: the hardware error handler does not take i_mutex\nfor now before calling the truncate function. Is that ok?\n\nCc: tytso@mit.edu\nCc: hch@infradead.org\nCc: mfasheh@suse.com\nCc: aia21@cantab.net\nCc: hugh.dickins@tiscali.co.uk\nCc: swhiteho@redhat.com\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "6746aff74da293b5fd24e5c68b870b721e86cd5f",
      "tree": "6d2b9e99d247e788c13665ce5e8a0753538ef641",
      "parents": [
        "257187362123f15d9d1e09918cf87cebbea4e786"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Sep 16 11:50:14 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:14 2009 +0200"
      },
      "message": "HWPOISON: shmem: call set_page_dirty() with locked page\n\nThe dirtying of page and set_page_dirty() can be moved into the page lock.\n\n- In shmem_write_end(), the page was dirtied while the page lock was held,\n  but it\u0027s being marked dirty just after dropping the page lock.\n- In shmem_symlink(), both dirtying and marking can be moved into page lock.\n\nIt\u0027s valuable for the hwpoison code to know whether one bad page can be dropped\nwithout losing data. It mainly judges by testing the PG_dirty bit after taking\nthe page lock. So it becomes important that the dirtying of page and the\nmarking of dirtiness are both done inside the page lock. Which is a common\npractice, but sadly not a rule.\n\nThe noticeable exceptions are\n- mapped pages\n- pages with buffer_heads\nThe above pages could go dirty at any time. Fortunately the hwpoison will\nunmap the page and release the buffer_heads beforehand anyway.\n\nMany other types of pages (eg. metadata pages) can also be dirtied at will by\ntheir owners, the hwpoison code cannot do meaningful things to them anyway.\nOnly the dirtiness of pagecache pages owned by regular files are interested.\n\nv2: AK: Add comment about set_page_dirty rules (suggested by Peter Zijlstra)\n\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nReviewed-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "2b2af54a5bb6f7e80ccf78f20084b93c398c3a8b",
      "tree": "bb27e3b16a2a8fadeea869033a406f0a19b63e29",
      "parents": [
        "ea5ffff57dce2f4c85ab056f4b0a202f71db2bdf"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Thu Apr 30 15:23:42 2009 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Sep 15 09:50:49 2009 -0700"
      },
      "message": "Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev\n\nDevtmpfs lets the kernel create a tmpfs instance called devtmpfs\nvery early at kernel initialization, before any driver-core device\nis registered. Every device with a major/minor will provide a\ndevice node in devtmpfs.\n\nDevtmpfs can be changed and altered by userspace at any time,\nand in any way needed - just like today\u0027s udev-mounted tmpfs.\nUnmodified udev versions will run just fine on top of it, and will\nrecognize an already existing kernel-created device node and use it.\nThe default node permissions are root:root 0600. Proper permissions\nand user/group ownership, meaningful symlinks, all other policy still\nneeds to be applied by userspace.\n\nIf a node is created by devtmps, devtmpfs will remove the device node\nwhen the device goes away. If the device node was created by\nuserspace, or the devtmpfs created node was replaced by userspace, it\nwill no longer be removed by devtmpfs.\n\nIf it is requested to auto-mount it, it makes init\u003d/bin/sh work\nwithout any further userspace support. /dev will be fully populated\nand dynamic, and always reflect the current device state of the kernel.\nWith the commonly used dynamic device numbers, it solves the problem\nwhere static devices nodes may point to the wrong devices.\n\nIt is intended to make the initial bootup logic simpler and more robust,\nby de-coupling the creation of the inital environment, to reliably run\nuserspace processes, from a complex userspace bootstrap logic to provide\na working /dev.\n\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nTested-By: Harald Hoyer \u003charald@redhat.com\u003e\nTested-By: Scott James Remnant \u003cscott@ubuntu.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "6d848a488ad83cc3891bb274691118f45ce6aab9",
      "tree": "c775e9ada5e3613174103b0919561b4b4d2d3b7e",
      "parents": [
        "5909ccaa300a4a834ffa275327af4df0b9cb5295"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 28 12:04:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 11:08:46 2009 -0700"
      },
      "message": "shmfs: use \u0027check_acl\u0027 instead of \u0027permission\u0027\n\nshmfs wants purely standard POSIX ACL semantics, so we can use the new\ngeneric VFS layer POSIX ACL checking rather than cooking our own\n\u0027permission()\u0027 function.\n\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72c04902d1e27c8a324014cff1d4475c11b1cecd",
      "tree": "3e93abdd0a3eeedd6df5a1dc43170744f2fa7664",
      "parents": [
        "641cf4a668e9e69d2bc061e953422ff72a91f86e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 16:58:48 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 16:58:48 2009 -0400"
      },
      "message": "Get \"no acls for this inode\" right, fix shmem breakage\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06b16e9f68edaa1e71aee943d3c030bcf7380af1",
      "tree": "fcdbc0302571e6cda4817869a377d7498a44f776",
      "parents": [
        "281eede0328c84a8f20e0e85b807d5b51c3de4f2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 08 19:56:00 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:06 2009 -0400"
      },
      "message": "switch shmem to inode-\u003ei_acl\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "168f5ac668f63dfb64439766e3ef9e866b83719d",
      "tree": "ddefb5678ffc15ac6ddec66e281d3f9c8a75fa0b",
      "parents": [
        "aca8bf323edd31ad462dc98c107c23a5c6022ca2"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@inbox.ru",
        "time": "Tue Jun 16 15:33:02 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:44 2009 -0700"
      },
      "message": "mm cleanup: shmem_file_setup: \u0027char *\u0027 -\u003e \u0027const char *\u0027 for name argument\n\nAs function shmem_file_setup does not modify/allocate/free/pass given\nfilename - mark it as const.\n\nSigned-off-by: Sergei Trofimovich \u003cslyfox@inbox.ru\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": "cb4b86ba47bb0937b71fb825b3ed88adf7a190f0",
      "tree": "4b8528ba914a315e5857e7fe2a6e7d415f2e6650",
      "parents": [
        "6837765963f1723e80ca97b1fae660f3a60d77df"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: add swap cache interface for swap reference\n\nIn a following patch, the usage of swap cache is recorded into swap_map.\nThis patch is for necessary interface changes to do that.\n\n2 interfaces:\n\n  - swapcache_prepare()\n  - swapcache_free()\n\nare added for allocating/freeing refcnt from swap-cache to existing swap\nentries.  But implementation itself is not changed under this patch.  At\nadding swapcache_free(), memcg\u0027s hook code is moved under\nswapcache_free().  This is better than using scattered hooks.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9d9ac525a0285a5b5ad9c3f9aa8b7c1753e6121",
      "tree": "e7fcde1841bf0b1d77a5332656f9cf975509c7b8",
      "parents": [
        "b9fc745db833bbf74b4988493b8cd902a84c9415"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue May 19 13:25:58 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 22 09:45:33 2009 +1000"
      },
      "message": "integrity: move ima_counts_get\n\nBased on discussion on lkml (Andrew Morton and Eric Paris),\nmove ima_counts_get down a layer into shmem/hugetlb__file_setup().\nResolves drm shmem_file_setup() usage case as well.\n\nHD comment:\n  I still think you\u0027re doing this at the wrong level, but recognize\n  that you probably won\u0027t be persuaded until a few more users of\n  alloc_file() emerge, all wanting your ima_counts_get().\n\n  Resolving GEM\u0027s shmem_file_setup() is an improvement, so I\u0027ll say\n\nAcked-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "b9fc745db833bbf74b4988493b8cd902a84c9415",
      "tree": "45a15174efb3b1c3dcbe5f0dc503e790c4f6fd70",
      "parents": [
        "932995f0ce52525b32ff5127b522c2c164de3810"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue May 19 13:25:57 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri May 22 09:43:41 2009 +1000"
      },
      "message": "integrity: path_check update\n\n- Add support in ima_path_check() for integrity checking without\nincrementing the counts. (Required for nfsd.)\n- rename and export opencount_get to ima_counts_get\n- replace ima_shm_check calls with ima_counts_get\n- export ima_path_check\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "ae3abae64f177586be55b04a7fb7047a34b21a3e",
      "tree": "05ba2ef8dca958cc4a02ac08e5aae03b8bc82a81",
      "parents": [
        "0816178638c15ce5472d39d771a96860dff4141a"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu Apr 30 15:08:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 15:36:09 2009 -0700"
      },
      "message": "memcg: fix mem_cgroup_shrink_usage()\n\nCurrent mem_cgroup_shrink_usage() has two problems.\n\n1. It doesn\u0027t call mem_cgroup_out_of_memory and doesn\u0027t update\n   last_oom_jiffies, so pagefault_out_of_memory invokes global OOM.\n\n2. Considering hierarchy, shrinking has to be done from the\n   mem_over_limit, not from the memcg which the page would be charged to.\n\nmem_cgroup_try_charge_swapin() does all of these things properly, so we\nuse it and call cancel_charge_swapin when it succeeded.\n\nThe name of \"shrink_usage\" is not appropriate for this behavior, so we\nchange it too.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.cn\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@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": "caefba1740d8016e6dfe8fda84f85bdcb8f8c85d",
      "tree": "78a74e7a42b94ac83c736849c46767b7efeb8ef1",
      "parents": [
        "61609d01cbb3ab865c8cccaf85e6837c47096480"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Apr 13 14:40:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 13 15:04:33 2009 -0700"
      },
      "message": "shmem: respect MAX_LFS_FILESIZE\n\nSHMEM_MAX_BYTES was derived from the maximum size of its triple-indirect\nswap vector, forgetting to take the MAX_LFS_FILESIZE limit into account.\nNever mind 256kB pages, even 8kB pages on 32-bit kernels allowed files to\ngrow slightly bigger than that supposed maximum.\n\nFix this by using the min of both (at build time not run time).  And it\nhappens that this calculation is good as far as 8MB pages on 32-bit or\n16MB pages on 64-bit: though SHMSWP_MAX_INDEX gets truncated before that,\nit\u0027s truncated to such large numbers that we don\u0027t need to care.\n\n[akpm@linux-foundation.org: it needs pagemap.h]\n[akpm@linux-foundation.org: fix sparc64 min() warnings]\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\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": "61609d01cbb3ab865c8cccaf85e6837c47096480",
      "tree": "144e176568328a6fcd9c01853c3f88fd6bc1a08e",
      "parents": [
        "347486bb108fa6e0fd2753c1be3519d6be2516ed"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Mon Apr 13 14:40:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 13 15:04:32 2009 -0700"
      },
      "message": "shmem: fix division by zero\n\nFix a division by zero which we have in shmem_truncate_range() and\nshmem_unuse_inode() when using big PAGE_SIZE values (e.g.  256kB on\nppc44x).\n\nWith 256kB PAGE_SIZE, the ENTRIES_PER_PAGEPAGE constant becomes too large\n(0x1.0000.0000) on a 32-bit kernel, so this patch just changes its type\nfrom \u0027unsigned long\u0027 to \u0027unsigned long long\u0027.\n\nHugh: reverted its unsigned long longs in shmem_truncate_range() and\nshmem_getpage(): the pagecache index cannot be more than an unsigned long,\nso the divisions by zero occurred in unreached code.  It\u0027s a pity we need\nany ULL arithmetic here, but I found no pretty way to avoid it.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9fab5619bdd7f84cdd22cc760778f759f9819a33",
      "tree": "4a7010f3ba43896c266032f8b287d6bd55b72c85",
      "parents": [
        "327c0e968645f2601a43f5ea7c19c7b3a5fa0a34"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 31 15:23:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "shmem: writepage directly to swap\n\nSynopsis: if shmem_writepage calls swap_writepage directly, most shmem\nswap loads benefit, and a catastrophic interaction between SLUB and some\nflash storage is avoided.\n\nshmem_writepage() has always been peculiar in making no attempt to write:\nit has just transferred a shmem page from file cache to swap cache, then\nlet that page make its way around the LRU again before being written and\nfreed.\n\nThe idea was that people use tmpfs because they want those pages to stay\nin RAM; so although we give it an overflow to swap, we should resist\nwriting too soon, giving those pages a second chance before they can be\nreclaimed.\n\nThat was always questionable, and I\u0027ve toyed with this patch for years;\nbut never had a clear justification to depart from the original design.\n\nIt became more questionable in 2.6.28, when the split LRU patches classed\nshmem and tmpfs pages as SwapBacked rather than as file_cache: that in\nitself gives them more resistance to reclaim than normal file pages.  I\nprepared this patch for 2.6.29, but the merge window arrived before I\u0027d\ncompleted gathering statistics to justify sending it in.\n\nThen while comparing SLQB against SLUB, running SLUB on a laptop I\u0027d\nhabitually used with SLAB, I found SLUB to run my tmpfs kbuild swapping\ntests five times slower than SLAB or SLQB - other machines slower too, but\nnowhere near so bad.  Simpler \"cp -a\" swapping tests showed the same.\n\nslub_max_order\u003d0 brings sanity to all, but heavy swapping is too far from\nnormal to justify such a tuning.  The crucial factor on that laptop turns\nout to be that I\u0027m using an SD card for swap.  What happens is this:\n\nBy default, SLUB uses order-2 pages for shmem_inode_cache (and many other\nfs inodes), so creating tmpfs files under memory pressure brings lumpy\nreclaim into play.  One subpage of the order is chosen from the bottom of\nthe LRU as usual, then the other three picked out from their random\npositions on the LRUs.\n\nIn a tmpfs load, many of these pages will be ones which already passed\nthrough shmem_writepage, so already have swap allocated.  And though their\noffsets on swap were probably allocated sequentially, now that the pages\nare picked off at random, their swap offsets are scattered.\n\nBut the flash storage on the SD card is very sensitive to having its\nwrites merged: once swap is written at scattered offsets, performance\nfalls apart.  Rotating disk seeks increase too, but less disastrously.\n\nSo: stop giving shmem/tmpfs pages a second pass around the LRU, write them\nout to swap as soon as their swap has been allocated.\n\nIt\u0027s surely possible to devise an artificial load which runs faster the\nold way, one whose sizing is such that the tmpfs pages on their second\npass are the ones that are wanted again, and other pages not.\n\nBut I\u0027ve not yet found such a load: on all machines, under the loads I\u0027ve\ntried, immediate swap_writepage speeds up shmem swapping: especially when\nusing the SLUB allocator (and more effectively than slub_max_order\u003d0), but\nalso with the others; and it also reduces the variance between runs.  How\nmuch faster varies widely: a factor of five is rare, 5% is common.\n\nOne load which might have suffered: imagine a swapping shmem load in a\nlimited mem_cgroup on a machine with plenty of memory.  Before 2.6.29 the\nswapcache was not charged, and such a load would have run quickest with\nthe shmem swapcache never written to swap.  But now swapcache is charged,\nso even this load benefits from shmem_writepage directly to swap.\n\nApologies for the #ifndef CONFIG_SWAP swap_writepage() stub in swap.h:\nit\u0027s silly because that will never get called; but refactoring shmem.c\nsensibly according to CONFIG_SWAP will be a separate task.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "703a3cd72817e99201cef84a8a7aecc60b2b3581",
      "tree": "3e943755178ff410694722bb031f523136fbc432",
      "parents": [
        "df7f54c012b92ec93d56b68547351dcdf8a163d3",
        "8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 24 10:52:46 2009 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 24 10:52:46 2009 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n"
    },
    {
      "commit": "0b0a0806b0d8635e046bf533225a25903b1cddce",
      "tree": "245ac39eb1b7c6008a669ab2d68ed174d66bd7bc",
      "parents": [
        "c15d8a6499d04e5d2cac07f8120f207bb275f60f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Feb 24 20:51:52 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 25 12:21:42 2009 -0800"
      },
      "message": "shmem: fix shared anonymous accounting\n\nEach time I exit Firefox, /proc/meminfo\u0027s Committed_AS goes down almost\n400 kB: OVERCOMMIT_NEVER would be allowing overcommits it should\nprohibit.\n\nCommit fc8744adc870a8d4366908221508bb113d8b72ee \"Stop playing silly\ngames with the VM_ACCOUNT flag\" changed shmem_file_setup() to set the\nshmem file\u0027s VM_ACCOUNT flag according to VM_NORESERVE not being set in\nthe vma flags; but did so only _after_ the shmem_acct_size(flags, size)\ncall which is expected to pre-account a shared anonymous object.\n\nIt\u0027s all clearer if we switch shmem.c over to use VM_NORESERVE\nthroughout in place of !VM_ACCOUNT.\n\nBut I very nearly sent in a patch which mistakenly removed the\naccounting from tmpfs files: shmem_get_inode()\u0027s memset was good for not\nsetting VM_ACCOUNT, but now it needs to set VM_NORESERVE.\n\nRather than setting that by default, then perhaps clearing it again in\nshmem_file_setup(), let\u0027s pass it as a flag to shmem_get_inode(): that\nallows us to remove the #ifdef CONFIG_SHMEM from shmem_file_setup().\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ed850a52af971528b048812c4215cef298af0d3b",
      "tree": "e78fdb9e91e61dd297df2b126527340b483ae2a2",
      "parents": [
        "cb5629b10d64a8006622ce3a52bc887d91057d69"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue Feb 10 23:01:19 2009 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Wed Feb 11 15:27:15 2009 +1100"
      },
      "message": "integrity: shmem zero fix\n\nBased on comments from Mike Frysinger and Randy Dunlap:\n(http://lkml.org/lkml/2009/2/9/262)\n- moved ima.h include before CONFIG_SHMEM test to fix compiler error\n  on Blackfin:\nmm/shmem.c: In function \u0027shmem_zero_setup\u0027:\nmm/shmem.c:2670: error: implicit declaration of function \u0027ima_shm_check\u0027\n\n- added \u0027struct linux_binprm\u0027 in ima.h to fix compiler warning on Blackfin:\nIn file included from mm/shmem.c:32:\ninclude/linux/ima.h:25: warning: \u0027struct linux_binprm\u0027 declared inside\nparameter list\ninclude/linux/ima.h:25: warning: its scope is only this definition or\ndeclaration, which is probably not what you want\n\n- moved fs.h include within _LINUX_IMA_H definition\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "cb5629b10d64a8006622ce3a52bc887d91057d69",
      "tree": "7c06d8f30783115e3384721046258ce615b129c5",
      "parents": [
        "8920d5ad6ba74ae8ab020e90cc4d976980e68701",
        "f01d1d546abb2f4028b5299092f529eefb01253a"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 11:01:45 2009 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 11:01:45 2009 +1100"
      },
      "message": "Merge branch \u0027master\u0027 into next\n\nConflicts:\n\tfs/namei.c\n\nManually merged per:\n\ndiff --cc fs/namei.c\nindex 734f2b5,bbc15c2..0000000\n--- a/fs/namei.c\n+++ b/fs/namei.c\n@@@ -860,9 -848,8 +849,10 @@@ static int __link_path_walk(const char\n  \t\tnd-\u003eflags |\u003d LOOKUP_CONTINUE;\n  \t\terr \u003d exec_permission_lite(inode);\n  \t\tif (err \u003d\u003d -EAGAIN)\n- \t\t\terr \u003d vfs_permission(nd, MAY_EXEC);\n+ \t\t\terr \u003d inode_permission(nd-\u003epath.dentry-\u003ed_inode,\n+ \t\t\t\t\t       MAY_EXEC);\n +\t\tif (!err)\n +\t\t\terr \u003d ima_path_check(\u0026nd-\u003epath, MAY_EXEC);\n   \t\tif (err)\n  \t\t\tbreak;\n\n@@@ -1525,14 -1506,9 +1509,14 @@@ int may_open(struct path *path, int acc\n  \t\tflag \u0026\u003d ~O_TRUNC;\n  \t}\n\n- \terror \u003d vfs_permission(nd, acc_mode);\n+ \terror \u003d inode_permission(inode, acc_mode);\n  \tif (error)\n  \t\treturn error;\n +\n- \terror \u003d ima_path_check(\u0026nd-\u003epath,\n++\terror \u003d ima_path_check(path,\n +\t\t\t       acc_mode \u0026 (MAY_READ | MAY_WRITE | MAY_EXEC));\n +\tif (error)\n +\t\treturn error;\n  \t/*\n  \t * An append-only file must be opened in append mode for writing.\n  \t */\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "1df9f0a73178718969ae47d813b8e7aab2cf073c",
      "tree": "6bd3d8838858f0e93acd8f7969b7d0e5ce2bfb08",
      "parents": [
        "f4bd857bc8ed997c25ec06b56ef8064aafa6d4f3"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Wed Feb 04 09:07:02 2009 -0500"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Feb 06 09:05:33 2009 +1100"
      },
      "message": "Integrity: IMA file free imbalance\n\nThe number of calls to ima_path_check()/ima_file_free()\nshould be balanced.  An extra call to fput(), indicates\nthe file could have been accessed without first being\nmeasured.\n\nAlthough f_count is incremented/decremented in places other\nthan fget/fput, like fget_light/fput_light and get_file, the\ncurrent task must already hold a file refcnt.  The call to\n__fput() is delayed until the refcnt becomes 0, resulting\nin ima_file_free() flagging any changes.\n\n- add hook to increment opencount for IPC shared memory(SYSV),\n  shmat files, and /dev/zero\n- moved NULL iint test in opencount_get()\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "fc8744adc870a8d4366908221508bb113d8b72ee",
      "tree": "755f4c4a1cc30567fde4e60c9cc5e6a889c360b0",
      "parents": [
        "33bfad54b58cf05cfe6678c3ec9235d4bc8db4c2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 31 15:08:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 31 15:08:56 2009 -0800"
      },
      "message": "Stop playing silly games with the VM_ACCOUNT flag\n\nThe mmap_region() code would temporarily set the VM_ACCOUNT flag for\nanonymous shared mappings just to inform shmem_zero_setup() that it\nshould enable accounting for the resulting shm object.  It would then\nclear the flag after calling -\u003emmap (for the /dev/zero case) or doing\nshmem_zero_setup() (for the MAP_ANON case).\n\nThis just resulted in vma merge issues, but also made for just\nunnecessary confusion.  Use the already-existing VM_NORESERVE flag for\nthis instead, and let shmem_{zero|file}_setup() just figure it out from\nthat.\n\nThis also happens to make it obvious that the new DRI2 GEM layer uses a\nnon-reserving backing store for its object allocation - which is quite\npossibly not intentional.  But since I didn\u0027t want to change semantics\nin this patch, I left it alone, and just updated the caller to use the\nnew flag semantics.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5a84319a4343a0db753436fd8147e61eaafa7ea",
      "tree": "5faae671b431b50a32a2d8c7a57cc9361d8f336d",
      "parents": [
        "544122e5e0ee27d5aac4a441f7746712afbf248c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:35 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:10 2009 -0800"
      },
      "message": "memcg: fix shmem\u0027s swap accounting\n\nNow, you can see following even when swap accounting is enabled.\n\n 1. Create Group 01, and 02.\n 2. allocate a \"file\" on tmpfs by a task under 01.\n 3. swap out the \"file\" (by memory pressure)\n 4. Read \"file\" from a task in group 02.\n 5. the charge of \"file\" is moved to group 02.\n\nThis is not ideal behavior. This is because SwapCache which was loaded\nby read-ahead is not taken into account..\n\nThis is a patch to fix shmem\u0027s swapcache behavior.\n  - remove mem_cgroup_cache_charge_swapin().\n  - Add SwapCache handler routine to mem_cgroup_cache_charge().\n    By this, shmem\u0027s file cache is charged at add_to_page_cache()\n    with GFP_NOWAIT.\n  - pass the page of swapcache to shrink_mem_cgroup.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c26fdd70c3094fa3e84caf9ef434911933d5477",
      "tree": "06a3bafc12f5f8fd91d9ed1fca5ea0a632ef2004",
      "parents": [
        "887007561ae58628f03aa9046949747c04f63be8"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: revert gfp mask fix\n\nMy patch, memcg-fix-gfp_mask-of-callers-of-charge.patch changed gfp_mask\nof callers of charge to be GFP_HIGHUSER_MOVABLE for showing what will\nhappen at memory reclaim.\n\nBut in recent discussion, it\u0027s NACKed because it sounds ugly.\n\nThis patch is for reverting it and add some clean up to gfp_mask of\ncallers of charge.  No behavior change but need review before generating\nHUNK in deep queue.\n\nThis patch also adds explanation to meaning of gfp_mask passed to charge\nfunctions in memcontrol.h.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.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": "d13d144309d2e5a3e6ad978b16c1d0226ddc9231",
      "tree": "37c19902b527823956db969d9428737081b2a94d",
      "parents": [
        "c1e862c1f5ad34771b6d0a528cf681e0dcad7c86"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: handle swap caches\n\nSwapCache support for memory resource controller (memcg)\n\nBefore mem+swap controller, memcg itself should handle SwapCache in proper\nway.  This is cut-out from it.\n\nIn current memcg, SwapCache is just leaked and the user can create tons of\nSwapCache.  This is a leak of account and should be handled.\n\nSwapCache accounting is done as following.\n\n  charge (anon)\n\t- charged when it\u0027s mapped.\n\t  (because of readahead, charge at add_to_swap_cache() is not sane)\n  uncharge (anon)\n\t- uncharged when it\u0027s dropped from swapcache and fully unmapped.\n\t  means it\u0027s not uncharged at unmap.\n\t  Note: delete from swap cache at swap-in is done after rmap information\n\t        is established.\n  charge (shmem)\n\t- charged at swap-in. this prevents charge at add_to_page_cache().\n\n  uncharge (shmem)\n\t- uncharged when it\u0027s dropped from swapcache and not on shmem\u0027s\n\t  radix-tree.\n\n  at migration, check against \u0027old page\u0027 is modified to handle shmem.\n\nComparing to the old version discussed (and caused troubles), we have\nadvantages of\n  - PCG_USED bit.\n  - simple migrating handling.\n\nSo, situation is much easier than several months ago, maybe.\n\n[hugh@veritas.com: memcg: handle swap caches build fix]\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bced0520fe462bb94021dcabd32e99630c171be2",
      "tree": "6fa234f4a25bc8231742aea13e7cc2664b0a69a6",
      "parents": [
        "7a81b88cb53e335ff7d019e6398c95792c817d93"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: fix gfp_mask of callers of charge\n\nFix misuse of gfp_kernel.\n\nNow, most of callers of mem_cgroup_charge_xxx functions uses GFP_KERNEL.\n\nI think that this is from the fact that page_cgroup *was* dynamically\nallocated.\n\nBut now, we allocate all page_cgroup at boot.  And\nmem_cgroup_try_to_free_pages() reclaim memory from GFP_HIGHUSER_MOVABLE +\nspecified GFP_RECLAIM_MASK.\n\n  * This is because we just want to reduce memory usage.\n    \"Where we should reclaim from ?\" is not a problem in memcg.\n\nThis patch modifies gfp masks to be GFP_HIGUSER_MOVABLE if possible.\n\nNote: This patch is not for fixing behavior but for showing sane information\n      in source code.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "853ac43ab194f5051b27a55060215d696dc9480d",
      "tree": "1f60fd49d516b7b242781a77446993b1dfb5bb66",
      "parents": [
        "69e9930993cfd70d82c8d9dd96fc3a88854d06fc"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Tue Jan 06 14:40:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "shmem: unify regular and tiny shmem\n\ntiny-shmem shares most of its 130 lines of code with shmem and tends to\nbreak when particular bits of shmem get modified.  Unifying saves code and\nmakes keeping these two in sync much easier.\n\nbefore:\n  14367\t    392\t     24\t  14783\t   39bf\tmm/shmem.o\n    396      72       8     476\t    1dc\tmm/tiny-shmem.o\n\nafter:\n  14367\t    392\t     24\t  14783\t   39bf\tmm/shmem.o\n    412\t     72       8     492\t    1ec\tmm/shmem.o tiny\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "390722baa7fc447b0a4f0c3c3f537ed056dbc944",
      "tree": "7cdcf1fb968691cf9eaa52ce13813cba6ca24ee2",
      "parents": [
        "bf3f3bc5e734706730c12a323f9b2068052aa1f0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:38:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: don\u0027t mark_page_accessed in shmem_fault\n\nFollowing \"mm: don\u0027t mark_page_accessed in fault path\", which now\nplaces a mark_page_accessed() in zap_pte_range(), we should remove\nthe mark_page_accessed() from shmem_fault().\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76aac0e9a17742e60d408be1a706e9aaad370891",
      "tree": "e873a000d9c96209726e0958e311f005c13b2ed5",
      "parents": [
        "b103c59883f1ec6e4d548b25054608cb5724453c"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Nov 14 10:39:12 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Nov 14 10:39:12 2008 +1100"
      },
      "message": "CRED: Wrap task credential accesses in the core kernel\n\nWrap access to task credentials so that they can be separated more easily from\nthe task_struct during the introduction of COW creds.\n\nChange most current-\u003e(|e|s|fs)[ug]id to current_(|e|s|fs)[ug]id().\n\nChange some task-\u003ee?[ug]id to task_e?[ug]id().  In some places it makes more\nsense to use RCU directly rather than a convenient wrapper; these will be\naddressed by later patches.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: linux-audit@redhat.com\nCc: containers@lists.linux-foundation.org\nCc: linux-mm@kvack.org\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "731572d39fcd3498702eda4600db4c43d51e0b26",
      "tree": "f892907ae20539845f353d72d2a2bf202b67e007",
      "parents": [
        "6c89161b10f5771ee0b51ada0fce0e8835e72ade"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Wed Oct 29 14:01:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:47 2008 -0700"
      },
      "message": "nfsd: fix vm overcommit crash\n\nJunjiro R.  Okajima reported a problem where knfsd crashes if you are\nusing it to export shmemfs objects and run strict overcommit.  In this\nsituation the current-\u003emm based modifier to the overcommit goes through a\nNULL pointer.\n\nWe could simply check for NULL and skip the modifier but we\u0027ve caught\nother real bugs in the past from mm being NULL here - cases where we did\nneed a valid mm set up (eg the exec bug about a year ago).\n\nTo preserve the checks and get the logic we want shuffle the checking\naround and add a new helper to the vm_ security wrappers\n\nAlso fix a current-\u003emm reference in nommu that should use the passed mm\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix build]\nReported-by: Junjiro R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "89e004ea55abe201b29e2d6e35124101f1288ef7",
      "tree": "272a8f453106fd33d66fd7153f44696648dbe8b6",
      "parents": [
        "ba9ddf49391645e6bb93219131a40446538a5e76"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:43 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "SHM_LOCKED pages are unevictable\n\nShmem segments locked into memory via shmctl(SHM_LOCKED) should not be\nkept on the normal LRU, since scanning them is a waste of time and might\nthrow off kswapd\u0027s balancing algorithms.  Place them on the unevictable\nLRU list instead.\n\nUse the AS_UNEVICTABLE flag to mark address_space of SHM_LOCKed shared\nmemory regions as unevictable.  Then these pages will be culled off the\nnormal LRU lists during vmscan.\n\nAdd new wrapper function to clear the mapping\u0027s unevictable state when/if\nshared memory segment is munlocked.\n\nAdd \u0027scan_mapping_unevictable_page()\u0027 to mm/vmscan.c to scan all pages in\nthe shmem segment\u0027s mapping [struct address_space] for evictability now\nthat they\u0027re no longer locked.  If so, move them to the appropriate zone\nlru list.\n\nChanges depend on [CONFIG_]UNEVICTABLE_LRU.\n\n[kosaki.motohiro@jp.fujitsu.com: revert shm change]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Kosaki Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f98a2fee8acdb4ac84545df98cccecfd130f8db",
      "tree": "035a2937f4c3e2f7b4269412041c073ac646937c",
      "parents": [
        "b2e185384f534781fd22f5ce170b2ad26f97df70"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: split LRU lists into anon \u0026 file sets\n\nSplit the LRU lists in two, one set for pages that are backed by real file\nsystems (\"file\") and one for pages that are backed by memory and swap\n(\"anon\").  The latter includes tmpfs.\n\nThe advantage of doing this is that the VM will not have to scan over lots\nof anonymous pages (which we generally do not want to swap out), just to\nfind the page cache pages that it should evict.\n\nThis patch has the infrastructure and a basic policy to balance how much\nwe scan the anon lists and how much we scan the file lists.  The big\npolicy changes are in separate patches.\n\n[lee.schermerhorn@hp.com: collect lru meminfo statistics from correct offset]\n[kosaki.motohiro@jp.fujitsu.com: prevent incorrect oom under split_lru]\n[kosaki.motohiro@jp.fujitsu.com: fix pagevec_move_tail() doesn\u0027t treat unevictable page]\n[hugh@veritas.com: memcg swapbacked pages active]\n[hugh@veritas.com: splitlru: BDI_CAP_SWAP_BACKED]\n[akpm@linux-foundation.org: fix /proc/vmstat units]\n[nishimura@mxp.nes.nec.co.jp: memcg: fix handling of shmem migration]\n[kosaki.motohiro@jp.fujitsu.com: adjust Quicklists field of /proc/meminfo]\n[kosaki.motohiro@jp.fujitsu.com: fix style issue of get_scan_ratio()]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.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": "b2e185384f534781fd22f5ce170b2ad26f97df70",
      "tree": "3096b8250302c5a9f71b1b5122345f7cf62606cc",
      "parents": [
        "68a22394c286a2daf06ee8d65d8835f738faefa5"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "define page_file_cache() function\n\nDefine page_file_cache() function to answer the question:\n\tis page backed by a file?\n\nOriginally part of Rik van Riel\u0027s split-lru patch.  Extracted to make\navailable for other, independent reclaim patches.\n\nMoved inline function to linux/mm_inline.h where it will be needed by\nsubsequent \"split LRU\" and \"noreclaim\" patches.\n\nUnfortunately this needs to use a page flag, since the PG_swapbacked state\nneeds to be preserved all the way to the point where the page is last\nremoved from the LRU.  Trying to derive the status from other info in the\npage resulted in wrong VM statistics in earlier split VM patchsets.\n\nThe total number of page flags in use on a 32 bit machine after this patch\nis 19.\n\n[akpm@linux-foundation.org: fix up out-of-order merge fallout]\n[hugh@veritas.com: splitlru: shmem_getpage SetPageSwapBacked sooner[\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "395e0ddc44005ced5e4fed9bfc2e4bdf63d37627",
      "tree": "ee33f3a28029dae46445e563d35ed93f36dd9fad",
      "parents": [
        "0a3e67a4caac273a3bfc4ced3da364830b1ab241"
      ],
      "author": {
        "name": "Keith Packard",
        "email": "keithp@keithp.com",
        "time": "Fri Jun 20 00:08:06 2008 -0700"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@linux.ie",
        "time": "Sat Oct 18 07:10:11 2008 +1000"
      },
      "message": "Export shmem_file_setup for DRM-GEM\n\nGEM needs to create shmem files to back buffer objects.  Though currently\ncreation of files for objects could have been driven from userland, the\nmodesetting work will require allocation of buffer objects before userland\nis running, for boot-time message display.\n\nSigned-off-by: Eric Anholt \u003ceric@anholt.net\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "92562927826fceb2f8e69c89e28161b8c1e0b125",
      "tree": "e44f22406ea4d3753a4834feed7e7d271da28ab8",
      "parents": [
        "93db628658197aa46bd7f83d429908b6f187ec9c"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue Oct 07 14:00:12 2008 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Oct 13 09:47:43 2008 +1100"
      },
      "message": "integrity: special fs magic\n\nDiscussion on the mailing list questioned the use of these\nmagic values in userspace, concluding these values are already\nexported to userspace via statfs and their correct/incorrect\nusage is left up to the userspace application.\n\n  - Move special fs magic number definitions to magic.h\n  - Add magic.h include\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce",
      "tree": "d3ae998f9876c72a83a022805103a92111852b21",
      "parents": [
        "e9ba9698187ddbc0c5bfcf41de0349a662d23d02"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:01:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:31:34 2008 -0700"
      },
      "message": "mm: rename page trylock\n\nConverting page lock to new locking bitops requires a change of page flag\noperation naming, so we might as well convert it to something nicer\n(!TestSetPageLocked_Lock \u003d\u003e trylock_page, SetPageLocked \u003d\u003e set_page_locked).\n\nThis also facilitates lockdeping of page lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14fcc23fdc78e9d32372553ccf21758a9bd56fa1",
      "tree": "594fc0e0e85c03205ba2d80a4b4e0a8fc6ffaa8a",
      "parents": [
        "ca5b172bd2b2fe489e7ba11cedd46ddf772d132f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Jul 28 15:46:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:20 2008 -0700"
      },
      "message": "tmpfs: fix kernel BUG in shmem_delete_inode\n\nSuSE\u0027s insserve initscript ordering program hits kernel BUG at mm/shmem.c:814\non 2.6.26.  It\u0027s using posix_fadvise on directories, and the shmem_readpage\nmethod added in 2.6.23 is letting POSIX_FADV_WILLNEED allocate useless pages\nto a tmpfs directory, incrementing i_blocks count but never decrementing it.\n\nFix this by assigning shmem_aops (pointing to readpage and writepage and\nset_page_dirty) only when it\u0027s needed, on a regular file or a long symlink.\n\nMany thanks to Kel for outstanding bugreport and steps to reproduce it.\n\nReported-by: Kel Modderman \u003ckel@otaku42.de\u003e\nTested-by: Kel Modderman \u003ckel@otaku42.de\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e286781d5f2e9c846e012a39653a166e9d31777d",
      "tree": "14958fe6d8f3e0459c96c68b3034ea2433ab85ac",
      "parents": [
        "47feff2c8eefe85099f87c43d3096855f0085ca0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: speculative page references\n\nIf we can be sure that elevating the page_count on a pagecache page will\npin it, we can speculatively run this operation, and subsequently check to\nsee if we hit the right page rather than relying on holding a lock or\notherwise pinning a reference to the page.\n\nThis can be done if get_page/put_page behaves consistently throughout the\nwhole tree (ie.  if we \"get\" the page after it has been used for something\nelse, we must be able to free it with a put_page).\n\nActually, there is a period where the count behaves differently: when the\npage is free or if it is a constituent page of a compound page.  We need\nan atomic_inc_not_zero operation to ensure we don\u0027t try to grab the page\nin either case.\n\nThis patch introduces the core locking protocol to the pagecache (ie.\nadds page_cache_get_speculative, and tweaks some update-side code to make\nit work).\n\nThanks to Hugh for pointing out an improvement to the algorithm setting\npage_count to zero when we have control of all references, in order to\nhold off speculative getters.\n\n[kamezawa.hiroyu@jp.fujitsu.com: fix migration_entry_wait()]\n[hugh@veritas.com: fix add_to_page_cache]\n[akpm@linux-foundation.org: repair a comment]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9b0ed51483cc2fc42bb801b6675c4231b0e4634",
      "tree": "1d322b4bfcaad3296752f6efcab918d1b13b50a3",
      "parents": [
        "69029cd550284e32de13d6dd2f77b723c8a0e444"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: helper function for relcaim from shmem.\n\nA new call, mem_cgroup_shrink_usage() is added for shmem handling and\nrelacing non-standard usage of mem_cgroup_charge/uncharge.\n\nNow, shmem calls mem_cgroup_charge() just for reclaim some pages from\nmem_cgroup.  In general, shmem is used by some process group and not for\nglobal resource (like file caches).  So, it\u0027s reasonable to reclaim pages\nfrom mem_cgroup where shmem is mainly used.\n\n[hugh@veritas.com: shmem_getpage release page sooner]\n[hugh@veritas.com: mem_cgroup_shrink_usage css_put]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69029cd550284e32de13d6dd2f77b723c8a0e444",
      "tree": "b57b87e5025b6c01722f39302cb98d0dfcd58940",
      "parents": [
        "e8589cc189f96b87348ae83ea4db38eaac624135"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: remove refcnt from page_cgroup\n\nmemcg: performance improvements\n\nPatch Description\n 1/5 ... remove refcnt fron page_cgroup patch (shmem handling is fixed)\n 2/5 ... swapcache handling patch\n 3/5 ... add helper function for shmem\u0027s memory reclaim patch\n 4/5 ... optimize by likely/unlikely ppatch\n 5/5 ... remove redundunt check patch (shmem handling is fixed.)\n\nUnix bench result.\n\n\u003d\u003d 2.6.26-rc2-mm1 + memory resource controller\nExecl Throughput                           2915.4 lps   (29.6 secs, 3 samples)\nC Compiler Throughput                      1019.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5796.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1097.7 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               565.3 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1022128.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   544057.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    346481.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      319325.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     148788.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks       99051.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2058917.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1606109.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    854789.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         126145.2 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     2915.4      678.0\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   346481.0      875.0\nFile Copy 256 bufsize 500 maxblocks           1655.0    99051.0      598.5\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   854789.0     1473.8\nShell Scripts (8 concurrent)                     6.0     1097.7     1829.5\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                     991.3\n\n\u003d\u003d 2.6.26-rc2-mm1 + this set \u003d\u003d\nExecl Throughput                           3012.9 lps   (29.9 secs, 3 samples)\nC Compiler Throughput                       981.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5872.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1120.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               578.0 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1003993.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   550452.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    347159.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      314644.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     151852.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks      101000.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2033256.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1611814.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    847979.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         128148.7 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     3012.9      700.7\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   347159.0      876.7\nFile Copy 256 bufsize 500 maxblocks           1655.0   101000.0      610.3\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   847979.0     1462.0\nShell Scripts (8 concurrent)                     6.0     1120.3     1867.2\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                    1004.6\n\nThis patch:\n\nRemove refcnt from page_cgroup().\n\nAfter this,\n\n * A page is charged only when !page_mapped() \u0026\u0026 no page_cgroup is assigned.\n\t* Anon page is newly mapped.\n\t* File page is added to mapping-\u003etree.\n\n * A page is uncharged only when\n\t* Anon page is fully unmapped.\n\t* File page is removed from LRU.\n\nThere is no change in behavior from user\u0027s view.\n\nThis patch also removes unnecessary calls in rmap.c which was used only for\nrefcnt mangement.\n\n[akpm@linux-foundation.org: fix warning]\n[hugh@veritas.com: fix shmem_unuse_inode charging]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcd78e49613c41b5bed96fa288e983876f286a59",
      "tree": "0ad2591ca2e0d46923d8ec489ef7378f1a3c0d8e",
      "parents": [
        "11fa977ecde652ab324dd79c179deb52e82a8df1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Jul 23 21:27:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:16 2008 -0700"
      },
      "message": "tmpfs: support aio\n\nWe have a request for tmpfs to support the AIO interface: easily done, no\nmore than replacing the old shmem_file_read by shmem_file_aio_read,\ncribbed from generic_file_aio_read.  (In 2.6.25 its write side was already\nchanged to use generic_file_aio_write.)\n\nIncorporate cleanups from Andrew Morton and Harvey Harrison.\n\nTests out fine with LTP\u0027s ltp-aiodio.sh, given hacks (not included) to\nsupport O_DIRECT.  tmpfs cannot honestly support O_DIRECT: its\ncache-avoiding-IO nature is at odds with direct IO-avoiding-cache.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nTested-by: Lawrence Greenfield \u003cleg@google.com\u003e\nCc: Christoph Rohland \u003chans-christoph.rohland@sap.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Zach Brown \u003czach.brown@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": "e4ad08fe64afca4ef79ecc4c624e6e871688da0d",
      "tree": "5b8b390b874700041dc0c095e8ba9ac3ed42ea77",
      "parents": [
        "76f1418b485da2707531178e517bbb5cf06b3c76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 30 00:54:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:50 2008 -0700"
      },
      "message": "mm: bdi: add separate writeback accounting capability\n\nAdd a new BDI capability flag: BDI_CAP_NO_ACCT_WB.  If this flag is\nset, then don\u0027t update the per-bdi writeback stats from\ntest_set_page_writeback() and test_clear_page_writeback().\n\nMisc cleanups:\n\n - convert bdi_cap_writeback_dirty() and friends to static inline functions\n - create a flag that includes all three dirty/writeback related flags,\n   since almst all users will want to have them toghether\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71fe804b6d56d6a7aed680e096901434cef6a2c3",
      "tree": "3dd437e09fe6ee57644c72c79e08c562d4bb6389",
      "parents": [
        "3f226aa1cbc006f9d90f22084f519ad2a1286cd8"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:25 2008 -0700"
      },
      "message": "mempolicy: use struct mempolicy pointer in shmem_sb_info\n\nThis patch replaces the mempolicy mode, mode_flags, and nodemask in the\nshmem_sb_info struct with a struct mempolicy pointer, initialized to NULL.\nThis removes dependency on the details of mempolicy from shmem.c and hugetlbfs\ninode.c and simplifies the interfaces.\n\nmpol_parse_str() in mempolicy.c is changed to return, via a pointer to a\npointer arg, a struct mempolicy pointer on success.  For MPOL_DEFAULT, the\nreturned pointer is NULL.  Further, mpol_parse_str() now takes a \u0027no_context\u0027\nargument that causes the input nodemask to be stored in the w.user_nodemask of\nthe created mempolicy for use when the mempolicy is installed in a tmpfs inode\nshared policy tree.  At that time, any cpuset contextualization is applied to\nthe original input nodemask.  This preserves the previous behavior where the\ninput nodemask was stored in the superblock.  We can think of the returned\nmempolicy as \"context free\".\n\nBecause mpol_parse_str() is now calling mpol_new(), we can remove from\nmpol_to_str() the semantic checks that mpol_new() already performs.\n\nAdd \u0027no_context\u0027 parameter to mpol_to_str() to specify that it should format\nthe nodemask in w.user_nodemask for \u0027bind\u0027 and \u0027interleave\u0027 policies.\n\nChange mpol_shared_policy_init() to take a pointer to a \"context free\" struct\nmempolicy and to create a new, \"contextualized\" mempolicy using the mode,\nmode_flags and user_nodemask from the input mempolicy.\n\n  Note: we know that the mempolicy passed to mpol_to_str() or\n  mpol_shared_policy_init() from a tmpfs superblock is \"context free\".  This\n  is currently the only instance thereof.  However, if we found more uses for\n  this concept, and introduced any ambiguity as to whether a mempolicy was\n  context free or not, we could add another internal mode flag to identify\n  context free mempolicies.  Then, we could remove the \u0027no_context\u0027 argument\n  from mpol_to_str().\n\nAdded shmem_get_sbmpol() to return a reference counted superblock mempolicy,\nif one exists, to pass to mpol_shared_policy_init().  We must add the\nreference under the sb stat_lock to prevent races with replacement of the mpol\nby remount.  This reference is removed in mpol_shared_policy_init().\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: another build fix]\n[akpm@linux-foundation.org: yet another build fix]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@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": "095f1fc4ebf36c64fddf9b6db29b1ab5517378e6",
      "tree": "39aae9d5b05d8501d1794e92c6115331c0a40848",
      "parents": [
        "2291990ab36b4b2d8a81b1f92e7a046e51632a60"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:24 2008 -0700"
      },
      "message": "mempolicy: rework shmem mpol parsing and display\n\nmm/shmem.c currently contains functions to parse and display memory policy\nstrings for the tmpfs \u0027mpol\u0027 mount option.  Move this to mm/mempolicy.c with\nthe rest of the mempolicy support.  With subsequent patches, we\u0027ll be able to\nremove knowledge of the details [mode, flags, policy, ...] completely from\nshmem.c\n\n1) replace shmem_parse_mpol() in mm/shmem.c with mpol_parse_str() in\n   mm/mempolicy.c.  Rework to use the policy_types[] array [used by\n   mpol_to_str()] to look up mode by name.\n\n2) use mpol_to_str() to format policy for shmem_show_mpol().  mpol_to_str()\n   expects a pointer to a struct mempolicy, so temporarily construct one.\n   This will be replaced with a reference to a struct mempolicy in the tmpfs\n   superblock in a subsequent patch.\n\n   NOTE 1: I changed mpol_to_str() to use a colon \u0027:\u0027 rather than an equal\n   sign \u0027\u003d\u0027 as the nodemask delimiter to match mpol_parse_str() and the\n   tmpfs/shmem mpol mount option formatting that now uses mpol_to_str().  This\n   is a user visible change to numa_maps, but then the addition of the mode\n   flags already changed the display.  It makes sense to me to have the mounts\n   and numa_maps display the policy in the same format.  However, if anyone\n   objects strongly, I can pass the desired nodemask delimeter as an arg to\n   mpol_to_str().\n\n   Note 2: Like show_numa_map(), I don\u0027t check the return code from\n   mpol_to_str().  I do use a longer buffer than the one provided by\n   show_numa_map(), which seems to have sufficed so far.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@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": "52cd3b074050dd664380b5e8cfc85d4a6ed8ad48",
      "tree": "fcfcf55c0e81376ea34919fab26e29bedd7f3b88",
      "parents": [
        "a6020ed759404372e8be2b276e85e51735472cc9"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:24 2008 -0700"
      },
      "message": "mempolicy: rework mempolicy Reference Counting [yet again]\n\nAfter further discussion with Christoph Lameter, it has become clear that my\nearlier attempts to clean up the mempolicy reference counting were a bit of\noverkill in some areas, resulting in superflous ref/unref in what are usually\nfast paths.  In other areas, further inspection reveals that I botched the\nunref for interleave policies.\n\nA separate patch, suitable for upstream/stable trees, fixes up the known\nerrors in the previous attempt to fix reference counting.\n\nThis patch reworks the memory policy referencing counting and, one hopes,\nsimplifies the code.  Maybe I\u0027ll get it right this time.\n\nSee the update to the numa_memory_policy.txt document for a discussion of\nmemory policy reference counting that motivates this patch.\n\nSummary:\n\nLookup of mempolicy, based on (vma, address) need only add a reference for\nshared policy, and we need only unref the policy when finished for shared\npolicies.  So, this patch backs out all of the unneeded extra reference\ncounting added by my previous attempt.  It then unrefs only shared policies\nwhen we\u0027re finished with them, using the mpol_cond_put() [conditional put]\nhelper function introduced by this patch.\n\nNote that shmem_swapin() calls read_swap_cache_async() with a dummy vma\ncontaining just the policy.  read_swap_cache_async() can call alloc_page_vma()\nmultiple times, so we can\u0027t let alloc_page_vma() unref the shared policy in\nthis case.  To avoid this, we make a copy of any non-null shared policy and\nremove the MPOL_F_SHARED flag from the copy.  This copy occurs before reading\na page [or multiple pages] from swap, so the overhead should not be an issue\nhere.\n\nI introduced a new static inline function \"mpol_cond_copy()\" to copy the\nshared policy to an on-stack policy and remove the flags that would require a\nconditional free.  The current implementation of mpol_cond_copy() assumes that\nthe struct mempolicy contains no pointers to dynamically allocated structures\nthat must be duplicated or reference counted during copy.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@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": "f0be3d32b05d3fea2fcdbbb81a39dac2a7163169",
      "tree": "5794ce6a8befbce82cd3e44ff15fbf3bb5f2f3bf",
      "parents": [
        "3b1163006332302117b1b2acf226d4014ff46525"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Mon Apr 28 02:13:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:23 2008 -0700"
      },
      "message": "mempolicy: rename mpol_free to mpol_put\n\nThis is a change that was requested some time ago by Mel Gorman.  Makes sense\nto me, so here it is.\n\nNote: I retain the name \"mpol_free_shared_policy()\" because it actually does\nfree the shared_policy, which is NOT a reference counted object.  However, ...\n\nThe mempolicy object[s] referenced by the shared_policy are reference counted,\nso mpol_put() is used to release the reference held by the shared_policy.  The\nmempolicy might not be freed at this time, because some task attached to the\nshared object associated with the shared policy may be in the process of\nallocating a page based on the mempolicy.  In that case, the task performing\nthe allocation will hold a reference on the mempolicy, obtained via\nmpol_shared_policy_lookup().  The mempolicy will be freed when all tasks\nholding such a reference have called mpol_put() for the mempolicy.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003cak@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": "a43361cf3cb6fb6431fdbfb0f3ef26a334826160",
      "tree": "8ec343f73bb61c1ef08a32c78e912a7506c932bf",
      "parents": [
        "3e1f064562fcff7bf3856bc1d00dfa84d4f121cc"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Mon Apr 28 02:12:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:20 2008 -0700"
      },
      "message": "mempolicy: fix parsing of tmpfs mpol mount option\n\nParsing of new mode flags in the tmpfs mpol mount option is slightly broken:\n\nSetting a valid flag works OK:\n\t#mount -o remount,mpol\u003dbind\u003dstatic:1-2 /dev/shm\n\t#mount\n\t...\n\ttmpfs on /dev/shm type tmpfs (rw,mpol\u003dbind\u003dstatic:1-2)\n\t...\n\nHowever, we can\u0027t remove them or change them, once we\u0027ve\nset a valid flag:\n\n\t#mount -o remount,mpol\u003dbind:1-2 /dev/shm\n\t#mount\n\t...\n\ttmpfs on /dev/shm type tmpfs (rw,mpol\u003dbind:1-2)\n\t...\n\nIt SAYS it removed it, but that\u0027s just a copy of the input\nstring.  If we now try to set it to a different flag, we\nget:\n\n\t#mount -o remount,mpol\u003dbind\u003drelative:1-2 /dev/shm\n\tmount: /dev/shm not mounted already, or bad option\n\nAnd on the console, we see:\n\ttmpfs: Bad value \u0027bind\u0027 for mount option \u0027mpol\u0027\n\t                      ^ lost remainder of string\n\nFurthermore, bogus flags are accepted with out error.\nGranted, they are a no-op:\n\n\t#mount -o remount,mpol\u003dinterleave\u003dfoo:0-3 /dev/shm\n\t#mount\n\t...\n\ttmpfs on /dev/shm type tmpfs (rw,mpol\u003dinterleave\u003dfoo:0-3)\n\nAgain, that\u0027s just a copy of the input string shown by the mount command.\n\nThis patch fixes the behavior by pre-zeroing the flags so that only one of the\nmutually exclusive flags can be set at one time.  It also reports an error\nwhen an unrecognized flag is specified.\n\nThe check for both flags being set is removed because it can\u0027t happen with\nthis implementation.  If we ever want to support multiple non-exclusive flags,\nthis area will need rework and we will need to check that any mutually\nexclusive flags aren\u0027t specified.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Eric Whitney \u003ceric.whitney@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c50bc0116cf3cc35e7152d6a8424b4db65f52d6",
      "tree": "99c617602cc1946fc86b48e9a35f14f9f354cf67",
      "parents": [
        "7ea931c9fc80c4d0a4306c30ec92eb0f1d922a0b"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Apr 28 02:12:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mempolicy: add MPOL_F_RELATIVE_NODES flag\n\nAdds another optional mode flag, MPOL_F_RELATIVE_NODES, that specifies\nnodemasks passed via set_mempolicy() or mbind() should be considered relative\nto the current task\u0027s mems_allowed.\n\nWhen the mempolicy is created, the passed nodemask is folded and mapped onto\nthe current task\u0027s mems_allowed.  For example, consider a task using\nset_mempolicy() to pass MPOL_INTERLEAVE | MPOL_F_RELATIVE_NODES with a\nnodemask of 1-3.  If current\u0027s mems_allowed is 4-7, the effected nodemask is\n5-7 (the second, third, and fourth node of mems_allowed).\n\nIf the same task is attached to a cpuset, the mempolicy nodemask is rebound\neach time the mems are changed.  Some possible rebinds and results are:\n\n\tmems\t\t\tresult\n\t1-3\t\t\t1-3\n\t1-7\t\t\t2-4\n\t1,5-6\t\t\t1,5-6\n\t1,5-7\t\t\t5-7\n\nLikewise, the zonelist built for MPOL_BIND acts on the set of zones assigned\nto the resultant nodemask from the relative remap.\n\nIn the MPOL_PREFERRED case, the preferred node is remapped from the currently\neffected nodemask to the relative nodemask.\n\nThis mempolicy mode flag was conceived of by Paul Jackson \u003cpj@sgi.com\u003e.\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "f5b087b52f1710eb0bf15a2d2b030c51a6a1ca9e",
      "tree": "66336235822f59215707dfa501e1d2b66b38a015",
      "parents": [
        "028fec414d803117eb4b2ed12acb4dd5da65b32d"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Apr 28 02:12:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mempolicy: add MPOL_F_STATIC_NODES flag\n\nAdd an optional mempolicy mode flag, MPOL_F_STATIC_NODES, that suppresses the\nnode remap when the policy is rebound.\n\nAdds another member to struct mempolicy, nodemask_t user_nodemask, as part of\na union with cpuset_mems_allowed:\n\n\tstruct mempolicy {\n\t\t...\n\t\tunion {\n\t\t\tnodemask_t cpuset_mems_allowed;\n\t\t\tnodemask_t user_nodemask;\n\t\t} w;\n\t}\n\nthat stores the the nodemask that the user passed when he or she created the\nmempolicy via set_mempolicy() or mbind().  When using MPOL_F_STATIC_NODES,\nwhich is passed with any mempolicy mode, the user\u0027s passed nodemask\nintersected with the VMA or task\u0027s allowed nodes is always used when\ndetermining the preferred node, setting the MPOL_BIND zonelist, or creating\nthe interleave nodemask.  This happens whenever the policy is rebound,\nincluding when a task\u0027s cpuset assignment changes or the cpuset\u0027s mems are\nchanged.\n\nThis creates an interesting side-effect in that it allows the mempolicy\n\"intent\" to lie dormant and uneffected until it has access to the node(s) that\nit desires.  For example, if you currently ask for an interleaved policy over\na set of nodes that you do not have access to, the mempolicy is not created\nand the task continues to use the previous policy.  With this change, however,\nit is possible to create the same mempolicy; it is only effected when access\nto nodes in the nodemask is acquired.\n\nIt is also possible to mount tmpfs with the static nodemask behavior when\nspecifying a node or nodemask.  To do this, simply add \"\u003dstatic\" immediately\nfollowing the mempolicy mode at mount time:\n\n\tmount -o remount mpol\u003dinterleave\u003dstatic:1-3\n\nAlso removes mpol_check_policy() and folds its logic into mpol_new() since it\nis now obsoleted.  The unused vma_mpol_equal() is also removed.\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "028fec414d803117eb4b2ed12acb4dd5da65b32d",
      "tree": "427f37ea0331369c1babc55c424c4fd2ac3b39f5",
      "parents": [
        "a3b51e0142d1be156ac697eaadadd6cfbb7ba32b"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Apr 28 02:12:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mempolicy: support optional mode flags\n\nWith the evolution of mempolicies, it is necessary to support mempolicy mode\nflags that specify how the policy shall behave in certain circumstances.  The\nmost immediate need for mode flag support is to suppress remapping the\nnodemask of a policy at the time of rebind.\n\nBoth the mempolicy mode and flags are passed by the user in the \u0027int policy\u0027\nformal of either the set_mempolicy() or mbind() syscall.  A new constant,\nMPOL_MODE_FLAGS, represents the union of legal optional flags that may be\npassed as part of this int.  Mempolicies that include illegal flags as part of\ntheir policy are rejected as invalid.\n\nAn additional member to struct mempolicy is added to support the mode flags:\n\n\tstruct mempolicy {\n\t\t...\n\t\tunsigned short policy;\n\t\tunsigned short flags;\n\t}\n\nThe splitting of the \u0027int\u0027 actual passed by the user is done in\nsys_set_mempolicy() and sys_mbind() for their respective syscalls.  This is\ndone by intersecting the actual with MPOL_MODE_FLAGS, rejecting the syscall of\nthere are additional flags, and storing it in the new \u0027flags\u0027 member of struct\nmempolicy.  The intersection of the actual with ~MPOL_MODE_FLAGS is stored in\nthe \u0027policy\u0027 member of the struct and all current users of pol-\u003epolicy remain\nunchanged.\n\nThe union of the policy mode and optional mode flags is passed back to the\nuser in get_mempolicy().\n\nThis combination of mode and flags within the same actual does not break\nuserspace code that relies on get_mempolicy(\u0026policy, ...) and either\n\n\tswitch (policy) {\n\tcase MPOL_BIND:\n\t\t...\n\tcase MPOL_INTERLEAVE:\n\t\t...\n\t};\n\nstatements or\n\n\tif (policy \u003d\u003d MPOL_INTERLEAVE) {\n\t\t...\n\t}\n\nstatements.  Such applications would need to use optional mode flags when\ncalling set_mempolicy() or mbind() for these previously implemented statements\nto stop working.  If an application does start using optional mode flags, it\nwill need to mask the optional flags off the policy in switch and conditional\nstatements that only test mode.\n\nAn additional member is also added to struct shmem_sb_info to store the\noptional mode flags.\n\n[hugh@veritas.com: shmem mpol: fix build warning]\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3b51e0142d1be156ac697eaadadd6cfbb7ba32b",
      "tree": "da9e527316f112c09f0bc16553c64e3c87125c82",
      "parents": [
        "1b27d05b6e21249d2338be26dfcbe8f8d8ff8a5b"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Apr 28 02:12:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mempolicy: convert MPOL constants to enum\n\nThe mempolicy mode constants, MPOL_DEFAULT, MPOL_PREFERRED, MPOL_BIND, and\nMPOL_INTERLEAVE, are better declared as part of an enum since they are\nsequentially numbered and cannot be combined.\n\nThe policy member of struct mempolicy is also converted from type short to\ntype unsigned short.  A negative policy does not have any legitimate meaning,\nso it is possible to change its type in preparation for adding optional mode\nflags later.\n\nThe equivalent member of struct shmem_sb_info is also changed from int to\nunsigned short.\n\nFor compatibility, the policy formal to get_mempolicy() remains as a pointer\nto an int:\n\n\tint get_mempolicy(int *policy, unsigned long *nmask,\n\t\t\t  unsigned long maxnode, unsigned long addr,\n\t\t\t  unsigned long flags);\n\nalthough the only possible values is the range of type unsigned short.\n\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: David Rientjes \u003crientjes@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": "46711810200c50e639ffc52e755b3dba9b4c82a3",
      "tree": "0279398b04ff7b1609bf689f56c21793cbc40d57",
      "parents": [
        "7682486b3ee06f800d5b11033371c7c5e92e3057"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "mm/shmem and tiny-shmem: fix some kernel-doc\n\nConvert tiny-shmem.c function comments to kernel-doc.  Add parameters and\nconvert/fix other kernel-doc in shmem.c.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e924aafa4b03ff71de34af8553d9a1ebc86c071",
      "tree": "21735b7369ede27f34c41184b0a686020b80e2c6",
      "parents": [
        "9442ec9df40d952b0de185ae5638a74970388e01"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: mem_cgroup_charge never NULL\n\nMy memcgroup patch to fix hang with shmem/tmpfs added NULL page handling to\nmem_cgroup_charge_common.  It seemed convenient at the time, but hard to\njustify now: there\u0027s a perfectly appropriate swappage to charge and uncharge\ninstead, this is not on any hot path through shmem_getpage, and no performance\nhit was observed from the slight extra overhead.\n\nSo revert that NULL page handling from mem_cgroup_charge_common; and make it\nclearer by bringing page_cgroup_assign_new_page_cgroup into its body - that\nwas a helper I found more of a hindrance to understanding.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\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": "b76db735407a26c1036fdfef249ddc35eb969bc4",
      "tree": "02a9eb85b34765bc1eb82d632b1913ce79b8a6d6",
      "parents": [
        "680d794babebc74484c141448baa9b95b211cf5e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 08 04:21:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:41 2008 -0800"
      },
      "message": "mount-options-fix-tmpfs-fix\n\nDocumentation/SubmitCheckist, please.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "680d794babebc74484c141448baa9b95b211cf5e",
      "tree": "fa8b9c085fceaed12b54ea20a8c04696c750053e",
      "parents": [
        "90d09e141bb23bf0df5e31c40fb3175c17e8bda2"
      ],
      "author": {
        "name": "akpm@linux-foundation.org",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Feb 08 04:21:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:41 2008 -0800"
      },
      "message": "mount options: fix tmpfs\n\nAdd .show_options super operation to tmpfs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82369553d6d3bc67c54129a02e0bc0b5b88f3045",
      "tree": "1d80a6cc9f5840550ad025b32ac8ef8fd915fd98",
      "parents": [
        "3be91277e754c7db04eae145ba622b3a3e3ad96d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Feb 07 00:14:22 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:20 2008 -0800"
      },
      "message": "memcgroup: fix hang with shmem/tmpfs\n\nThe memcgroup regime relies upon a cgroup reclaiming pages from itself within\nadd_to_page_cache: which may involve some waiting.  Whereas shmem and tmpfs\nrely upon using add_to_page_cache while holding a spinlock: when it cannot\nwait.  The consequence is that when a cgroup reaches its limit, shmem_getpage\njust hangs - unless there is outside memory pressure too, neither kswapd nor\nradix_tree_preload get it out of the retry loop.\n\nIn most cases we can mem_cgroup_cache_charge the page waitably first, to\nattach the page_cgroup in advance, so add_to_page_cache will do no more than\nincrement a count; then mem_cgroup_uncharge_page after (in both success and\nfailure cases) to balance the books again.\n\nAnd where there used to be a congestion_wait for kswapd (recently made\nredundant by radix_tree_preload), use mem_cgroup_cache_charge with NULL page\nto go through a cycle of allocation and freeing, without accounting to any\nparticular page, and without updating the statistics vector.  This brings the\ncgroup below its limit so the next try usually succeeds.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42492594043d621a7910ff5877c3eb9202870b45",
      "tree": "9188d112c019a189606847dc1d90ccc63c1bacf2",
      "parents": [
        "3729145821e3088a0c3c4183037fde356204bf97"
      ],
      "author": {
        "name": "David P. Quigley",
        "email": "dpquigl@tycho.nsa.gov",
        "time": "Mon Feb 04 22:29:39 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:20 2008 -0800"
      },
      "message": "VFS/Security: Rework inode_getsecurity and callers to return resulting buffer\n\nThis patch modifies the interface to inode_getsecurity to have the function\nreturn a buffer containing the security blob and its length via parameters\ninstead of relying on the calling function to give it an appropriately sized\nbuffer.\n\nSecurity blobs obtained with this function should be freed using the\nrelease_secctx LSM hook.  This alleviates the problem of the caller having to\nguess a length and preallocate a buffer for this function allowing it to be\nused elsewhere for Labeled NFS.\n\nThe patch also removed the unused err parameter.  The conversion is similar to\nthe one performed by Al Viro for the security_getprocattr hook.\n\nSigned-off-by: David P. Quigley \u003cdpquigl@tycho.nsa.gov\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b1b32f2c6f6bb32535d2da62075b51c980880eb",
      "tree": "686aac685a4c04f085dc17cc1a05910149a04933",
      "parents": [
        "b409f9fcf04692c0f603d28c73d2e3dfed27bf54"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:16 2008 -0800"
      },
      "message": "tmpfs: fix shmem_swaplist races\n\nIntensive swapoff testing shows shmem_unuse spinning on an entry in\nshmem_swaplist pointing to itself: how does that come about?  Days pass...\n\nFirst guess is this: shmem_delete_inode tests list_empty without taking the\nglobal mutex (so the swapping case doesn\u0027t slow down the common case); but\nthere\u0027s an instant in shmem_unuse_inode\u0027s list_move_tail when the list entry\nmay appear empty (a rare case, because it\u0027s actually moving the head not the\nthe list member).  So there\u0027s a danger of leaving the inode on the swaplist\nwhen it\u0027s freed, then reinitialized to point to itself when reused.  Fix that\nby skipping the list_move_tail when it\u0027s a no-op, which happens to plug this.\n\nBut this same spinning then surfaces on another machine.  Ah, I\u0027d never\nsuspected it, but shmem_writepage\u0027s swaplist manipulation is unsafe: though we\nstill hold page lock, which would hold off inode deletion if the page were in\npagecache, it doesn\u0027t hold off once it\u0027s in swapcache (free_swap_and_cache\ndoesn\u0027t wait on locked pages).  Hmm: we could put the the inode on swaplist\nearlier, but then shmem_unuse_inode could never prune unswapped inodes.\n\nFix this with an igrab before dropping info-\u003elock, as in shmem_unuse_inode;\nthough I am a little uneasy about the iput which has to follow - it works, and\nI see nothing wrong with it, but it is surprising that shmem inode deletion\nmay now occur below shmem_writepage.  Revisit this fix later?\n\nAnd while we\u0027re looking at these races: the way shmem_unuse tests swapped\nwithout holding info-\u003elock looks unsafe, if we\u0027ve more than one swap area: a\nracing shmem_writepage on another page of the same inode could be putting it\nin swapcache, just as we\u0027re deciding to remove the inode from swaplist -\nthere\u0027s a danger of going on swap without being listed, so a later swapoff\nwould hang, being unable to locate the entry.  Move that test and removal down\ninto shmem_unuse_inode, once info-\u003elock is held.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b409f9fcf04692c0f603d28c73d2e3dfed27bf54",
      "tree": "de287c277045c72c485867a52b37f4e7d0c5815a",
      "parents": [
        "2e0e26c76a35de8f8bec6b2b917518cfeb52888a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:54 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: radix_tree_preloading\n\nNick has observed that shmem.c still uses GFP_ATOMIC when adding to page cache\nor swap cache, without any radix tree preload: so tending to deplete emergency\nreserves of memory.\n\nGFP_ATOMIC remains appropriate in shmem_writepage\u0027s add_to_swap_cache: it\u0027s\nbeing called under memory pressure, so must not wait for more memory to become\navailable.  But shmem_unuse_inode now has a window in which it can and should\npreload with GFP_KERNEL, and say GFP_NOWAIT instead of GFP_ATOMIC in its\nadd_to_page_cache.\n\nshmem_getpage is not so straightforward: its filepage/swappage integrity\nrelies upon exchanging between caches under spinlock, and it would need a lot\nof restructuring to place the preloads correctly.  Instead, follow its pattern\nof retrying on races: use GFP_NOWAIT instead of GFP_ATOMIC in\nadd_to_page_cache, and begin each circuit of the repeat loop with a sleeping\nradix_tree_preload, followed immediately by radix_tree_preload_end - that\nwon\u0027t guarantee success in the next add_to_page_cache, but doesn\u0027t need to.\n\nAnd we can then remove that bothersome congestion_wait: when needed, it\u0027ll\nautomatically get done in the course of the radix_tree_preload.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nLooks-good-to: 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": "2e0e26c76a35de8f8bec6b2b917518cfeb52888a",
      "tree": "1357781bfe035c2401c65b2d0203385a47516bf5",
      "parents": [
        "cb5f7b9a47963d9238398cd0c2676473e3c6896d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: open a window in shmem_unuse_inode\n\nThere are a couple of reasons (patches follow) why it would be good to open a\nwindow for sleep in shmem_unuse_inode, between its search for a matching swap\nentry, and its handling of the entry found.\n\nshmem_unuse_inode must then use igrab to hold the inode against deletion in\nthat window, and its corresponding iput might result in deletion: so it had\nbetter unlock_page before the iput, and might as well release the page too.\n\nNor is there any need to hold on to shmem_swaplist_mutex once we know we\u0027ll\nleave the loop.  So this unwinding moves from try_to_unuse and shmem_unuse\ninto shmem_unuse_inode, in the case when it finds a match.\n\nLet try_to_unuse break on error in the shmem_unuse case, as it does in the\nunuse_mm case: though at this point in the series, no error to break on.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb5f7b9a47963d9238398cd0c2676473e3c6896d",
      "tree": "bc2eed3d7c2c3787f50030c7c493c4295eaf673c",
      "parents": [
        "a0ee5ec520ede1dc8e2194623bcebfd9fab408f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: make shmem_unuse more preemptible\n\nshmem_unuse is at present an unbroken search through every swap vector page of\nevery tmpfs file which might be swapped, all under shmem_swaplist_lock.  This\ndates from long ago, when the caller held mmlist_lock over it all too: long\ngone, but there\u0027s never been much pressure for preemptible swapoff.\n\nMake it a little more preemptible, replacing shmem_swaplist_lock by\nshmem_swaplist_mutex, inserting a cond_resched in the main loop, and a\ncond_resched_lock (on info-\u003elock) at one convenient point in the\nshmem_unuse_inode loop, where it has no outstanding kmap_atomic.\n\nIf we\u0027re serious about preemptible swapoff, there\u0027s much further to go e.g.\nI\u0027m stupid to let the kmap_atomics of the decreasingly significant HIGHMEM\ncase dictate preemptiblility for other configs.  But as in the earlier patch\nto make swapoff scan ptes preemptibly, my hidden agenda is really towards\nmaking memcgroups work, hardly about preemptibility at all.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0ee5ec520ede1dc8e2194623bcebfd9fab408f2",
      "tree": "74a3668798213661a9e62a1b576f081f1ce44838",
      "parents": [
        "d9fe526a83b84edc9c5ff217a00c896bfc20b2ce"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: allocate on read when stacked\n\ntmpfs is expected to limit the memory used (unless mounted with nr_blocks\u003d0 or\nsize\u003d0).  But if a stacked filesystem such as unionfs gets pages from a sparse\ntmpfs file by reading holes, and then writes to them, it can easily exceed any\nsuch limit at present.\n\nSo suppress the SGP_READ \"don\u0027t allocate page\" ZERO_PAGE optimization when\nreading for the kernel (a KERNEL_DS check, ugh, sorry about that).  Indeed,\npessimistically mark such pages as dirty, so they cannot get reclaimed and\nunaccounted by mistake.  The venerable shmem_recalc_inode code (originally to\naccount for the reclaim of clean pages) suffices to get the accounting right\nwhen swappages are dropped in favour of more uptodate filepages.\n\nThis also fixes the NULL shmem_swp_entry BUG or oops in shmem_writepage,\ncaused by unionfs writing to a very sparse tmpfs file: to minimize memory\nallocation in swapout, tmpfs requires the swap vector be allocated upfront,\nwhich wasn\u0027t always happening in this stacked case.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9fe526a83b84edc9c5ff217a00c896bfc20b2ce",
      "tree": "aecb9dbd92108915ba255df8f04d106c2099bf48",
      "parents": [
        "73b1262fa43a778b1e154deea632cdef5009d6a1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: allow filepage alongside swappage\n\ntmpfs has long allowed for a fresh filepage to be created in pagecache, just\nbefore shmem_getpage gets the chance to match it up with the swappage which\nalready belongs to that offset.  But unionfs_writepage now does a\nfind_or_create_page, divorced from shmem_getpage, which leaves conflicting\nfilepage and swappage outstanding indefinitely, when unionfs is over tmpfs.\n\nTherefore shmem_writepage (where a page is swizzled from file to swap) must\nnow be on the lookout for existing swap, ready to free it in favour of the\nmore uptodate filepage, instead of BUGging on that clash.  And when the\nadd_to_page_cache fails in shmem_unuse_inode, it must defer to an uptodate\nfilepage, otherwise swapoff would hang.  Whereas when add_to_page_cache fails\nin shmem_getpage, it should retry in the same way it already does.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73b1262fa43a778b1e154deea632cdef5009d6a1",
      "tree": "409f14e78e23cd999e8c3d1e0945f0fa9b67048f",
      "parents": [
        "f000944d03a5b74ab3c92b2fcdf0e944cc898065"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: move swap swizzling into shmem\n\nmove_to_swap_cache and move_from_swap_cache functions (which swizzle a page\nbetween tmpfs page cache and swap cache, to avoid page copying) are only used\nby shmem.c; and our subsequent fix for unionfs needs different treatments in\nthe two instances of move_from_swap_cache.  Move them from swap_state.c into\ntheir callsites shmem_writepage, shmem_unuse_inode and shmem_getpage, making\nadd_to_swap_cache externally visible.\n\nshmem.c likes to say set_page_dirty where swap_state.c liked to say\nSetPageDirty: respect that diversity, which __set_page_dirty_no_writeback\nmakes moot (and implies we should lose that \"shift page from clean_pages to\ndirty_pages list\" comment: it\u0027s on neither).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "818db35992c249dc32c1d86daf7d533fb0952f5d",
      "tree": "8577fe7cff367eade84f632621b16054c362d39a",
      "parents": [
        "5b04c6890f0dc7ea6c85b9adebc883c55c667d97"
      ],
      "author": {
        "name": "Michael Marineau",
        "email": "mike@marineau.org",
        "time": "Mon Feb 04 22:28:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: fix mounts when size is less than the page size\n\nWhen tmpfs is mounted with a size less than one page, the number of blocks\nis set to 0 which makes the tmpfs mount unlimited.  This can lead to a\nquick and surprising death if someone typos a tmpfs mount command and\nwrites too much.\n\ntmpfs can still be mounted as unlimited if size or nr_blocks is exactly 0,\nas Documentation/filesystems/tmpfs.txt says.\n\nHugh: do this by rounding size up instead of down in all cases: which\nslightly expands other odd-sized tmpfs mounts, but in a consistent way.\n\nSigned-off-by: Michael Marineau \u003cmike@marineau.org\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b04c6890f0dc7ea6c85b9adebc883c55c667d97",
      "tree": "50f060de1edcd5cda14290f13bad0e74433b0a67",
      "parents": [
        "2e441889c38fe1b6ef6b963e6993076aa120176c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Feb 04 22:28:47 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "shmem: factor out sbi-\u003efree_inodes manipulations\n\nThe shmem_sb_info structure has a number of free_inodes. This\nvalue is altered in appropriate places under spinlock and with\nthe sbi-\u003emax_inodes !\u003d 0 check.\n\nConsolidate these manipulations into two helpers.\n\nThis is minus 42 bytes of shmem.o and minus 4 :) lines of code.\n\n[akpm@linux-foundation.org: fix error return values]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5402b976ae0be96b3a32f3508ab7308c380d6477",
      "tree": "d2c0900086033ea1fdeb3e1540e733d962cd177c",
      "parents": [
        "d3602444e1e3485890eea5f61366e19a287c00c4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "shmem_file_write is redundant\n\nWith the old aops, writing to a tmpfs file had to use its own special method:\nthe generic method would pass in a fresh page to prepare_write when the right\npage was there in swapcache - which was inefficient to handle, even once we\u0027d\nconcocted the code to handle it.\n\nWith the new aops, the generic method uses shmem_write_end, which lets\nshmem_getpage find the right page: so now abandon shmem_file_write in favour\nof the generic method.  Yes, that does do several things that tmpfs hasn\u0027t\nreally needed (notably balance_dirty_pages_ratelimited, which ramfs also\ncalls); but more use of common code is preferable.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d3602444e1e3485890eea5f61366e19a287c00c4",
      "tree": "f27cca0ce7c113c6b8f15f77abc3124faea9e2c8",
      "parents": [
        "27d54b398ec0edea0e7417f003171017300e0efc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "shmem_getpage return page locked\n\nIn the new aops, write_begin is supposed to return the page locked: though\nI\u0027ve seen no ill effects, that\u0027s been overlooked in the case of\nshmem_write_begin, and should be fixed.  Then shmem_write_end must unlock the\npage: do so _after_ updating i_size, as we found to be important in other\nfilesystems (though since shmem pages don\u0027t go the usual writeback route, they\nnever suffered from that corruption).\n\nFor shmem_write_begin to return the page locked, we need shmem_getpage to\nreturn the page locked in SGP_WRITE case as well as SGP_CACHE case: let\u0027s\nsimplify the interface and return it locked even when SGP_READ.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@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": "27d54b398ec0edea0e7417f003171017300e0efc",
      "tree": "2167c058ab0734bbb424ec27b2dc19d58fa7befd",
      "parents": [
        "02098feaa42b2e0087fbbe6c6ab9a23e4653b16a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "shmem: SGP_QUICK and SGP_FAULT redundant\n\nRemove SGP_QUICK from the sgp_type enum: it was for shmem_populate and has no\nusers now.  Remove SGP_FAULT from the enum: SGP_CACHE does just as well (and\nshmem_getpage is about to return with page always locked).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02098feaa42b2e0087fbbe6c6ab9a23e4653b16a",
      "tree": "494eaf13f204c9384d4316202fd76cd1b5d960ad",
      "parents": [
        "46017e954826ac59e91df76341a3f76b45467847"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin needs gfp_mask for loop on tmpfs\n\nBuilding in a filesystem on a loop device on a tmpfs file can hang when\nswapping, the loop thread caught in that infamous throttle_vm_writeout.\n\nIn theory this is a long standing problem, which I\u0027ve either never seen in\npractice, or long ago suppressed the recollection, after discounting my load\nand my tmpfs size as unrealistically high.  But now, with the new aops, it has\nbecome easy to hang on one machine.\n\nLoop used to grab_cache_page before the old prepare_write to tmpfs, which\nseems to have been enough to free up some memory for any swapin needed; but\nthe new write_begin lets tmpfs find or allocate the page (much nicer, since\ngrab_cache_page missed tmpfs pages in swapcache).\n\nWhen allocating a fresh page, tmpfs respects loop\u0027s mapping_gfp_mask, which\nhas __GFP_IO|__GFP_FS stripped off, and throttle_vm_writeout is designed to\nbreak out when __GFP_IO or GFP_FS is unset; but when tmfps swaps in,\nread_swap_cache_async allocates with GFP_HIGHUSER_MOVABLE regardless of the\nmapping_gfp_mask - hence the hang.\n\nSo, pass gfp_mask down the line from shmem_getpage to shmem_swapin to\nswapin_readahead to read_swap_cache_async to add_to_swap_cache.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46017e954826ac59e91df76341a3f76b45467847",
      "tree": "711a35e3936118665d0eac2afeef8758b4f4e95f",
      "parents": [
        "c4cc6d07b2f465fbf5efd99bbe772a49c515f3f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:41 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin_readahead: move and rearrange args\n\nswapin_readahead has never sat well in mm/memory.c: move it to mm/swap_state.c\nbeside its kindred read_swap_cache_async.  Why were its args in a different\norder?  rearrange them.  And since it was always followed by a\nread_swap_cache_async of the target page, fold that in and return struct\npage*.  Then CONFIG_SWAP\u003dn no longer needs valid_swaphandles and\nread_swap_cache_async stubs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4cc6d07b2f465fbf5efd99bbe772a49c515f3f2",
      "tree": "0aec353fce4ee6cd16e3051ecfdf55e8022aaa5a",
      "parents": [
        "75897d60a54ccee94253312107f941a83b5077cb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin_readahead: excise NUMA bogosity\n\nFor three years swapin_readahead has been cluttered with fanciful CONFIG_NUMA\ncode, advancing addr, and stepping on to the next vma at the boundary, to line\nup the mempolicy for each page allocation.\n\nIt _might_ be a good idea to allocate swap more according to vma layout; but\nthe fact is, that\u0027s not how we do it at all, 2.6 even less than 2.4: swap is\nallocated as needed for pages as they sink to the bottom of the inactive LRUs.\n Sometimes that may match vma layout, but not so often that it\u0027s worth going\nto these misleading vma-\u003evm_next lengths: rip all that out.\n\nOriginally I intended to retain the incrementation of addr, but correct its\ninitial value: valid_swaphandles generally supplies an offset below the target\naddr (this is readaround rather than readahead), but addr has not been\nadjusted accordingly, so in the interleave case it has usually been allocating\nthe target page from the \"wrong\" node (though that may not matter very much).\n\nBut look at the equivalent shmem_swapin code: either by oversight or by\ndesign, though it has all the apparatus for choosing a new mempolicy per page,\nit uses the same idx throughout, choosing the same mempolicy and interleave\nnode for each page of the cluster.\n\nWhich is actually a much better strategy: each node has its own LRUs and its\nown kswapd, so if you\u0027re betting on any particular relationship between swap\nand node, the best bet is that nearby swap entries belong to pages from the\nsame node - even when the mempolicy of the target page is to interleave.  And\nexamining a map of nodes corresponding to swap entries on a numa\u003dfake system\nbears this out.  (We could later tweak swap allocation to make it even more\nlikely, but this patch is merely about removing cruft.)\n\nSo, neither adjust nor increment addr in swapin_readahead, and then\nshmem_swapin can use it too; the pseudo-vma to pass policy need only be set up\nonce per cluster, and so few fields of pvma are used, let\u0027s skip the memset -\nfrom shmem_alloc_page also.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e84e2e132c9c66d8498e7710d4ea532d1feaaac5",
      "tree": "f754be23d6b37af04d203eb6e34ac7cdb5f84a4b",
      "parents": [
        "9bfb52ad716e74785b2402b7ea17f30e0344b8e8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Nov 28 18:55:10 2007 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 28 11:04:28 2007 -0800"
      },
      "message": "tmpfs: restore missing clear_highpage\n\ntmpfs was misconverted to __GFP_ZERO in 2.6.11.  There\u0027s an unusual case in\nwhich shmem_getpage receives the page from its caller instead of allocating.\nWe must cover this case by clear_highpage before SetPageUptodate, as before.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "487e9bf25cbae11b131d6a14bdbb3a6a77380837",
      "tree": "0b6666750274aadd22b29b1282aa779831976ca1",
      "parents": [
        "8bca44bbd39007065cc6a4e3a50201475629a6cf"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Oct 29 14:37:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 30 08:06:55 2007 -0700"
      },
      "message": "fix tmpfs BUG and AOP_WRITEPAGE_ACTIVATE\n\nIt\u0027s possible to provoke unionfs (not yet in mainline, though in mm and\nsome distros) to hit shmem_writepage\u0027s BUG_ON(page_mapped(page)).  I expect\nit\u0027s possible to provoke the 2.6.23 ecryptfs in the same way (but the\n2.6.24 ecryptfs no longer calls lower level\u0027s -\u003ewritepage).\n\nThis came to light with the recent find that AOP_WRITEPAGE_ACTIVATE could\nleak from tmpfs via write_cache_pages and unionfs to userspace.  There\u0027s\nalready a fix (e423003028183df54f039dfda8b58c49e78c89d7 - writeback: don\u0027t\npropagate AOP_WRITEPAGE_ACTIVATE) in the tree for that, and it\u0027s okay so\nfar as it goes; but insufficient because it doesn\u0027t address the underlying\nissue, that shmem_writepage expects to be called only by vmscan (relying on\nbacking_dev_info capabilities to prevent the normal writeback path from\never approaching it).\n\nThat\u0027s an increasingly fragile assumption, and ramdisk_writepage (the other\nsource of AOP_WRITEPAGE_ACTIVATEs) is already careful to check\nwbc-\u003efor_reclaim before returning it.  Make the same check in\nshmem_writepage, thereby sidestepping the page_mapped BUG also.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nCc: \u003cstable@kernel.org\u003e\nReviewed-by: 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": "39655164405940d4818224a085e35420e2f97aed",
      "tree": "6b019b3bc77eecac1731fe64e5c031790c2b5223",
      "parents": [
        "cfaea787c05822acbb4d8963baee5edd1cc0258f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sun Oct 21 16:42:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 22 08:13:21 2007 -0700"
      },
      "message": "exportfs: make struct export_operations const\n\nNow that nfsd has stopped writing to the find_exported_dentry member we an\nmark the export_operations const\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Timothy Shimmin \u003ctes@sgi.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Chris Mason \u003cmason@suse.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: \"Vladimir V. Saveliev\" \u003cvs@namesys.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@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": "480b116c98344ca246f50aade6eb7aca98151a2f",
      "tree": "72ba3ba17f8c5a72fbd168d1a963b06e269ad898",
      "parents": [
        "905251a02eeccc59f8e1d743679b8edadc5f738b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sun Oct 21 16:42:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 22 08:13:20 2007 -0700"
      },
      "message": "shmem: new export ops\n\nI\u0027m not sure what people were thinking when adding support to export tmpfs,\nbut here\u0027s the conversion anyway:\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce8d2cdf3d2b73e346c82e6f0a46da331df6364c",
      "tree": "bf3597f2d4f57d6e30a7703d7fce0dbf8c757962",
      "parents": [
        "348366b963e4e1462c8354827a9cb910aa865bf2"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Tue Oct 16 23:31:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:04 2007 -0700"
      },
      "message": "r/o bind mounts: filesystem helpers for custom \u0027struct file\u0027s\n\nWhy do we need r/o bind mounts?\n\nThis feature allows a read-only view into a read-write filesystem.  In the\nprocess of doing that, it also provides infrastructure for keeping track of\nthe number of writers to any given mount.\n\nThis has a number of uses.  It allows chroots to have parts of filesystems\nwritable.  It will be useful for containers in the future because users may\nhave root inside a container, but should not be allowed to write to\nsomefilesystems.  This also replaces patches that vserver has had out of the\ntree for several years.\n\nIt allows security enhancement by making sure that parts of your filesystem\nread-only (such as when you don\u0027t trust your FTP server), when you don\u0027t want\nto have entire new filesystems mounted, or when you want atime selectively\nupdated.  I\u0027ve been using the following script to test that the feature is\nworking as desired.  It takes a directory and makes a regular bind and a r/o\nbind mount of it.  It then performs some normal filesystem operations on the\nthree directories, including ones that are expected to fail, like creating a\nfile on the r/o mount.\n\nThis patch:\n\nSome filesystems forego the vfs and may_open() and create their own \u0027struct\nfile\u0027s.\n\nThis patch creates a couple of helper functions which can be used by these\nfilesystems, and will provide a unified place which the r/o bind mount code\nmay patch.\n\nAlso, rename an existing, static-scope init_file() to a less generic name.\n\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "040b5c6f9503f2d6b35c335f8537bb3035d35547",
      "tree": "71f1693fbcaf9e2a953e66fdf13bbbc20510b60e",
      "parents": [
        "c4f3b63fe15b4629aa1ec163c95ab30423d0f76a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue Oct 16 23:26:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:47 2007 -0700"
      },
      "message": "SLAB_PANIC more (proc, posix-timers, shmem)\n\nThese aren\u0027t modular, so SLAB_PANIC is OK.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ba9b9d0ba0a49d91fa6417c7510ee36f48cf957",
      "tree": "191b4f45f926e44b882b1e87a9a85dc12230b892",
      "parents": [
        "b811c202a0edadaac7242ab834fe7ba409978ae7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Tue Oct 16 23:25:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "Slab API: remove useless ctor parameter and reorder parameters\n\nSlab constructors currently have a flags parameter that is never used.  And\nthe order of the arguments is opposite to other slab functions.  The object\npointer is placed before the kmem_cache pointer.\n\nConvert\n\n        ctor(void *object, struct kmem_cache *s, unsigned long flags)\n\nto\n\n        ctor(struct kmem_cache *s, void *object)\n\nthroughout the kernel\n\n[akpm@linux-foundation.org: coupla fixes]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0bf68ddec4f4f90e5871404be4f1854c17f3120",
      "tree": "36203a3558cbe26d698bed18be69b3822fb5eef2",
      "parents": [
        "dc62a30e274d003a4d08fb888f1520add4b21373"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: bdi init hooks\n\nprovide BDI constructor/destructor hooks\n\n[akpm@linux-foundation.org: compile fix]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d8dc74f212c38407fc9f4367181f8f969b719485",
      "tree": "2ff1ec0aaee1e6b3ee29d258a7158deb4b43688c",
      "parents": [
        "af767cbdd78f293485c294113885d95e7f1da123"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 16 01:26:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:03 2007 -0700"
      },
      "message": "mm/shmem.c: make 3 functions static\n\nThis patch makes three needlessly global functions static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e12ba74d8ff3e2f73a583500d7095e406df4d093",
      "tree": "a0d3385b65f0b3e1e00b0bbf11b75e7538a93edb",
      "parents": [
        "c361be55b3128474aa66d31092db330b07539103"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Group short-lived and reclaimable kernel allocations\n\nThis patch marks a number of allocations that are either short-lived such as\nnetwork buffers or are reclaimable such as inode allocations.  When something\nlike updatedb is called, long-lived and unmovable kernel allocations tend to\nbe spread throughout the address space which increases fragmentation.\n\nThis patch groups these allocations together as much as possible by adding a\nnew MIGRATE_TYPE.  The MIGRATE_RECLAIMABLE type is for allocations that can be\nreclaimed on demand, but not moved.  i.e.  they can be migrated by deleting\nthem and re-reading the information from elsewhere.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37b07e4163f7306aa735a6e250e8d22293e5b8de",
      "tree": "5c9c1935253a39aa840a9923bf1c86620cb6f733",
      "parents": [
        "0e1e7c7a739562a321fda07c7cd2a97a7114f8f8"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Tue Oct 16 01:25:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:59 2007 -0700"
      },
      "message": "memoryless nodes: fixup uses of node_online_map in generic code\n\nHere\u0027s a cut at fixing up uses of the online node map in generic code.\n\nmm/shmem.c:shmem_parse_mpol()\n\n\tEnsure nodelist is subset of nodes with memory.\n\tUse node_states[N_HIGH_MEMORY] as default for missing\n\tnodelist for interleave policy.\n\nmm/shmem.c:shmem_fill_super()\n\n\tinitialize policy_nodes to node_states[N_HIGH_MEMORY]\n\nmm/page-writeback.c:highmem_dirtyable_memory()\n\n\tsum over nodes with memory\n\nmm/page_alloc.c:zlc_setup()\n\n\tallowednodes - use nodes with memory.\n\nmm/page_alloc.c:default_zonelist_order()\n\n\taverage over nodes with memory.\n\nmm/page_alloc.c:find_next_best_node()\n\n\tskip nodes w/o memory.\n\tN_HIGH_MEMORY state mask may not be initialized at this time,\n\tunless we want to depend on early_calculate_totalpages() [see\n\tbelow].  Will ZONE_MOVABLE ever be configurable?\n\nmm/page_alloc.c:find_zone_movable_pfns_for_nodes()\n\n\tspread kernelcore over nodes with memory.\n\n\tThis required calling early_calculate_totalpages()\n\tunconditionally, and populating N_HIGH_MEMORY node\n\tstate therein from nodes in the early_node_map[].\n\tIf we can depend on this, we can eliminate the\n\tpopulation of N_HIGH_MEMORY mask from __build_all_zonelists()\n\tand use the N_HIGH_MEMORY mask in find_next_best_node().\n\nmm/mempolicy.c:mpol_check_policy()\n\n\tEnsure nodes specified for policy are subset of\n\tnodes with memory.\n\n[akpm@linux-foundation.org: fix warnings]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Shaohua Li \u003cshaohua.li@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": "800d15a53e7d14fa26495b7b95d3bfe7877dd69d",
      "tree": "09a59e32043f1b601b73ad6105e7634679337884",
      "parents": [
        "674b892ede247ef4fb8d00918f02e29c32b9bbaf"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:25:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:55 2007 -0700"
      },
      "message": "implement simple fs aops\n\nImplement new aops for some of the simpler filesystems.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "43fac94dd62667c83dd2daa5b7ac548512af780a",
      "tree": "68b8cf73959afd24410f3f398bda5953c7dcbadd",
      "parents": [
        "39e91e433169bdfd5a312654e5988986662afd7f"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Tue Oct 16 01:24:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:52 2007 -0700"
      },
      "message": "Clean up duplicate includes in mm/\n\nThis patch cleans up duplicate includes in\n\tmm/\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    }
  ],
  "next": "83c54070ee1a2d05c89793884bea1a03f2851ed4"
}
