)]}'
{
  "log": [
    {
      "commit": "b32714ba29358a688ef337d5297bf4bdc9f596dc",
      "tree": "7f7e7bbb7e7db106c012772e3c95d427b55d6a4b",
      "parents": [
        "7c51d57e9d7fbce89f79c41dc8da383101dbe9c6"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jan 09 07:04:15 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jan 09 13:15:49 2009 -0800"
      },
      "message": "partial revert of asynchronous inode delete\n\nlet the core of this one bake in -next as well, but leave\nsome of the infrastructure in place.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "efaee192063a54749c56b7383803e16fe553630e",
      "tree": "b18e3072904e53701bdd7889bb32babf8cc7bf7c",
      "parents": [
        "f29d3b23238e1955a8094e038c72546e99308e61"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Tue Jan 06 07:20:54 2009 -0800"
      },
      "committer": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Wed Jan 07 08:47:24 2009 -0800"
      },
      "message": "async: make the final inode deletion an asynchronous event\n\nthis makes \"rm -rf\" on a (names cached) kernel tree go from\n11.6 to 8.6 seconds on an ext3 filesystem\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "0bc02f3fa433a98631a932e77c4b1f873da35aee",
      "tree": "2b502015c319f70681f294cd070bdd6bf8e308ad",
      "parents": [
        "67faaada1ebcccf29745346f1d7cb5392f46500a"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Jan 06 14:41:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:14 2009 -0800"
      },
      "message": "fs/inode: fix kernel-doc notation\n\nFix kernel-doc notation:\n\nWarning(linux-2.6.28-git3//fs/inode.c:120): No description found for parameter \u0027sb\u0027\nWarning(linux-2.6.28-git3//fs/inode.c:120): No description found for parameter \u0027inode\u0027\nWarning(linux-2.6.28-git3//fs/inode.c:588): No description found for parameter \u0027sb\u0027\nWarning(linux-2.6.28-git3//fs/inode.c:588): No description found for parameter \u0027inode\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c1d43787b48c798f44dc32a6e6deb5ca2da3e68",
      "tree": "587da6031de37a716839656cf4fe4245aba2afb4",
      "parents": [
        "e5991371ee0d1c0ce19e133c6f9075b49c5b4ae8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:23 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: remove GFP_HIGHUSER_PAGECACHE\n\nGFP_HIGHUSER_PAGECACHE is just an alias for GFP_HIGHUSER_MOVABLE, making\nthat harder to track down: remove it, and its out-of-work brothers\nGFP_NOFS_PAGECACHE and GFP_USER_PAGECACHE.\n\nSince we\u0027re making that improvement to hotremove_migrate_alloc(), I think\nwe can now also remove one of the \"o\"s from its comment.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56ff5efad96182f4d3cb3dc6b07396762c658f16",
      "tree": "cb91f93aa2324573527165d56d230b606a3111ed",
      "parents": [
        "acfa4380efe77e290d3a96b11cd4c9f24f4fbb18"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 09 09:34:39 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 05 11:54:28 2009 -0500"
      },
      "message": "zero i_uid/i_gid on inode allocation\n\n... and don\u0027t bother in callers.  Don\u0027t bother with zeroing i_blocks,\nwhile we are at it - it\u0027s already been zeroed.\n\ni_mode is not worth the effort; it has no common default value.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "261bca86ed4f7f391d1938167624e78da61dcc6b",
      "tree": "4601cf090fbfec31fbd554a27c67c717a7caba4b",
      "parents": [
        "272eb01485dda98e3b8910c7c1a53d597616b0a0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 30 01:48:21 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:43 2008 -0500"
      },
      "message": "nfsd/create race fixes, infrastructure\n\nnew helpers - insert_inode_locked() and insert_inode_locked4().\nHash new inode, making sure that there\u0027s no such inode in icache\nalready.  If there is and it does not end up unhashed (as would\nhappen if we have nfsd trying to resolve a bogus fhandle), fail.\nOtherwise insert our inode into hash and succeed.\n\nIn either case have i_state set to new+locked; cleanup ends up\nbeing simpler with such calling conventions.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d44dab8d1cde8aeba1faf44a7654f90800feb7fc",
      "tree": "f321eac9f9cb211284a987273d2d16c663f6955f",
      "parents": [
        "644c3567d16b7e53cf52ae98c4150d601c9eacfe"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Mon Nov 10 17:06:05 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Mon Nov 10 17:06:05 2008 +1100"
      },
      "message": "fs: xfs needs inode_wait to be exported\n\nSince wait_on_inode() references it.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n"
    },
    {
      "commit": "087e3b0460c367d0f4a5b71d7b013968ae23b588",
      "tree": "538a3abac6a20a3c33f6307a9c92c05882b2081c",
      "parents": [
        "c679eef0520eb3c2c731fce505e61b8ef9469aac"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Oct 30 18:24:37 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Thu Oct 30 18:24:37 2008 +1100"
      },
      "message": "Inode: export symbol destroy_inode\n\nTo make sure we free the security data inodes need to be freed using\nthe proper VFS helper (which we also need to export for this). We mark\nthese inodes bad so we can skip the flush path for them.\n\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: David Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "8290c35f87304a6b73d4fd17b03580b4f7425de8",
      "tree": "cf7fb08de3fd7a6a1ccb079d2d5d53837aca16fe",
      "parents": [
        "2cb1599f9b2ecdd7a9e59feeee647eb258966839"
      ],
      "author": {
        "name": "David Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Oct 30 17:35:24 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Thu Oct 30 17:35:24 2008 +1100"
      },
      "message": "Inode: Allow external list initialisation\n\nTo allow XFS to combine the XFS and linux inodes into a single\nstructure, we need to drive inode lookup from the XFS inode cache,\nnot the generic inode cache. This means that we need initialise a\nstruct inode from a context outside alloc_inode() as it is no longer\nused by XFS.\n\nAfter inode allocation and initialisation, we need to add the inode\nto the superblock list, the in-use list, hash it and do some\naccounting. This all needs to be done with the inode_lock held and\nthere are already several places in fs/inode.c that do this list\nmanipulation.  Factor out the common code, add a locking wrapper and\nexport the function so ti can be called from XFS.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n"
    },
    {
      "commit": "2cb1599f9b2ecdd7a9e59feeee647eb258966839",
      "tree": "a54cb8c09d209e529d399874eb0be7bc365c5212",
      "parents": [
        "94b97e39b0c983e86f0028c456dcf213abc722a0"
      ],
      "author": {
        "name": "David Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Oct 30 17:32:23 2008 +1100"
      },
      "committer": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@redback.melbourne.sgi.com",
        "time": "Thu Oct 30 17:32:23 2008 +1100"
      },
      "message": "Inode: Allow external initialisers\n\nTo allow XFS to combine the XFS and linux inodes into a single\nstructure, we need to drive inode lookup from the XFS inode cache,\nnot the generic inode cache. This means that we need initialise a\nstruct inode from a context outside alloc_inode() as it is no longer\nused by XFS.\n\nFactor and export the struct inode initialisation code from\nalloc_inode() to inode_init_always() as a counterpart to\ninode_init_once().  i.e. we have to call this init function for each\ninode instantiation (always), as opposed inode_init_once() which is\nonly called on slab object instantiation (once).\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n"
    },
    {
      "commit": "7d455e0030eeab820773e7786605be4d9e56a04b",
      "tree": "a388a21fac6ab04e75fb7a722a6abd095ab997a1",
      "parents": [
        "75312619e8cd47265da210189cca57ab09640b18"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 15 00:40:43 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 15 08:35:44 2008 -0700"
      },
      "message": "fs/inode.c: properly init address_space-\u003ewriteback_index\n\nwrite_cache_pages() uses i_mapping-\u003ewriteback_index to pick up where it\nleft off the last time a given inode was found by pdflush or\nbalance_dirty_pages (or anyone else who sets wbc-\u003erange_cyclic)\n\nalloc_inode() should set it to a sane value so that writeback doesn\u0027t\nstart in the middle of a file.  It is somewhat difficult to notice the bug\nsince write_cache_pages will loop around to the start of the file and the\nelevator helps hide the resulting seeks.\n\nFor whatever reason, Btrfs hits this often.  Unpatched, untarring 30\ncopies of the linux kernel in series runs at 47MB/s on a single sata\ndrive.  With this fix, it jumps to 62MB/s.\n\nSigned-off-by: Chris Mason \u003cchris.mason@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": "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": "19fd6231279be3c3bdd02ed99f9b0eb195978064",
      "tree": "ee09121054262d73c551b57114acd855b82a7a82",
      "parents": [
        "a60637c85893e7191faaafa6a72e197c24386727"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: spinlock tree_lock\n\nmapping-\u003etree_lock has no read lockers.  convert the lock from an rwlock\nto a spinlock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\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: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ce07c7b61e74af35a05060a2d6341f68fd92c9e",
      "tree": "d24bdf708f8b864bba349a3e92d329337f4f5dc4",
      "parents": [
        "aeed5fce37196e09b4dac3a1c00d8b7122e040ce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 06 13:13:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 06 13:13:37 2008 -0700"
      },
      "message": "VFS: fix unused variable warning\n\nCommit 33dcdac2df54e66c447ae03f58c95c7251aa5649 (\"kill -\u003eput_inode\")\nremoved the final use of i_op-\u003eput_inode, but left the now totally\nunused \"op\" variable in iput().\n\nGet rid of it.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33dcdac2df54e66c447ae03f58c95c7251aa5649",
      "tree": "72163e37bd44452581f68d7991b14e70f37b8bba",
      "parents": [
        "dca3c33652e437ed02c30ed3eca3cecd0cc00838"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 29 17:46:26 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 06 13:45:34 2008 -0400"
      },
      "message": "[PATCH] kill -\u003eput_inode\n\nAnd with that last patch to affs killing the last put_inode instance we\ncan finally, after many years of transition kill this racy and awkward\ninterface.\n\n(It\u0027s kinda funny that even the description in\nDocumentation/filesystems/vfs.txt was entirely wrong..)\n\nAlso remove a very misleading comment above the defintion of\nstruct super_operations.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c5c8be3ce59dc59baf20b33dae3f8eb70af7b1f1",
      "tree": "93eb6e4142edd82820f5bf4a988f256a09ead748",
      "parents": [
        "af065b8a19041554196971d8b6ae1459798d3b14"
      ],
      "author": {
        "name": "Matthias Kaehlcke",
        "email": "matthias@kaehlcke.net",
        "time": "Tue Apr 29 00:59:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:06 2008 -0700"
      },
      "message": "fs/inode.c: use hlist_for_each_entry()\n\nfs/inode.c: use hlist_for_each_entry() in find_inode() and find_inode_fast()\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Matthias Kaehlcke \u003cmatthias@kaehlcke.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20ddee2c75339cc095f6191c3115f81da8955e96",
      "tree": "de675e92d25f9946026132ac634c08f1c6e87916",
      "parents": [
        "74f9fdfa1f229284ee1ea58fa47f2cdeeb12f6fe"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:43 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:29:24 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: write count for file_update_time()\n\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cdb70f3f74b31576cc4d707a3d3b00d159cab8bb",
      "tree": "6b2fd4e67c78811c29632c30854af29849c2594f",
      "parents": [
        "a761a1c03a739f04afd6c8d37fd16405bbe754da"
      ],
      "author": {
        "name": "Dave Hansen",
        "email": "haveblue@us.ibm.com",
        "time": "Fri Feb 15 14:37:41 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 19 00:29:23 2008 -0400"
      },
      "message": "[PATCH] r/o bind mounts: write counts for touch_atime()\n\nRemove handling of NULL mnt while we are at it - that can\u0027t happen these days.\n\nAcked-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "12debc4248a4a7f1873e47cda2cdd7faca80b099",
      "tree": "1ad80b77d213ea09cb746d6e4d50c4316462a452",
      "parents": [
        "755aedc15900ff7d83dd046f632af9a680b0c28f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 07 00:15:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:29 2008 -0800"
      },
      "message": "iget: remove iget() and the read_inode() super op as being obsolete\n\nRemove the old iget() call and the read_inode() superblock operation it uses\nas these are really obsolete, and the use of read_inode() does not produce\nproper error handling (no distinction between ENOMEM and EIO when marking an\ninode bad).\n\nFurthermore, this removes the temptation to use iget() to find an inode by\nnumber in a filesystem from code outside that filesystem.\n\niget_locked() should be used instead.  A new function is added in an earlier\npatch (iget_failed) that is to be called to mark an inode as bad, unlock it\nand release it should the get routine fail.  Mark iget() and read_inode() as\nbeing obsolete and remove references to them from the documentation.\n\nTypically a filesystem will be modified such that the read_inode function\nbecomes an internal iget function, for example the following:\n\n\tvoid thingyfs_read_inode(struct inode *inode)\n\t{\n\t\t...\n\t}\n\nwould be changed into something like:\n\n\tstruct inode *thingyfs_iget(struct super_block *sp, unsigned long ino)\n\t{\n\t\tstruct inode *inode;\n\t\tint ret;\n\n\t\tinode \u003d iget_locked(sb, ino);\n\t\tif (!inode)\n\t\t\treturn ERR_PTR(-ENOMEM);\n\t\tif (!(inode-\u003ei_state \u0026 I_NEW))\n\t\t\treturn inode;\n\n\t\t...\n\t\tunlock_new_inode(inode);\n\t\treturn inode;\n\terror:\n\t\tiget_failed(inode);\n\t\treturn ERR_PTR(ret);\n\t}\n\nand then thingyfs_iget() would be called rather than iget(), for example:\n\n\tret \u003d -EINVAL;\n\tinode \u003d iget(sb, ino);\n\tif (!inode || is_bad_inode(inode))\n\t\tgoto error;\n\nbecomes:\n\n\tinode \u003d thingyfs_iget(sb, ino);\n\tif (IS_ERR(inode)) {\n\t\tret \u003d PTR_ERR(inode);\n\t\tgoto error;\n\t}\n\nNote that is_bad_inode() does not need to be called.  The error returned by\nthingyfs_iget() should render it unnecessary.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: 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": "25ec56b518257a56d2ff41a941d288e4b5ff9488",
      "tree": "77e84d38a5ad242f9d73a006f009649f223378f1",
      "parents": [
        "7a224228ed79d587ece2304869000aad1b8e97dd"
      ],
      "author": {
        "name": "Jean Noel Cordenner",
        "email": "jean-noel.cordenner@bull.net",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "ext4: Add inode version support in ext4\n\nThis patch adds 64-bit inode version support to ext4. The lower 32 bits\nare stored in the osd1.linux1.l_i_version field while the high 32 bits\nare stored in the i_version_hi field newly created in the ext4_inode.\nThis field is incremented in case the ext4_inode is large enough. A\ni_version mount option has been added to enable the feature.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Kalpak Shah \u003ckalpak@clusterfs.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Jean Noel Cordenner \u003cjean-noel.cordenner@bull.net\u003e\n"
    },
    {
      "commit": "7a224228ed79d587ece2304869000aad1b8e97dd",
      "tree": "f2b299f5a5d04cf8d3d0ef10ff264bd34943f90e",
      "parents": [
        "818d276ceb83aa9fdebb5e0a53188290312de987"
      ],
      "author": {
        "name": "Jean Noel Cordenner",
        "email": "jean-noel.cordenner@bull.net",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "vfs: Add 64 bit i_version support\n\nThe i_version field of the inode is changed to be a 64-bit counter that\nis set on every inode creation and that is incremented every time the\ninode data is modified (similarly to the \"ctime\" time-stamp).\nThe aim is to fulfill a NFSv4 requirement for rfc3530.\nThis first part concerns the vfs, it converts the 32-bit i_version in\nthe generic inode to a 64-bit, a flag is added in the super block in\norder to check if the feature is enabled and the i_version is\nincremented in the vfs.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Jean Noel Cordenner \u003cjean-noel.cordenner@bull.net\u003e\nSigned-off-by: Kalpak Shah \u003ckalpak@clusterfs.com\u003e\n"
    },
    {
      "commit": "1c0eeaf5698597146ed9b873e2f9e0961edcf0f9",
      "tree": "5265eac8437e8ce517a62db8fe2bd99db5b7019b",
      "parents": [
        "2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b"
      ],
      "author": {
        "name": "Joern Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Tue Oct 16 23:30:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:02 2007 -0700"
      },
      "message": "introduce I_SYNC\n\nI_LOCK was used for several unrelated purposes, which caused deadlock\nsituations in certain filesystems as a side effect.  One of the purposes\nnow uses the new I_SYNC bit.\n\nAlso document the various bits and change their order from historical to\nlogical.\n\n[bunk@stusta.de: make fs/inode.c:wake_up_inode() static]\nSigned-off-by: Joern Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Anton Altaparmakov \u003caia21@cam.ac.uk\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74bf17cffc32511c7c6d70fe7f376b92662e186e",
      "tree": "e770b056d4a83f847a04fc92e119aa607ec0edaf",
      "parents": [
        "1d99493b3a68e40e56459ea3565d4402fb6e5f3a"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Tue Oct 16 23:26:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:49 2007 -0700"
      },
      "message": "fs: remove the unused mempages parameter\n\nSince the mempages parameter is actually not used, they should be removed.\n\nNow there is only files_init use the mempages parameter,\n\n \tfiles_init(mempages);\n\nbut I don\u0027t think the adaptation to mempages in files_init is really\nuseful; and if files_init also changed to the prototype void (*func)(void),\nthe wrapper vfs_caches_init would also not need the mempages parameter.\n\nSigned-off-by: Denis Cheng \u003ccrquan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "1e89a5e15a2c88b3fd1ed3fa17fd767efe44727a",
      "tree": "840cb2badbbd568c44fa0ed2b3a467d3143381ea",
      "parents": [
        "e744fdea546abf7a794898a99a26f85c63a83648"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 06:47:54 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 10:01:50 2007 -0700"
      },
      "message": "lockdep: fixup the inode dir annotation\n\nA slight oversight tripped lockdep debugging code, each lockdep\nclass should have but a single init site.\n\nRearange the code to make this true.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14358e6ddaed27499d7d366b3e65c3e46b39e1c4",
      "tree": "de5a8919db855568577d0388fe30b5d7689e1f90",
      "parents": [
        "d475fd428ce77aa2a8bc650d230e17663a4f49c3"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun Oct 14 01:38:33 2007 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Sun Oct 14 01:38:33 2007 +0200"
      },
      "message": "lockdep: annotate dir vs file i_mutex\n\nOn Mon, 2007-09-24 at 22:13 -0400, Steven Rostedt wrote:\n\u003e The circular lock seems to be this:\n\u003e \n\u003e #1:\n\u003e \n\u003e   sys_mmap2:              down_write(\u0026mm-\u003emmap_sem);\n\u003e   nfs_revalidate_mapping: mutex_lock(\u0026inode-\u003ei_mutex);\n\u003e \n\u003e \n\u003e #0:\n\u003e \n\u003e   vfs_readdir:     mutex_lock(\u0026inode-\u003ei_mutex);\n\u003e    - during the readdir (filldir64), we take a user fault (missing page?)\n\u003e     and call do_page_fault -\n\u003e   do_page_fault:   down_read(\u0026mm-\u003emmap_sem);\n\u003e \n\u003e \n\u003e So it does indeed look like a circular locking. Now the question is, \"is\n\u003e this a bug?\".  Looking like the inode of #1 must be a file or something\n\u003e else that you can mmap and the inode of #0 seems it must be a directory.\n\u003e I would say \"no\".\n\u003e \n\u003e Now if you can readdir on a file or mmap a directory, then this could be\n\u003e an issue.\n\u003e \n\u003e Otherwise, I\u0027d love to see someone teach lockdep about this issue! ;-)\n\nMake a distinction between file and dir usage of i_mutex.\nThe inode should be complete and unused at unlock_new_inode(), re-init\ni_mutex depending on its type.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n"
    },
    {
      "commit": "d475fd428ce77aa2a8bc650d230e17663a4f49c3",
      "tree": "19ba4a1b688a758b2e674f792e1d605896419cc8",
      "parents": [
        "58dfe883d3bc3b4c08c53a7f39e2ca3ec84f089e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Oct 15 14:51:31 2007 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Oct 15 14:51:31 2007 +0200"
      },
      "message": "lockdep: per filesystem inode lock class\nGive each filesystem its own inode lock class. The various filesystems have\ndifferent locking order wrt the inode locks; esp. the pseudo filesystems differ\nfrom the rest.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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"
    },
    {
      "commit": "8e1f936b73150f5095448a0fee6d4f30a1f9001d",
      "tree": "0996203e35c629e2ec243d128c7bd91ecd74d24a",
      "parents": [
        "5ad333eb66ff1e52a87639822ae088577669dcf9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Jul 17 04:03:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:00 2007 -0700"
      },
      "message": "mm: clean up and kernelify shrinker registration\n\nI can never remember what the function to register to receive VM pressure\nis called.  I have to trace down from __alloc_pages() to find it.\n\nIt\u0027s called \"set_shrinker()\", and it needs Your Help.\n\n1) Don\u0027t hide struct shrinker.  It contains no magic.\n2) Don\u0027t allocate \"struct shrinker\".  It\u0027s not helpful.\n3) Call them \"register_shrinker\" and \"unregister_shrinker\".\n4) Call the function \"shrink\" not \"shrinker\".\n5) Reduce the 17 lines of waffly comments to 13, but document it properly.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "769848c03895b63e5662eb7e4ec8c4866f7d0183",
      "tree": "8911c7c312c8b8b172795fa2874c8162e1d3d15a",
      "parents": [
        "a32ea1e1f925399e0d81ca3f7394a44a6dafa12c"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jul 17 04:03:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:22:59 2007 -0700"
      },
      "message": "Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated\n\nIt is often known at allocation time whether a page may be migrated or not.\nThis patch adds a flag called __GFP_MOVABLE and a new mask called\nGFP_HIGH_MOVABLE.  Allocations using the __GFP_MOVABLE can be either migrated\nusing the page migration mechanism or reclaimed by syncing with backing\nstorage and discarding.\n\nAn API function very similar to alloc_zeroed_user_highpage() is added for\n__GFP_MOVABLE allocations called alloc_zeroed_user_highpage_movable().  The\nflags used by alloc_zeroed_user_highpage() are not changed because it would\nchange the semantics of an existing API.  After this patch is applied there\nare no in-kernel users of alloc_zeroed_user_highpage() so it probably should\nbe marked deprecated if this patch is merged.\n\nNote that this patch includes a minor cleanup to the use of __GFP_ZERO in\nshmem.c to keep all flag modifications to inode-\u003emapping in the\nshmem_dir_alloc() helper function.  This clean-up suggestion is courtesy of\nHugh Dickens.\n\nAdditional credit goes to Christoph Lameter and Linus Torvalds for shaping the\nconcept.  Credit to Hugh Dickens for catching issues with shmem swap vector\nand ramfs allocations.\n\n[akpm@linux-foundation.org: build fix]\n[hugh@veritas.com: __GFP_ZERO cleanup]\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": "a35afb830f8d71ec211531aeb9a621b09a2efb39",
      "tree": "198280081e1f8b2f6c450742a5075cc7904a3d58",
      "parents": [
        "5577bd8a85c8b7643a241789b14fafa9c8a6c7db"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 16 22:10:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 17 05:23:04 2007 -0700"
      },
      "message": "Remove SLAB_CTOR_CONSTRUCTOR\n\nSLAB_CTOR_CONSTRUCTOR is always specified. No point in checking it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "866b04fccbf125cd39f2bdbcfeaa611d39a061a8",
      "tree": "5f59337d971bcb696b75e6fc39ca5d7d2a5a287b",
      "parents": [
        "63bd23591e6c3891d34e4c6dba7c6aa41b05caad"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 08 00:32:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:16 2007 -0700"
      },
      "message": "inode numbering: make static counters in new_inode and iunique be 32 bits\n\nThe problems are:\n\n- on filesystems w/o permanent inode numbers, i_ino values can be larger\n  than 32 bits, which can cause problems for some 32 bit userspace programs on\n  a 64 bit kernel.  We can\u0027t do anything for filesystems that have actual\n  \u003e32-bit inode numbers, but on filesystems that generate i_ino values on the\n  fly, we should try to have them fit in 32 bits.  We could trivially fix this\n  by making the static counters in new_inode and iunique 32 bits, but...\n\n- many filesystems call new_inode and assume that the i_ino values they are\n  given are unique.  They are not guaranteed to be so, since the static\n  counter can wrap.  This problem is exacerbated by the fix for #1.\n\n- after allocating a new inode, some filesystems call iunique to try to get\n  a unique i_ino value, but they don\u0027t actually add their inodes to the\n  hashtable, and so they\u0027re still not guaranteed to be unique if that counter\n  wraps.\n\nThis patch set takes the simpler approach of simply using iunique and hashing\nthe inodes afterward.  Christoph H.  previously mentioned that he thought that\nthis approach may slow down lookups for filesystems that currently hash their\ninodes.\n\nThe questions are:\n\n1) how much would this slow down lookups for these filesystems?\n2) is it enough to justify adding more infrastructure to avoid it?\n\nWhat might be best is to start with this approach and then only move to using\nIDR or some other scheme if these extra inodes in the hashtable prove to be\nproblematic.\n\nI\u0027ve done some cursory testing with this patch and the overhead of hashing and\nunhashing the inodes with pipefs is pretty low -- just a few seconds of system\ntime added on to the creation and destruction of 10 million pipes (very\nsimilar to the overhead that the IDR approach would add).\n\nThe hard thing to measure is what effect this has on other filesystems. I\u0027m\nopen to ways to try and gauge this.\n\nAgain, I\u0027ve only converted pipefs as an example. If this approach is\nacceptable then I\u0027ll start work on patches to convert other filesystems.\n\nWith a pretty-much-worst-case microbenchmark provided by Eric Dumazet\n\u003cdada1@cosmosbay.com\u003e:\n\nhashing patch (pipebench):\nsys     1m15.329s\nsys     1m16.249s\nsys     1m17.169s\n\nunpatched (pipebench):\nsys     1m9.836s\nsys     1m12.541s\nsys     1m14.153s\n\nWhich works out to 1.05642174294555027017.  So ~5-6% slowdown.\n\nThis patch:\n\nWhen a 32-bit program that was not compiled with large file offsets does a\nstat and gets a st_ino value back that won\u0027t fit in the 32 bit field, glibc\n(correctly) generates an EOVERFLOW error.  We can\u0027t do anything about fs\u0027s\nwith larger permanent inode numbers, but when we generate them on the fly, we\nought to try and have them fit within a 32 bit field.\n\nThis patch takes the first step toward this by making the static counters in\nthese two functions be 32 bits.\n\n[jlayton@redhat.com: mention that it\u0027s only the case for 32bit, non-LFS stat]\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5e618181a927210f8be1d3d2249d31904ba358d",
      "tree": "731f1ae4ff1ba56d402bb329182b7d935bb439a1",
      "parents": [
        "db9c02fa8bd50eb104781a9f78cae923d8da1e74"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@sw.ru",
        "time": "Tue May 08 00:30:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:11 2007 -0700"
      },
      "message": "Introduce a handy list_first_entry macro\n\nThere are many places in the kernel where the construction like\n\n   foo \u003d list_entry(head-\u003enext, struct foo_struct, list);\n\nare used.\nThe code might look more descriptive and neat if using the macro\n\n   list_first_entry(head, type, member) \\\n             list_entry((head)-\u003enext, type, member)\n\nHere is the macro itself and the examples of its usage in the generic code.\n If it will turn out to be useful, I can prepare the set of patches to\ninject in into arch-specific code, drivers, networking, etc.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3361c7bebbf207f57f3dd1282cd87e1e37c082ac",
      "tree": "53c5ee74c70ed9727964996f3cf2fa4a0ff368ea",
      "parents": [
        "9d0633cfedde484d30eef869f749c04709ab3e42"
      ],
      "author": {
        "name": "Jeffrey Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 08 00:29:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:10 2007 -0700"
      },
      "message": "make iunique use a do/while loop rather than its obscure goto loop\n\nA while back, Christoph mentioned that he thought that iunique ought to be\ncleaned up to use a more conventional loop construct. This patch does that,\nturning the strange goto loop into a do/while.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.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": "acb0c854fa9483fa85e377b9f342352ea814a580",
      "tree": "654c7049c01b97314f2b93671b7d0c315a40adcf",
      "parents": [
        "578c8183c116e623d53b05d4c79762d053c7090f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "vfs: remove superflous sb \u003d\u003d NULL checks\n\ninode-\u003ei_sb is always set, not need to check for it.\n\nSigned-off-by: 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": "50953fe9e00ebbeffa032a565ab2f08312d51a87",
      "tree": "9f95f56f0b51600959a76cd88ce17f6e9c7a98a3",
      "parents": [
        "4b1d89290b62bb2db476c94c82cf7442aab440c8"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:50:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:57 2007 -0700"
      },
      "message": "slab allocators: Remove SLAB_DEBUG_INITIAL flag\n\nI have never seen a use of SLAB_DEBUG_INITIAL.  It is only supported by\nSLAB.\n\nI think its purpose was to have a callback after an object has been freed\nto verify that the state is the constructor state again?  The callback is\nperformed before each freeing of an object.\n\nI would think that it is much easier to check the object state manually\nbefore the free.  That also places the check near the code object\nmanipulation of the object.\n\nAlso the SLAB_DEBUG_INITIAL callback is only performed if the kernel was\ncompiled with SLAB debugging on.  If there would be code in a constructor\nhandling SLAB_DEBUG_INITIAL then it would have to be conditional on\nSLAB_DEBUG otherwise it would just be dead code.  But there is no such code\nin the kernel.  I think SLUB_DEBUG_INITIAL is too problematic to make real\nuse of, difficult to understand and there are easier ways to accomplish the\nsame effect (i.e.  add debug code before kfree).\n\nThere is a related flag SLAB_CTOR_VERIFY that is frequently checked to be\nclear in fs inode caches.  Remove the pointless checks (they would even be\npointless without removeal of SLAB_DEBUG_INITIAL) from the fs constructors.\n\nThis is the last slab flag that SLUB did not support.  Remove the check for\nunimplemented flags from SLUB.\n\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": "ee9b6d61a2a43c5952eb43283f8db284a4e70b8a",
      "tree": "afb0340e79d3e9d14f39df20e165ce2efe941b18",
      "parents": [
        "c5ef1c42c51b1b5b4a401a6517bdda30933ddbaf"
      ],
      "author": {
        "name": "Josef \u0027Jeff\u0027 Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Mon Feb 12 00:55:41 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:47 2007 -0800"
      },
      "message": "[PATCH] Mark struct super_operations const\n\nThis patch is inspired by Arjan\u0027s \"Patch series to mark struct\nfile_operations and struct inode_operations const\".\n\nCompile tested with gcc \u0026 sparse.\n\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fb58b7316a99703afb8d076b0e5f3e1e387e4b30",
      "tree": "d2aabf3413fc3e94a6760c364caf0762915a6273",
      "parents": [
        "ea6f3281a145d16ed53e88b0627f78d5cde6068f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Feb 12 00:51:57 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:28 2007 -0800"
      },
      "message": "[PATCH] move remove_dquot_ref to dqout.c\n\nRemove_dquot_ref can move to dqout.c instead of beeing in inode.c under\n#ifdef CONFIG_QUOTA.  Also clean the resulting code up a tiny little bit by\ntesting sb-\u003edq_op earlier - it\u0027s constant over a filesystems lifetime.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc0ecff698165ae8e178efa086e0dd1f385206b1",
      "tree": "fc6274f0862bdd6749172201170b2f6a7ce4c4ff",
      "parents": [
        "54bc485522afdac33de5504da2ea8cdcc690674e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Feb 10 01:45:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:31 2007 -0800"
      },
      "message": "[PATCH] remove invalidate_inode_pages()\n\nConvert all calls to invalidate_inode_pages() into open-coded calls to\ninvalidate_mapping_pages().\n\nLeave the invalidate_inode_pages() wrapper in place for now, marked as\ndeprecated.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4a3b0a490d49ada8bbf3f426be1a0ace4dcd0a55",
      "tree": "3816f425c64a7b551894f098b6f5b5f238339ed0",
      "parents": [
        "068135e63518314d4efd711142f674ad0841599e"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Sat Feb 10 01:44:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:26 2007 -0800"
      },
      "message": "[PATCH] igrab() should check for I_CLEAR\n\nWhen igrab() is calling __iget() on an inode it should check if\nclear_inode() has been called on the inode already.  Otherwise there is a\nrace window between clear_inode() and destroy_inode() where igrab() calls\n__iget() which leads to already free inodes on the inode lists.\n\nSigned-off-by: Vandana Rungta \u003cvandana@novell.com\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Neil Brown \u003cneilb@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": "37756ced1f145aec18917812c3b8a96dbb47990d",
      "tree": "a293813e3dce24a161c2cf029c4139086a23d978",
      "parents": [
        "4ba4d4c0c52201009232fe9e781a281054a24e75"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sat Feb 10 01:44:49 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:25 2007 -0800"
      },
      "message": "[PATCH] avoid one conditional branch in touch_atime()\n\nI added IS_NOATIME(inode) macro definition in include/linux/fs.h, true if\nthe inode superblock is marked readonly or noatime.\n\nThis new macro is then used in touch_atime() instead of separatly testing\nMS_RDONLY and MS_NOATIME\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47ae32d6a54955a041cdc30b06d0bb16e75f68d5",
      "tree": "b28623f98ae536342d35443c6548c373df342e7f",
      "parents": [
        "b227613841d4d211a10c5860acc73e133b613bc0"
      ],
      "author": {
        "name": "Valerie Henson",
        "email": "val_henson@linux.intel.com",
        "time": "Wed Dec 13 00:34:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] relative atime\n\nAdd \"relatime\" (relative atime) support.  Relative atime only updates the\natime if the previous atime is older than the mtime or ctime.  Like\nnoatime, but useful for applications like mutt that need to know when a\nfile has been read since it was last modified.\n\nA corresponding patch against mount(8) is available at\nhttp://userweb.kernel.org/~akpm/mount-relative-atime.txt\n\nSigned-off-by: Valerie Henson \u003cval_henson@linux.intel.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b227613841d4d211a10c5860acc73e133b613bc0",
      "tree": "273f9672954f65edb0098da6f65a27a30ad46bbc",
      "parents": [
        "1c0350bd0c9b59957760e67516973db35bafa050"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Dec 13 00:34:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] touch_atime() cleanup\n\nSimplify touch_atime() layout.\n\nCc: Valerie Henson \u003cval_henson@linux.intel.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0da1480ec33d4bac8c32051c1d33202be6dc439f",
      "tree": "2b7c820451aa595fb9a8f64556eadd21ef3e9e2e",
      "parents": [
        "3982cd99c30285ebc71d405cd8530a3dfb7265de"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:40:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:44 2006 -0800"
      },
      "message": "[PATCH] proper prototype for remove_inode_dquot_ref()\n\nAdd a proper prototype for remove_inode_dquot_ref() in\ninclude/linux/quotaops.h\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e94b1766097d53e6f3ccfb36c8baa562ffeda3fc",
      "tree": "93fa0a8ab84976d4e89c50768ca8b8878d642a0d",
      "parents": [
        "54e6ecb23951b195d02433a741c7f7cb0b796c78"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:24 2006 -0800"
      },
      "message": "[PATCH] slab: remove SLAB_KERNEL\n\nSLAB_KERNEL is an alias of GFP_KERNEL.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "62752ee198dca9209b7dee504763e51b11e9e0ca",
      "tree": "5e340a4c690851dadc3a8aa395e4c0d14b4837eb",
      "parents": [
        "ce9e3d9953c8cb67001719b5516da2928e956be4"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Oct 17 10:31:38 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Thu Oct 19 20:53:08 2006 +0200"
      },
      "message": "[PATCH] Take i_mutex in splice_from_pipe()\n\nThe splice_actor may be calling -\u003eprepare_write() and -\u003ecommit_write(). We\nwant i_mutex on the inode being written to before calling those so that we\ndon\u0027t race i_size changes.\n\nThe double locking behavior is done elsewhere in splice.c, and if we\neventually want _nolock variants of generic_file_splice_write(), fs modules\nmight have to replicate the nasty locking code. We introduce\ninode_double_lock() and inode_double_unlock() to consolidate the locking\nrules into one set of functions.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e6c6e640b8b258dc7f60533e81f050d15fc0a9af",
      "tree": "288227e66788a0f16b8430ac6fc6dd1ede372330",
      "parents": [
        "663d1ba2f1f66db43ab95350f965c1d9f2e3e5bc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Tue Oct 10 22:48:47 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 10 15:37:23 2006 -0700"
      },
      "message": "[PATCH] fs/inode.c NULL noise removal\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ed97bd37efd8ff7398d3a7eedf4bcbf245f5dad3",
      "tree": "79817438dc5b3e004ba91d593228dc8aefcda3e8",
      "parents": [
        "07acaf28d21e710bcf1cec91c0cfdb1a7b5e3d65"
      ],
      "author": {
        "name": "Andreas Mohr",
        "email": "andi@rhlx01.fht-esslingen.de",
        "time": "Mon Oct 02 02:17:17 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:14 2006 -0700"
      },
      "message": "[PATCH] fs/inode.c tweaks\n\nOnly touch inode\u0027s i_mtime and i_ctime to make them equal to \"now\" in case\nthey aren\u0027t yet (don\u0027t just update timestamp unconditionally).  Uninline\nthe hash function to save 259 Bytes.\n\nThis tiny inode change which may improve cache behaviour also shaves off 8\nBytes from file_update_time() on i386.\n\nIncluded a tiny codestyle cleanup, too.\n\nSigned-off-by: Andreas Mohr \u003candi@lisas.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b71e8a4ce03b3098c7801ee5e6e08d1a39a226c2",
      "tree": "69e287c96181862f911b19dfd37abb968d26bdaf",
      "parents": [
        "811d736f9e8013966e1a5a930c0db09508bdbb15"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:06:11 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:27 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move __invalidate_device() to block_dev.c [try #6]\n\nMove __invalidate_device() from fs/inode.c to fs/block_dev.c so that it can\nmore easily be disabled when the block layer is disabled.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "50462062a02226a698a211d5bd535376c89b8603",
      "tree": "07a34af458b338c609a35072b8c6fd1ed2a235a1",
      "parents": [
        "cfe14677f286c9be5d683b88214def8f4b8a6f24"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Sep 29 02:00:01 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:11 2006 -0700"
      },
      "message": "[PATCH] fs.h: ifdef security fields\n\n[assuming BSD security levels are deleted]\nThe only user of i_security, f_security, s_security fields is SELinux,\nhowever, quite a few security modules are trying to get into kernel.\nSo, wrap them under CONFIG_SECURITY. Adding config option for each\nsecurity field is likely an overkill.\n\nFollowing Stephen Smalley\u0027s suggestion, i_security initialization is\nmoved to security_inode_alloc() to not clutter core code with ifdefs\nand make alloc_inode() codepath tiny little bit smaller and faster.\n\nThe user of (highly greppable) struct fown_struct::security field is\nstill to be found. I\u0027ve checked every \"fown_struct\" and every \"f_owner\"\noccurence. Additionally it\u0027s removal doesn\u0027t break i386 allmodconfig\nbuild.\n\nstruct inode, struct file, struct super_block, struct fown_struct\nbecome smaller.\n\nP.S. Combined with two reiserfs inode shrinking patches sent to\nlinux-fsdevel, I can finally suck 12 reiserfs inodes into one page.\n\n\t\t/proc/slabinfo\n\n\t-ext2_inode_cache\t388\t10\n\t+ext2_inode_cache\t384\t10\n\t-inode_cache\t\t280\t14\n\t+inode_cache\t\t276\t14\n\t-proc_inode_cache\t296\t13\n\t+proc_inode_cache\t292\t13\n\t-reiser_inode_cache\t336\t11\n\t+reiser_inode_cache\t332\t12 \u003c\u003d\n\t-shmem_inode_cache\t372\t10\n\t+shmem_inode_cache\t368\t10\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "577c4eb09d1034d0739e3135fd2cff50588024be",
      "tree": "2eb22d60a62d013f300729ee563d1fe61f544da9",
      "parents": [
        "eaf796e7ef6014f208c409b2b14fddcfaafe7e3a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:49 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:17 2006 -0700"
      },
      "message": "[PATCH] inode-diet: Move i_cdev into a union\n\nMove the i_cdev pointer in struct inode into a union.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eaf796e7ef6014f208c409b2b14fddcfaafe7e3a",
      "tree": "4a872d4b2b086132a9ebdaec1420b8a861ddf6b7",
      "parents": [
        "4c1541680f8d189d21dd07b053bc12996574646e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:17 2006 -0700"
      },
      "message": "[PATCH] inode-diet: Move i_bdev into a union\n\nMove the i_bdev pointer in struct inode into a union.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8e18e2941c53416aa219708e7dcad21fb4bd6794",
      "tree": "44118f8b09556193ac93e0b71aecfa3e1d4bc182",
      "parents": [
        "6a1d9805ec506d8b9d04450997707da5f643d87c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 27 01:50:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:17 2006 -0700"
      },
      "message": "[PATCH] inode_diet: Replace inode.u.generic_ip with inode.i_private\n\nThe following patches reduce the size of the VFS inode structure by 28 bytes\non a UP x86.  (It would be more on an x86_64 system).  This is a 10% reduction\nin the inode size on a UP kernel that is configured in a production mode\n(i.e., with no spinlock or other debugging functions enabled; if you want to\nsave memory taken up by in-core inodes, the first thing you should do is\ndisable the debugging options; they are responsible for a huge amount of bloat\nin the VFS inode structure).\n\nThis patch:\n\nThe filesystem or device-specific pointer in the inode is inside a union,\nwhich is pretty pointless given that all 30+ users of this field have been\nusing the void pointer.  Get rid of the union and rename it to i_private, with\na comment to explain who is allowed to use the void pointer.  This is just a\ncleanup, but it allows us to reuse the union \u0027u\u0027 for something something where\nthe union will actually be used.\n\n[judith@osdl.org: powerpc build fix]\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Judith Lebzelter \u003cjudith@osdl.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "22a3e233ca08a2ddc949ba1ae8f6e16ec7ef1a13",
      "tree": "7ef158ba2c30e0dde2dc103d1904fae243759a6b",
      "parents": [
        "39302175c26d74be35715c05a0f342c9e64c21bf",
        "6ab3d5624e172c553004ecc862bfeac16d9d68b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 15:39:30 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial:\n  Remove obsolete #include \u003clinux/config.h\u003e\n  remove obsolete swsusp_encrypt\n  arch/arm26/Kconfig typos\n  Documentation/IPMI typos\n  Kconfig: Typos in net/sched/Kconfig\n  v9fs: do not include linux/version.h\n  Documentation/DocBook/mtdnand.tmpl: typo fixes\n  typo fixes: specfic -\u003e specific\n  typo fixes in Documentation/networking/pktgen.txt\n  typo fixes: occuring -\u003e occurring\n  typo fixes: infomation -\u003e information\n  typo fixes: disadvantadge -\u003e disadvantage\n  typo fixes: aquire -\u003e acquire\n  typo fixes: mecanism -\u003e mechanism\n  typo fixes: bandwith -\u003e bandwidth\n  fix a typo in the RTC_CLASS help text\n  smb is no longer maintained\n\nManually merged trivial conflict in arch/um/kernel/vmlinux.lds.S\n"
    },
    {
      "commit": "f8891e5e1f93a128c3900f82035e8541357896a7",
      "tree": "97b078ac97970962b17c85d39fd64cb48dc01168",
      "parents": [
        "ca889e6c45e0b112cb2ca9d35afc66297519b5d5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 30 01:55:45 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 30 11:25:36 2006 -0700"
      },
      "message": "[PATCH] Light weight event counters\n\nThe remaining counters in page_state after the zoned VM counter patches\nhave been applied are all just for show in /proc/vmstat.  They have no\nessential function for the VM.\n\nWe use a simple increment of per cpu variables.  In order to avoid the most\nsevere races we disable preempt.  Preempt does not prevent the race between\nan increment and an interrupt handler incrementing the same statistics\ncounter.  However, that race is exceedingly rare, we may only loose one\nincrement or so and there is no requirement (at least not in kernel) that\nthe vm event counters have to be accurate.\n\nIn the non preempt case this results in a simple increment for each\ncounter.  For many architectures this will be reduced by the compiler to a\nsingle instruction.  This single instruction is atomic for i386 and x86_64.\n And therefore even the rare race condition in an interrupt is avoided for\nboth architectures in most cases.\n\nThe patchset also adds an off switch for embedded systems that allows a\nbuilding of linux kernels without these counters.\n\nThe implementation of these counters is through inline code that hopefully\nresults in only a single instruction increment instruction being emitted\n(i386, x86_64) or in the increment being hidden though instruction\nconcurrency (EPIC architectures such as ia64 can get that done).\n\nBenefits:\n- VM event counter operations usually reduce to a single inline instruction\n  on i386 and x86_64.\n- No interrupt disable, only preempt disable for the preempt case.\n  Preempt disable can also be avoided by moving the counter into a spinlock.\n- Handling is similar to zoned VM counters.\n- Simple and easily extendable.\n- Can be omitted to reduce memory use for embedded use.\n\nReferences:\n\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d113512330605497\u0026w\u003d2\nRFC http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114988082814934\u0026w\u003d2\nlocal_t http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114991748606690\u0026w\u003d2\nV2 http://marc.theaimsgroup.com/?t\u003d115014808400007\u0026r\u003d1\u0026w\u003d2\nV3 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115024767022346\u0026w\u003d2\nV4 http://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d115047968808926\u0026w\u003d2\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "f5e54d6e53a20cef45af7499e86164f0e0d16bb2",
      "tree": "cb92acbb89b84796261bf5563182261ec5654127",
      "parents": [
        "a052b68b1e7a31f1e6a721290035e9deb0f6fed9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 28 04:26:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jun 28 14:59:04 2006 -0700"
      },
      "message": "[PATCH] mark address_space_operations const\n\nSame as with already do with the file operations: keep them in .rodata and\nprevents people from doing runtime patching.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b7542f8c7eb40efb967a558c5be90fe5f939c3ef",
      "tree": "f0df8a2eb2f9a704696bedb455a1de8e002c75e2",
      "parents": [
        "f6298aab2ebaa61de39931595f125bc1968905cc"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sun Apr 02 13:38:18 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Apr 02 13:38:18 2006 +0200"
      },
      "message": "BUG_ON() Conversion in fs/inode.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner and can better optimized away\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "99ac48f54a91d02140c497edc31dc57d4bc5c85d",
      "tree": "68719391694a6914191bdf73d2071875f7653f6f",
      "parents": [
        "ec1b9466cb4f6ae6d950bd67055d9410d1056d2a"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Mar 28 01:56:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Mar 28 09:16:05 2006 -0800"
      },
      "message": "[PATCH] mark f_ops const in the inode\n\nMark the f_ops members of inodes as const, as well as fix the\nripple-through this causes by places that copy this f_ops and then \"do\nstuff\" with it.\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fa3536cc144c1298f2ed9416c33f3b77fa2cd37a",
      "tree": "5484541319b86ae7dac0def4db7925f7cc7008e7",
      "parents": [
        "878a9f30d7b13015f3aa4534d7877d985f150183"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Mar 26 01:37:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:56:56 2006 -0800"
      },
      "message": "[PATCH] Use __read_mostly on some hot fs variables\n\nI discovered on oprofile hunting on a SMP platform that dentry lookups were\nslowed down because d_hash_mask, d_hash_shift and dentry_hashtable were in\na cache line that contained inodes_stat.  So each time inodes_stats is\nchanged by a cpu, other cpus have to refill their cache line.\n\nThis patch moves some variables to the __read_mostly section, in order to\navoid false sharing.  RCU dentry lookups can go full speed.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bdfc326614b90e7bc47ee4a8fed05988555f0169",
      "tree": "d23575e690979c29c07a4c749e49150fe9aadf65",
      "parents": [
        "ca5734db60630f7c5564a61a5b9034c1bb369c3d"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Mar 25 03:06:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:51 2006 -0800"
      },
      "message": "[PATCH] fs/inode.c: make iprune_mutex static\n\nThere\u0027s no reason for iprune_mutex being global.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b0196009d8c3ecf6ea6ec080c63d2ccc146e7ad9",
      "tree": "3fcb06af54faf92fa5d9d82d5659762d2b742e1c",
      "parents": [
        "c61afb181c649754ea221f104e268cbacfc993e3"
      ],
      "author": {
        "name": "Paul Jackson",
        "email": "pj@sgi.com",
        "time": "Fri Mar 24 03:16:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 24 07:33:23 2006 -0800"
      },
      "message": "[PATCH] cpuset memory spread slab cache hooks\n\nChange the kmem_cache_create calls for certain slab caches to support cpuset\nmemory spreading.\n\nSee the previous patches, cpuset_mem_spread, for an explanation of cpuset\nmemory spreading, and cpuset_mem_spread_slab_cache for the slab cache support\nfor memory spreading.\n\nThe slab caches marked for now are: dentry_cache, inode_cache, some xfs slab\ncaches, and buffer_head.  This list may change over time.  In particular,\nother file system types that are used extensively on large NUMA systems may\nwant to allow for spreading their directory and inode slab cache entries.\n\nSigned-off-by: Paul Jackson \u003cpj@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f24075bd0c1cd1cc2cf86d394f960aa0401de573",
      "tree": "609ad9884e43a8bb1ba5834996955a06bef66fa2",
      "parents": [
        "a11f3a0574a5734db3e5de38922430d005d35118"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 23 03:00:34 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:12 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: iprune\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d4f9af9dac4ecb75818f909168f87b441cc95653",
      "tree": "c5b0ccf7705b6ef0739fd5af64cf48c092760013",
      "parents": [
        "d3be915fc5e7d19a2283ad9b0fe0782a74675d0a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 23 03:00:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:11 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: inotify\n\nSemaphore to mutex conversion.\n\nThe conversion was generated via scripts, and the result was validated\nautomatically via a script as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nAcked-by: Robert Love \u003crml@novell.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7045f37b17ffa6e85435ca980122b46a74caa7e4",
      "tree": "bdf7544b9d6412199c4dec1b4897822c9b6daeab",
      "parents": [
        "99acf0442111cc452ac1b93868dde8f6ff37a989"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Wed Feb 01 03:06:57 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:27 2006 -0800"
      },
      "message": "[PATCH] DocBook: fix some kernel-doc comments in fs and block\n\nUpdate some parameter descriptions to actually match the code.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fc33a7bb9c6dd8f6e4a014976200f8fdabb3a45c",
      "tree": "26f4d676de476075545e58057aa5d8c57618741d",
      "parents": [
        "0d456fa4261f43433287a10fe3ec04a9818fac64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:34 2006 -0800"
      },
      "message": "[PATCH] per-mountpoint noatime/nodiratime\n\nTurn noatime and nodiratime into per-mount instead of per-sb flags.\n\nAfter all the preparations this is a rather trivial patch.  The mount code\nneeds to treat the two options as per-mount instead of per-superblock, and\ntouch_atime needs to be changed to check the new MNT_ flags in addition to\nthe MS_ flags that are kept for filesystems that are always\nnoatime/nodiratime but not user settable anymore.  Besides that core code\nonly nfs needed an update because it\u0027s leaving atime updates to the server\nand thus sets the S_NOATIME flag on every inode, but needs to know whether\nit\u0027s a real noatime mount for an getattr optimization.\n\nWhile we\u0027re at it I\u0027ve killed the IS_NOATIME/IS_NODIRATIME macros that were\nonly used by touch_atime.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "869243a0f6143f76e7c847e707eee6ece9cbf821",
      "tree": "bf14139c86988c40aa10587834141859049ec890",
      "parents": [
        "9cf6f4b3a3d24d8a41515b509b8fb6448f9201e9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:31 2006 -0800"
      },
      "message": "[PATCH] remove update_atime\n\nAll callers use touch_atime now which takes a vfsmount and allows us to\nimplement per-mount noatime.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "870f481793b585323fbda3e87c54efc116f46351",
      "tree": "08dce269f14c18ae1b1682d3cb0f149b938d40bb",
      "parents": [
        "3542c6e18f6470bad2bde1e94331e4f488a8d3f1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 09 20:52:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:30 2006 -0800"
      },
      "message": "[PATCH] replace inode_update_time with file_update_time\n\nTo allow various options to work per-mount instead of per-sb we need a\nstruct vfsmount when updating ctime and mtime.  This preparation patch\nreplaces the inode_update_time routine with a file_update_atime routine so\nwe can easily get at the vfsmount.  (and the file makes more sense in this\ncontext anyway).  Also get rid of the unused second argument - we always\nwant to update the ctime when calling this routine.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5d2bea4582d20cb24085152acaa29b95c05cdcf8",
      "tree": "0ac4e47c8e97ecd3d76507c57ed4346c04a4dba1",
      "parents": [
        "b01ec0ef63e95570e2463b26333d9c9c854cb941"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Sun Jan 08 01:05:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:14:10 2006 -0800"
      },
      "message": "[PATCH] tiny: Uninline some inode.c functions\n\nuninline a couple inode.c functions\n\nadd/remove: 2/0 grow/shrink: 0/5 up/down: 256/-428 (-172)\nfunction                                     old     new   delta\nifind                                          -     136    +136\nifind_fast                                     -     120    +120\nilookup5_nowait                              131      80     -51\nilookup                                      158      71     -87\nilookup5                                     171      80     -91\niget_locked                                  190      95     -95\niget5_locked                                 240     136    -104\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7f04c26d715a2467a49a2384268de8f70f787b51",
      "tree": "8507e9f705f063d996857789261b762b24fad94f",
      "parents": [
        "52303e8b5f8aa234865d40d76ea16b0ff4b27022"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Sun Oct 30 15:03:05 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:26 2005 -0800"
      },
      "message": "[PATCH] fix nr_unused accounting, and avoid recursing in iput with I_WILL_FREE set\n\n \t\t\tlist_move(\u0026inode-\u003ei_list, \u0026inode_in_use);\n \t\t} else {\n \t\t\tlist_move(\u0026inode-\u003ei_list, \u0026inode_unused);\n+\t\t\tinodes_stat.nr_unused++;\n \t\t}\n \t}\n \twake_up_inode(inode);\n\nAre you sure the above diff is correct? It was added somewhere between\n2.6.5 and 2.6.8. I think it\u0027s wrong.\n\nThe only way I can imagine the i_count to be zero in the above path, is\nthat I_WILL_FREE is set.  And if I_WILL_FREE is set, then we must not\nincrease nr_unused.  So I believe the above change is buggy and it will\ndefinitely overstate the number of unused inodes and it should be backed\nout.\n\nNote that __writeback_single_inode before calling __sync_single_inode, can\ndrop the spinlock and we can have both the dirty and locked bitflags clear\nhere:\n\n\t\tspin_unlock(\u0026inode_lock);\n\t\t__wait_on_inode(inode);\n\t\tiput(inode);\nXXXXXXX\n\t\tspin_lock(\u0026inode_lock);\n\t}\n\tuse inode again here\n\na construct like the above makes zero sense from a reference counting\nstandpoint.\n\nEither we don\u0027t ever use the inode again after the iput, or the\ninode_lock should be taken _before_ executing the iput (i.e. a __iput\nwould be required). Taking the inode_lock after iput means the iget was\nuseless if we keep using the inode after the iput.\n\nSo the only chance the 2.6 was safe to call __writeback_single_inode\nwith the i_count \u003d\u003d 0, is that I_WILL_FREE is set (I_WILL_FREE will\nprevent the VM to free the inode in XXXXX).\n\nPotentially calling the above iput with I_WILL_FREE was also wrong\nbecause it would recurse in iput_final (the second mainline bug).\n\nThe below (untested) patch fixes the nr_unused accounting, avoids recursing\nin iput when I_WILL_FREE is set and makes sure (with the BUG_ON) that we\ndon\u0027t corrupt memory and that all holders that don\u0027t set I_WILL_FREE, keeps\na reference on the inode!\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "27496a8c67bef4d789d8e3c8317ca35813a507ae",
      "tree": "fe99a34fe5a800e41af61853e7444ddddf45d014",
      "parents": [
        "7d877f3bda870ab5f001bd92528654471d5966b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 21 03:20:48 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 28 08:16:47 2005 -0700"
      },
      "message": "[PATCH] gfp_t: fs/*\n\n - -\u003ereleasepage() annotated (s/int/gfp_t), instances updated\n - missing gfp_t in fs/* added\n - fixed misannotation from the original sweep caught by bitwise checks:\n   XFS used __nocast both for gfp_t and for flags used by XFS allocator.\n   The latter left with unsigned int __nocast; we might want to add a\n   different type for those but for now let\u0027s leave them alone.  That,\n   BTW, is a case when __nocast use had been actively confusing - it had\n   been used in the same code for two different and similar types, with\n   no way to catch misuses.  Switch of gfp_t to bitwise had caught that\n   immediately...\n\nOne tricky bit is left alone to be dealt with later - mapping-\u003eflags is\na mix of gfp_t and error indications.  Left alone for now.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e85b565233236a2a833adea73fb2f0e0f8fa2a61",
      "tree": "44c7cabcdc62b67b1acc89d74422ddf2af74d114",
      "parents": [
        "7f6fd5db2dbc28d475d67f9a6b041fefe1d6f7c8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Fri Sep 09 13:01:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 13:57:26 2005 -0700"
      },
      "message": "[PATCH] move truncate_inode_pages() into -\u003edelete_inode()\n\nAllow file systems supporting -\u003edelete_inode() to call\ntruncate_inode_pages() on their own.  OCFS2 wants this so it can query the\ncluster before making a final decision on whether to wipe an inode from\ndisk or not.  In some corner cases an inode marked on the local node via\nvoting may not actually get orphaned.  A good example is node death before\nthe transaction moving the inode to the orphan dir commits to the journal.\nWithout this patch, the truncate_inode_pages() call in\ngeneric_delete_inode() would discard valid data for such inodes.\n\nDuring earlier discussion in the 2.6.13 merge plan thread, Christoph\nHellwig indicated that other file systems might also find this useful.\n\nIMHO, the best solution would be to just allow -\u003edrop_inode() to do the\ncluster query but it seems that would require a substantial reworking of\nthat section of the code.  Assuming it is safe to call write_inode_now() in\nocfs2_delete_inode() for those inodes which won\u0027t actually get wiped, this\nsolution should get us by for now.\n\nTrivial testing of this patch (and a related OCFS2 update) has shown this\nto avoid the corruption I\u0027m seeing.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5acd57936c3224fd86e838201e528e0169373e9b",
      "tree": "17ffd8eb4222ac954d9f82c7450f52dfae73fe71",
      "parents": [
        "6c9c0b52b8c6b68b05bb06efd7079a8fc5e9ba60"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Sep 06 15:17:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:31 2005 -0700"
      },
      "message": "[PATCH] fs: remove redundant timespec_equal test in update_atime()\n\nIn update_atime(), timespec_equal() test is done twice in succession and\nthe second is always false.  This patch removes the second test.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "88bd5121d635136e01369141367f315665534b3c",
      "tree": "33de8dda3d77ebf7bf48864c464a36665f66497c",
      "parents": [
        "9a556e89081b0c1c2f83cee915363b15a68a6f2d"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cam.ac.uk",
        "time": "Wed Jul 13 01:10:44 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jul 13 11:25:24 2005 -0700"
      },
      "message": "[PATCH] Fix soft lockup due to NTFS: VFS part and explanation\n\nSomething has changed in the core kernel such that we now get concurrent\ninode write outs, one e.g via pdflush and one via sys_sync or whatever.\nThis causes a nasty deadlock in ntfs.  The only clean solution\nunfortunately requires a minor vfs api extension.\n\nFirst the deadlock analysis:\n\nPrerequisive knowledge: NTFS has a file $MFT (inode 0) loaded at mount\ntime.  The NTFS driver uses the page cache for storing the file contents as\nusual.  More interestingly this file contains the table of on-disk inodes\nas a sequence of MFT_RECORDs.  Thus NTFS driver accesses the on-disk inodes\nby accessing the MFT_RECORDs in the page cache pages of the loaded inode\n$MFT.\n\nThe situation: VFS inode X on a mounted ntfs volume is dirty.  For same\ninode X, the ntfs_inode is dirty and thus corresponding on-disk inode,\nwhich is as explained above in a dirty PAGE_CACHE_PAGE belonging to the\ntable of inodes ($MFT, inode 0).\n\nWhat happens:\n\nProcess 1: sys_sync()/umount()/whatever...  calls __sync_single_inode() for\n$MFT -\u003e do_writepages() -\u003e write_page for the dirty page containing the\non-disk inode X, the page is now locked -\u003e ntfs_write_mst_block() which\nclears PageUptodate() on the page to prevent anyone else getting hold of it\nwhilst it does the write out (this is necessary as the on-disk inode needs\n\"fixups\" applied before the write to disk which are removed again after the\nwrite and PageUptodate is then set again).  It then analyses the page\nlooking for dirty on-disk inodes and when it finds one it calls\nntfs_may_write_mft_record() to see if it is safe to write this on-disk\ninode.  This then calls ilookup5() to check if the corresponding VFS inode\nis in icache().  This in turn calls ifind() which waits on the inode lock\nvia wait_on_inode whilst holding the global inode_lock.\n\nProcess 2: pdflush results in a call to __sync_single_inode for the same\nVFS inode X on the ntfs volume.  This locks the inode (I_LOCK) then calls\nwrite-inode -\u003e ntfs_write_inode -\u003e map_mft_record() -\u003e read_cache_page() of\nthe page (in page cache of table of inodes $MFT, inode 0) containing the\non-disk inode.  This page has PageUptodate() clear because of Process 1\n(see above) so read_cache_page() blocks when tries to take the page lock\nfor the page so it can call ntfs_read_page().\n\nThus Process 1 is holding the page lock on the page containing the on-disk\ninode X and it is waiting on the inode X to be unlocked in ifind() so it\ncan write the page out and then unlock the page.\n\nAnd Process 2 is holding the inode lock on inode X and is waiting for the\npage to be unlocked so it can call ntfs_readpage() or discover that\nProcess 1 set PageUptodate() again and use the page.\n\nThus we have a deadlock due to ifind() waiting on the inode lock.\n\nThe only sensible solution: NTFS does not care whether the VFS inode is\nlocked or not when it calls ilookup5() (it doesn\u0027t use the VFS inode at\nall, it just uses it to find the corresponding ntfs_inode which is of\ncourse attached to the VFS inode (both are one single struct); and it uses\nthe ntfs_inode which is subject to its own locking so I_LOCK is irrelevant)\nhence we want a modified ilookup5_nowait() which is the same as ilookup5()\nbut it does not wait on the inode lock.\n\nWithout such functionality I would have to keep my own ntfs_inode cache in\nthe NTFS driver just so I can find ntfs_inodes independent of their VFS\ninodes which would be slow, memory and cpu cycle wasting, and incredibly\nstupid given the icache already exists in the VFS.\n\nBelow is a patch that does the ilookup5_nowait() implementation in\nfs/inode.c and exports it.\n\nilookup5_nowait.diff:\n\nIntroduce ilookup5_nowait() which is basically the same as ilookup5() but\nit does not wait on the inode\u0027s lock (i.e. it omits the wait_on_inode()\ndone in ifind()).\n\nThis is needed to avoid a nasty deadlock in NTFS.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0eeca28300df110bd6ed54b31193c83b87921443",
      "tree": "7db42d8a18d80eca538f5b7d25e0532b8fa38b85",
      "parents": [
        "bd4c625c061c2a38568d0add3478f59172455159"
      ],
      "author": {
        "name": "Robert Love",
        "email": "rml@novell.com",
        "time": "Tue Jul 12 17:06:03 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 20:38:38 2005 -0700"
      },
      "message": "[PATCH] inotify\n\ninotify is intended to correct the deficiencies of dnotify, particularly\nits inability to scale and its terrible user interface:\n\n        * dnotify requires the opening of one fd per each directory\n          that you intend to watch. This quickly results in too many\n          open files and pins removable media, preventing unmount.\n        * dnotify is directory-based. You only learn about changes to\n          directories. Sure, a change to a file in a directory affects\n          the directory, but you are then forced to keep a cache of\n          stat structures.\n        * dnotify\u0027s interface to user-space is awful.  Signals?\n\ninotify provides a more usable, simple, powerful solution to file change\nnotification:\n\n        * inotify\u0027s interface is a system call that returns a fd, not SIGIO.\n\t  You get a single fd, which is select()-able.\n        * inotify has an event that says \"the filesystem that the item\n          you were watching is on was unmounted.\"\n        * inotify can watch directories or files.\n\nInotify is currently used by Beagle (a desktop search infrastructure),\nGamin (a FAM replacement), and other projects.\n\nSee Documentation/filesystems/inotify.txt.\n\nSigned-off-by: Robert Love \u003crml@novell.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4120db47198d21d8cd3b2cdbbe1ea6118a50bcd4",
      "tree": "b4e0b69dbf3d2da69aa49423227a1da6036e9566",
      "parents": [
        "168a9fd6a1bf91041adf9909f6c72cf747f0ca8c"
      ],
      "author": {
        "name": "Artem B. Bityuckiy",
        "email": "dedekind@infradead.org",
        "time": "Tue Jul 12 13:58:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:00:59 2005 -0700"
      },
      "message": "[PATCH] bugfix: two read_inode() calls without clear_inode() call between\n\nBug symptoms\n~~~~~~~~~~~~\nFor the same inode VFS calls read_inode() twice and doesn\u0027t call\nclear_inode() between the two read_inode() invocations.\n\nBug description\n~~~~~~~~~~~~~~~\nSuppose we have an inode which has zero reference count but is still in\nthe inode cache. Suppose kswapd invokes shrink_icache_memory() to free\nsome RAM. In prune_icache() inodes are removed from i_hash. prune_icache\n() is then going to call clear_inode(), but drops the inode_lock\nspinlock before this. If in this moment another task calls iget() for an\ninode which was just removed from i_hash by prune_icache(), then iget()\ninvokes read_inode() for this inode, because it is *already removed*\nfrom i_hash.\n\nThe end result is: we call iget(#N) then iput(#N); inode #N has zero\ni_count now and is in the inode cache; kswapd starts. kswapd removes the\ninode #N from i_hash ans is preempted; we call iget(#N) again;\nread_inode() is invoked as the result; but we expect clear_inode()\nbefore.\n\nFix\n~~~~~~~\nTo fix the bug I remove inodes from i_hash later, when clear_inode() is\nactually called. I remove them from i_hash under spinlock protection.\nSince the i_state is set to I_FREEING, it is safe to do this. The others\nwill sleep waiting for the inode state change.\n\nI also postpone removing inodes from i_sb_list. It is not compulsory to\ndo so but I do it for readability reasons. Inodes are added/removed to\nthe lists together everywhere in the code and there is no point to\nchange this rule. This is harmless because the only user of i_sb_list\nwhich somehow may interfere with me (invalidate_list()) is excluded by\nthe iprune_sem mutex.\n\nThe same race is possible in invalidate_list() so I do the same for it.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "168a9fd6a1bf91041adf9909f6c72cf747f0ca8c",
      "tree": "65b4dc843f34f0837b10f4fbbc1763f5aae87b7b",
      "parents": [
        "3b6bfcdb116f2cc2cab921fcac6d39d4022952d2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Tue Jul 12 13:58:10 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jul 12 16:00:59 2005 -0700"
      },
      "message": "[PATCH] __wait_on_freeing_inode fix\n\nThis patch fixes queer behavior in __wait_on_freeing_inode().\n\nIf I_LOCK was not set it called yield(), effectively busy waiting for the\nremoval of the inode from the hash.  This change was introduced within\n\"[PATCH] eliminate inode waitqueue hashtable\" Changeset 1.1938.166.16 last\noctober by wli.\n\nThe solution is to restore the old behavior, of unconditionally waiting on\nthe waitqueue.  It doesn\u0027t matter if I_LOCK is not set initally, the task\nwill go to sleep, and wake up when wake_up_inode() is called from\ngeneric_delete_inode() after removing the inode from the hash chain.\n\nComment is also updated to better reflect current behavior.\n\nThis condition is very hard to trigger normally (simultaneous clear_inode()\nwith iget()) so probably only heavy stress testing can reveal any change of\nbehavior.\n\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cb2c0233755429037462e16ea0d5497a0092738c",
      "tree": "49c5d19090986c71b59dd2fb4c57b1e1ae33062d",
      "parents": [
        "ca3f5a95b7d04eef0f88464f8d3299c1c01e8e13"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Thu Jul 07 17:56:03 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jul 07 18:23:35 2005 -0700"
      },
      "message": "[PATCH] export generic_drop_inode() to modules\n\nOCFS2 wants to mark an inode which has been orphaned by another node so\nthat during final iput it takes the correct path through the VFS and can\npass through the OCFS2 delete_inode callback.  Since i_nlink can get out of\ndate with other nodes, the best way I see to accomplish this is by clearing\ni_nlink on those inodes at drop_inode time.  Other than this small amount\nof work, nothing different needs to happen, so I think it would be cleanest\nto be able to just call generic_drop_inode at the end of the OCFS2\ndrop_inode callback.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "991114c6fa6a21d1fa4d544abe78592352860c82",
      "tree": "cc81f871756a70a3312552409ee5cacd6625aa1d",
      "parents": [
        "f972be33ce6a08b5f096ba013c7459a3a82f5f39"
      ],
      "author": {
        "name": "Alexander Viro",
        "email": "aviro@redhat.com",
        "time": "Thu Jun 23 00:09:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:17 2005 -0700"
      },
      "message": "[PATCH] fix for prune_icache()/forced final iput() races\n\nBased on analysis and a patch from Russ Weight \u003crweight@us.ibm.com\u003e\n\nThere is a race condition that can occur if an inode is allocated and then\nreleased (using iput) during the -\u003efill_super functions.  The race\ncondition is between kswapd and mount.\n\nFor most filesystems this can only happen in an error path when kswapd is\nrunning concurrently.  For isofs, however, the error can occur in a more\ncommon code path (which is how the bug was found).\n\nThe logic here is \"we want final iput() to free inode *now* instead of\nletting it sit in cache if fs is going down or had not quite come up\".  The\nproblem is with kswapd seeing such inodes in the middle of being killed and\nhappily taking over.\n\nThe clean solution would be to tell kswapd to leave those inodes alone and\nlet our final iput deal with them.  I.e.  add a new flag\n(I_FORCED_FREEING), set it before write_inode_now() there and make\nprune_icache() leave those alone.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2ef41634def0fcb0def3e3c90220c651ca478cb3",
      "tree": "86fb9c439ad5043d38d69588975e84bd8b565619",
      "parents": [
        "91bb52416854dfd581efe6e2a0aca8dc655f043e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu May 05 16:15:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:44 2005 -0700"
      },
      "message": "[PATCH] remove do_sync parameter from __invalidate_device\n\nThe only caller that ever sets it can call fsync_bdev itself easily.  Also\nupdate some comments.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003cviro@parcelfarce.linux.theplanet.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e422fd2c965ad1b0e4eadaabd0adb77e8a93e74e",
      "tree": "a29a10773141fb0da142abb45ac618f2913f981d",
      "parents": [
        "f48d9663f19afb88ac0e45b825da523180f1f9c0"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@suse.de",
        "time": "Thu May 05 16:15:04 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:30 2005 -0700"
      },
      "message": "[PATCH] avoid -ENOMEM due reclaimable slab caches\n\nThis makes sure that reclaimable buffer headers and reclaimable inodes\nare accounted properly during the overcommit checks.\n\nSigned-off-by: Andrea Arcangeli \u003candrea@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
