)]}'
{
  "log": [
    {
      "commit": "d0185c0882d76b8126d4a099c7ac82b3b216d103",
      "tree": "b43845a2f9872807466f206ea5fdca3c16c776fb",
      "parents": [
        "94715da3633d8abd63376b47c7120df59a69055e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 29 07:42:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 29 07:42:57 2008 -0700"
      },
      "message": "Fix NULL pointer dereference in proc_sys_compare\n\nThe VFS interface for the \u0027d_compare()\u0027 is a bit special (read: \u0027odd\u0027),\nbecause it really just essentially replaces a memcmp().  The filesystem\nis supposed to just compare the two names with whatever case-independent\nor other function.\n\nAnd when I say \u0027is supposed to\u0027, I obviously mean that \u0027procfs does odd\nthings, and actually looks at the dentry that we don\u0027t even pass down,\nrather than just the name\u0027.  Which results in problems, because we\nactually call d_compare before we have even verified that the dentry is\nstill hashed at all.\n\nAnd that causes a problm since the inode that procfs looks at may have\nbeen free\u0027d and the d_inode pointer is NULL.  procfs just assumes that\nall dentries are positive, since procfs itself never generates a\nnegative one.  But memory pressure will still result in the dentry\ngetting torn down, and as it is removed by RCU, it still remains visible\non some lists - and to d_compare.\n\nIf the filesystem just did a name comparison, we wouldn\u0027t care.  And we\ncould just fix procfs to know about negative dentries too.  But rather\nthan have the low-level filesystems know about internal VFS details,\njust move the check for a unhashed dentry up a bit, so that we will only\ncall d_compare on dentries that are still active.\n\nThe actual oops this caused didn\u0027t look like a NULL pointer dereference\nbecause procfs did a \u0027container_of(inode, struct proc_inode, vfs_inode)\u0027\nto get at its internal proc_inode information from the inode pointer,\nand accessed a field below the inode. So the oops would look something\nlike\n\n\tBUG: unable to handle kernel paging request at fffffffffffffff0\n\tIP: [\u003cffffffff802bc6c6\u003e] proc_sys_compare+0x36/0x50\n\nand was seen on both x86-64 (Alexey Dobriyan and Hugh Dickins) and\nppc64 (Hugh Dickins).\n\nReported-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-of-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e45b590b976465c258f3e2a6cc84573fc19e16d3",
      "tree": "54b795a1acd985b9bcc5adbe057706209a2612d3",
      "parents": [
        "2d8a10cd1760e7ecc07a21e409485947c68a3291"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Aug 07 23:49:07 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 25 01:18:05 2008 -0400"
      },
      "message": "[PATCH] change d_add_ci argument ordering\n\nAs pointed out during review d_add_ci argument order should match d_add,\nso switch the dentry and inode arguments.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9403540c0653122ca34884a180439ddbfcbcb524",
      "tree": "40b5fb192900c61a1c91be6ae8ea7432b61f18aa",
      "parents": [
        "6a178100abf01282eb697ab62b6086b2886dfc00"
      ],
      "author": {
        "name": "Barry Naujok",
        "email": "bnaujok@sgi.com",
        "time": "Wed May 21 16:50:46 2008 +1000"
      },
      "committer": {
        "name": "Niv Sardi",
        "email": "xaiki@debian.org",
        "time": "Mon Jul 28 16:58:39 2008 +1000"
      },
      "message": "dcache: Add case-insensitive support d_ci_add() routine\n\nThis add a dcache entry to the dcache for lookup, but changing the name\nthat is associated with the entry rather than the one passed in to the\nlookup routine.\n\nFirst, it sees if the case-exact match already exists in the dcache and\nuses it if one exists. Otherwise, it allocates a new node with the new\nname and splices it into the dcache.\n\nOriginal code from ntfs_lookup in fs/ntfs/namei.c by Anton Altaparmakov.\n\nSigned-off-by: Barry Naujok \u003cbnaujok@sgi.com\u003e\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "f3c6ba986ab4527b6dfacf9f3b9e40f72466a8b2",
      "tree": "f240cc15f23afba6f987e6e61c41a04c30537040",
      "parents": [
        "a76eef9573c93f8f324ebacfd090a3e319a64d59"
      ],
      "author": {
        "name": "Kentaro Makita",
        "email": "k-makita@np.css.fujitsu.com",
        "time": "Fri Jul 25 19:44:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:02 2008 -0700"
      },
      "message": "vfs: add cond_resched_lock while scanning dentry LRU lists\n\nAdd cond_resched_lock(\u0026dcache_lock) while scanning LRU lists on\nsuperblocks in __shrink_dcache_sb()\n\nSigned-off-by: Kentaro Makita \u003ck-makita@np.css.fujitsu.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": "da3bbdd4632c0171406b2677e31494afa5bde2f8",
      "tree": "6a1947b2a32041ef0d14044e659ba7d546d55483",
      "parents": [
        "3c82d0ce2c4f642b2f24ef98707a030543b06b90"
      ],
      "author": {
        "name": "Kentaro Makita",
        "email": "k-makita@np.css.fujitsu.com",
        "time": "Wed Jul 23 21:27:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:15 2008 -0700"
      },
      "message": "fix soft lock up at NFS mount via per-SB LRU-list of unused dentries\n\n[Summary]\n\n Split LRU-list of unused dentries to one per superblock to avoid soft\n lock up during NFS mounts and remounting of any filesystem.\n\n Previously I posted here:\n http://lkml.org/lkml/2008/3/5/590\n\n[Descriptions]\n\n- background\n\n  dentry_unused is a list of dentries which are not referenced.\n  dentry_unused grows up when references on directories or files are\n  released.  This list can be very long if there is huge free memory.\n\n- the problem\n\n  When shrink_dcache_sb() is called, it scans all dentry_unused linearly\n  under spin_lock(), and if dentry-\u003ed_sb is differnt from given\n  superblock, scan next dentry.  This scan costs very much if there are\n  many entries, and very ineffective if there are many superblocks.\n\n  IOW, When we need to shrink unused dentries on one dentry, but scans\n  unused dentries on all superblocks in the system.  For example, we scan\n  500 dentries to unmount a filesystem, but scans 1,000,000 or more unused\n  dentries on other superblocks.\n\n  In our case , At mounting NFS*, shrink_dcache_sb() is called to shrink\n  unused dentries on NFS, but scans 100,000,000 unused dentries on\n  superblocks in the system such as local ext3 filesystems.  I hear NFS\n  mounting took 1 min on some system in use.\n\n* : NFS uses virtual filesystem in rpc layer, so NFS is affected by\n  this problem.\n\n  100,000,000 is possible number on large systems.\n\n  Per-superblock LRU of unused dentried can reduce the cost in\n  reasonable manner.\n\n- How to fix\n\n  I found this problem is solved by David Chinner\u0027s \"Per-superblock\n  unused dentry LRU lists V3\"(1), so I rebase it and add some fix to\n  reclaim with fairness, which is in Andrew Morton\u0027s comments(2).\n\n  1) http://lkml.org/lkml/2006/5/25/318\n  2) http://lkml.org/lkml/2006/5/25/320\n\n  Split LRU-list of unused dentries to each superblocks.  Then, NFS\n  mounting will check dentries under a superblock instead of all.  But\n  this spliting will break LRU of dentry-unused.  So, I\u0027ve attempted to\n  make reclaim unused dentrins with fairness by calculate number of\n  dentries to scan on this sb based on following way\n\n  number of dentries to scan on this sb \u003d\n  count * (number of dentries on this sb / number of dentries in the machine)\n\n- ToDo\n - I have to measuring performance number and do stress tests.\n\n - When unmount occurs during prune_dcache(), scanning on same\n  superblock, It is unable to reach next superblock because it is gone\n  away.  We restart scannig superblock from first one, it causes\n  unfairness of reclaim unused dentries on first superblock.  But I think\n  this happens very rarely.\n\n- Test Results\n\n  Result on 6GB boxes with excessive unused dentries.\n\nWithout patch:\n\n$ cat /proc/sys/fs/dentry-state\n10181835        10180203        45      0       0       0\n# mount -t nfs 10.124.60.70:/work/kernel-src nfs\nreal    0m1.830s\nuser    0m0.001s\nsys     0m1.653s\n\n With this patch:\n$ cat /proc/sys/fs/dentry-state\n10236610        10234751        45      0       0       0\n# mount -t nfs 10.124.60.70:/work/kernel-src nfs\nreal    0m0.106s\nuser    0m0.002s\nsys     0m0.032s\n\n[akpm@linux-foundation.org: fix comments]\nSigned-off-by: Kentaro Makita \u003ck-makita@np.css.fujitsu.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdd16d0265c9234228fd37fbbad844d7e894b278",
      "tree": "ba9ec59f49465c1a31143be0927106ef16de12df",
      "parents": [
        "31f3e0b3a18c6d48196c40a82a3b8c01f4ff6b23"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jun 23 18:11:53 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 23 13:07:00 2008 -0400"
      },
      "message": "[patch 2/3] vfs: dcache cleanups\n\nComment from Al Viro: add prepend_name() wrapper.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "31f3e0b3a18c6d48196c40a82a3b8c01f4ff6b23",
      "tree": "3ff97fb1fbe50a3e37e4a18d68b4720d509e99c5",
      "parents": [
        "be285c712bbbe5db43e503782fbef2bfeaa345f9"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Jun 23 18:11:52 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 23 13:06:36 2008 -0400"
      },
      "message": "[patch 1/3] vfs: dcache sparse fixes\n\nFix the following sparse warnings:\n\nfs/dcache.c:2183:19: warning: symbol \u0027filp_cachep\u0027 was not declared. Should it be static?\nfs/dcache.c:115:3: warning: context imbalance in \u0027dentry_iput\u0027 - unexpected unlock\nfs/dcache.c:188:2: warning: context imbalance in \u0027dput\u0027 - different lock contexts for basic block\nfs/dcache.c:400:2: warning: context imbalance in \u0027prune_one_dentry\u0027 - different lock contexts for basic block\nfs/dcache.c:431:22: warning: context imbalance in \u0027prune_dcache\u0027 - different lock contexts for basic block\nfs/dcache.c:563:2: warning: context imbalance in \u0027shrink_dcache_sb\u0027 - different lock contexts for basic block\nfs/dcache.c:1385:6: warning: context imbalance in \u0027d_delete\u0027 - wrong count at exit\nfs/dcache.c:1636:2: warning: context imbalance in \u0027__d_unalias\u0027 - unexpected unlock\nfs/dcache.c:1735:2: warning: context imbalance in \u0027d_materialise_unique\u0027 - different lock contexts for basic block\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReviewed-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be285c712bbbe5db43e503782fbef2bfeaa345f9",
      "tree": "3143d1d4c49c68ebb59815d03a5c79e9e3290a91",
      "parents": [
        "f9f48ec72bfc9489a30bc6ddbfcf27d86a8bc651"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Mon Jun 16 13:28:07 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 23 13:06:13 2008 -0400"
      },
      "message": "[patch 3/3] vfs: make d_path() consistent across mount operations\n\nThe path that __d_path() computes can become slightly inconsistent when it\nraces with mount operations: it grabs the vfsmount_lock when traversing mount\npoints but immediately drops it again, only to re-grab it when it reaches the\nnext mount point.  The result is that the filename computed is not always\nconsisent, and the file may never have had that name. (This is unlikely, but\nstill possible.)\n\nFix this by grabbing the vfsmount_lock for the whole duration of\n__d_path().\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: John Johansen \u003cjjohansen@suse.de\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "20d4fdc1a788e4ca0aaf2422772ba668e7e10839",
      "tree": "cd75fce48616b364ddb968d2085205fbc9f4aca1",
      "parents": [
        "c8e7f449b225ee6c87454ac069f0a041035c5140"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Mon Jun 09 16:40:36 2008 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 23 11:52:30 2008 -0400"
      },
      "message": "[patch 2/4] fs: make struct file arg to d_path const\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d1bc60138977d9c79471b344a64f2df13b2ccef",
      "tree": "84ed2e1920a1a88ae84515bd9d90240faed5805c",
      "parents": [
        "6092d048183b76bfa3f84b32f8158dd8d10bd811"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Mar 27 13:06:21 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 00:04:38 2008 -0400"
      },
      "message": "[patch 2/7] vfs: mountinfo: add seq_file_root()\n\nAdd a new function:\n\n  seq_file_root()\n\nThis is similar to seq_path(), but calculates the path relative to the\ngiven root, instead of current-\u003efs-\u003eroot.  If the path was unreachable\nfrom root, then modify the root parameter to reflect this.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6092d048183b76bfa3f84b32f8158dd8d10bd811",
      "tree": "2d38af32961eb52b36daca2f29ce69e80f6e7283",
      "parents": [
        "934b25c597c0e98304a7eaec198a87e4633a42bb"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Thu Mar 27 13:06:20 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 23 00:04:32 2008 -0400"
      },
      "message": "[patch 1/7] vfs: mountinfo: add dentry_path()\n\n[mszeredi@suse.cz] split big patch into managable chunks\n\nAdd the following functions:\n\n  dentry_path()\n  seq_dentry()\n\nThese are similar to d_path() and seq_path().  But instead of\ncalculating the path within a mount namespace, they calculate the path\nfrom the root of the filesystem to a given dentry, ignoring mounts\ncompletely.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4a0962abd187df29b7d1378b2f372a55667d54c0",
      "tree": "dfd7e50cb1267e55b3082f6b0a1d612b88058baa",
      "parents": [
        "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Thu Feb 14 19:38:45 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "dentries: Extract common code to remove dentry from lru\n\nExtract the common code to remove a dentry from the lru into a new function\ndentry_lru_remove().\n\nTwo call sites used list_del() instead of list_del_init().  AFAIK the\nperformance of both is the same.  dentry_lru_remove() does a list_del_init().\n\nAs a result dentry-\u003ed_lru is now always empty when a dentry is freed.\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": "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9",
      "tree": "65c91f6911b34c32e517938289621ce0e7baeaf3",
      "parents": [
        "c32c2f63a9d6c953aaf168c0b2551da9734f76d2"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "d_path: Make d_path() use a struct path\n\nd_path() is used on a \u003cdentry,vfsmount\u003e pair.  Lets use a struct path to\nreflect this.\n\n[akpm@linux-foundation.org: fix build in mm/memory.c]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@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": "a03a8a709a0c34b61b7aea1d54a0473a6b941fdb",
      "tree": "726beca09574c6599ceece7c5cb82c7efed33f18",
      "parents": [
        "329c97f0af41bd580237b8fad0f3741849ee4e13"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "d_path: kerneldoc cleanup\n\nMove and update d_path() kernel API documentation.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\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": "329c97f0af41bd580237b8fad0f3741849ee4e13",
      "tree": "e42190ebad3a19054ea6d86faaa82a68b44a4421",
      "parents": [
        "ac748a09fc873915254ed69fe83f1a95436ee30a"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "One less parameter to __d_path\n\nAll callers to __d_path pass the dentry and vfsmount of a struct path to\n__d_path.  Pass the struct path directly, instead.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\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": "6ac08c39a16f72c2d3e845cb6849a1392fa03e80",
      "tree": "d7603571e9ab3ea4b57b7901211320e48d0c5ed8",
      "parents": [
        "5dd784d04924be5d8bc066aded0ec3274b20e612"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:38 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Use struct path in fs_struct\n\n* Use struct path in fs_struct.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\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": "0d71bd5993b630a989d15adc2562a9ffe41cd26d",
      "tree": "cdd522e454cc37c92befddf62452f08f24ef6302",
      "parents": [
        "d599e36a9ea85432587f4550acc113cd7549d12a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Feb 06 01:37:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:07 2008 -0800"
      },
      "message": "inotify: remove debug code\n\nThe inotify debugging code is supposed to verify that the\nDCACHE_INOTIFY_PARENT_WATCHED scalability optimisation does not result in\nnotifications getting lost nor extra needless locking generated.\n\nUnfortunately there are also some races in the debugging code.  And it isn\u0027t\nvery good at finding problems anyway.  So remove it for now.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Robert Love \u003crlove@google.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: Yan Zheng \u003cyanzheng@21cn.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8462caa915d4d12846db7aae2557b6db7c054d5",
      "tree": "4bb2e4b66e5d0d6ee9e3059acd94212cdef6443a",
      "parents": [
        "07a154b2bb9b528a39ddc777399482c1fa27fdb8"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed Feb 06 01:37:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:04 2008 -0800"
      },
      "message": "fs: use hlist_unhashed\n\nUse hlist_unhashed() instead of opencoded equivalent.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "321bcf92163038e2b96fd3bf9bc29f755c81d9ef",
      "tree": "68a1e6b659cac5ffdadb4b7412fa5b7a4244541b",
      "parents": [
        "b68680e4731abbd78863063aaa0dca2a6d8cc723"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun Oct 21 16:41:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Oct 22 08:13:18 2007 -0700"
      },
      "message": "dcache: don\u0027t expose uninitialized memory in /proc/\u003cpid\u003e/fd/\u003cfd\u003e\n\nWell, it\u0027s not especially important that target-\u003ed_iname get the contents\nof dentry-\u003ed_iname, but it\u0027s important that it get initialized with\n*something*, otherwise we\u0027re just exposing some random piece of memory to\nanyone who reads the link at /proc/\u003cpid\u003e/fd/\u003cfd\u003e for the deleted file, when\nit\u0027s still held open by someone.\n\nI\u0027ve run a test program that copies a short (\u003c36 character) name ontop of a\nlong (\u003e\u003d36 character) name and see that the first time I run it, without\nthis patch, I get unpredicatable results out of /proc/\u003cpid\u003e/fd/\u003cfd\u003e.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74c3cbe33bc077ac1159cadfea608b501e100344",
      "tree": "4c4023caa4e15d19780255fa5880df3d36eb292c",
      "parents": [
        "455434d450a358ac5bcf3fc58f8913d13c544622"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 22 08:04:18 2007 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 21 02:37:45 2007 -0400"
      },
      "message": "[PATCH] audit: watching subtrees\n\nNew kind of audit rule predicates: \"object is visible in given subtree\".\nThe part that can be sanely implemented, that is.  Limitations:\n\t* if you have hardlink from outside of tree, you\u0027d better watch\nit too (or just watch the object itself, obviously)\n\t* if you mount something under a watched tree, tell audit\nthat new chunk should be added to watched subtrees\n\t* if you umount something in a watched tree and it\u0027s still mounted\nelsewhere, you will get matches on events happening there.  New command\ntells audit to recalculate the trees, trimming such sources of false\npositives.\n\nNote that it\u0027s _not_ about path - if something mounted in several places\n(multiple mount, bindings, different namespaces, etc.), the match does\n_not_ depend on which one we are using for access.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f77e34987070a20e4b3e06b868cb39eb73670467",
      "tree": "2f959c6ac61e6183eafed66be84ed849f60cb29b",
      "parents": [
        "db8906da596708865a2ead6a8c2af090255ca549"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Tue Oct 16 23:30:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:00 2007 -0700"
      },
      "message": "vfs: use the predefined d_unhashed inline function instead\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": "37c42524d6090644206ae6d310d7e830bd3ccb47",
      "tree": "53dcaad31bb6b74d1d37491b56450a675490b88b",
      "parents": [
        "44a2db43eb715b54618bf01520cc5d46376cdbe2"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Oct 16 23:29:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:57 2007 -0700"
      },
      "message": "shrink_dcache_sb speedup\n\nThis patch makes shrink_dcache_sb consistent with dentry pruning policy.\n\nOn the first pass we iterate over dentry unused list and prepare some\ndentries for removal.\n\nHowever, since the existing code moves evicted dentries to the beginning of\nthe LRU it can happen that fresh dentries from other superblocks will be\ninserted *before* our dentries.\n\nThis can result in significant slowdown of shrink_dcache_sb().  Moreover,\nfor virtual filesystems like unionfs which can call dput() during dentries\nkill existing code results in O(n^2) complexity.\n\nWe observed 2 minutes shrink_dcache_sb() with only 35000 dentries.\n\nTo avoid this effects we propose to isolate sb dentries at the end\nof LRU list.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nSigned-off-by: Andrey Mirkin \u003camirkin@openvz.org\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": "bc154b1efb7f8430ea9faabd5953ebc411f8ead5",
      "tree": "b407a8a2b9b228fd594fa439260b673e2b3901f4",
      "parents": [
        "f20fda486164264e0c9a64f3256b3238d0dc78d7"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@fieldses.org",
        "time": "Tue Oct 16 23:29:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:57 2007 -0700"
      },
      "message": "dcache: trivial comment fix\n\nAs it stands this comment is confusing, and not quite grammatical.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85864e103850962389d77467391bc3da021d070f",
      "tree": "b671ff5e8c27d3856290faedcd365d5bebacabd1",
      "parents": [
        "1a159dd229e6a70e3ffd3f785cb51fa61b232279"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 16 23:27:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:52 2007 -0700"
      },
      "message": "clean out unused code in dentry pruning\n\nIt looks like in the end all pruners want parents removed.\n\nSo remove unused code and function arguments.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "e12ba74d8ff3e2f73a583500d7095e406df4d093",
      "tree": "a0d3385b65f0b3e1e00b0bbf11b75e7538a93edb",
      "parents": [
        "c361be55b3128474aa66d31092db330b07539103"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Group short-lived and reclaimable kernel allocations\n\nThis patch marks a number of allocations that are either short-lived such as\nnetwork buffers or are reclaimable such as inode allocations.  When something\nlike updatedb is called, long-lived and unmovable kernel allocations tend to\nbe spread throughout the address space which increases fragmentation.\n\nThis patch groups these allocations together as much as possible by adding a\nnew MIGRATE_TYPE.  The MIGRATE_RECLAIMABLE type is for allocations that can be\nreclaimed on demand, but not moved.  i.e.  they can be migrated by deleting\nthem and re-reading the information from elsewhere.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c23fbb6bcb3eb9cdf39a103edadf57bde8ce309c",
      "tree": "d79ab2278774de2c1a8061aa948ed068902e87b4",
      "parents": [
        "2793274298c4423d79701e9a8190f2940bf3c785"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue May 08 00:26:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "VFS: delay the dentry name generation on sockets and pipes\n\n1) Introduces a new method in \u0027struct dentry_operations\u0027.  This method\n   called d_dname() might be called from d_path() to build a pathname for\n   special filesystems.  It is called without locks.\n\n   Future patches (if we succeed in having one common dentry for all\n   pipes/sockets) may need to change prototype of this method, but we now\n   use : char *d_dname(struct dentry *dentry, char *buffer, int buflen);\n\n2) Adds a dynamic_dname() helper function that eases d_dname() implementations\n\n3) Defines d_dname method for sockets : No more sprintf() at socket\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\n4) Defines d_dname method for pipes : No more sprintf() at pipe\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\nA benchmark consisting of 1.000.000 calls to pipe()/close()/close() gives a\n*nice* speedup on my Pentium(M) 1.6 Ghz :\n\n3.090 s instead of 3.450 s\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "24c32d733dd44dbc5b9dcd0b8de58e16fdbeac76",
      "tree": "ecec100dc2c779d09669d08681339ded6bf5409a",
      "parents": [
        "d52b908646b88cb1952ab8c9b2d4423908a23f11"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue May 08 00:23:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "mm: shrink parent dentries when shrinking slab\n\nTeach the dentry slab shrinker to aggressively shrink parent dentries when\nshrinking the dentry cache.\n\nThis is done to attempt to improve the situation where the dentry slab cache\ngets a lot of internal fragmentation due to pages containing directory\ndentries.  It is expected that this change will cause some of those dentries\nto be reaped earlier, and with less scanning.\n\nNeeds careful testing.\n\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d52b908646b88cb1952ab8c9b2d4423908a23f11",
      "tree": "0c60c3bdbffaf87c7d9cff30e5e598ce31d4789b",
      "parents": [
        "97dc32cdb1b53832801159d5f634b41aad9d0a23"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 08 00:23:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "fix quadratic behavior of shrink_dcache_parent()\n\nThe time shrink_dcache_parent() takes, grows quadratically with the depth\nof the tree under \u0027parent\u0027.  This starts to get noticable at about 10,000.\n\nThese kinds of depths don\u0027t occur normally, and filesystems which invoke\nshrink_dcache_parent() via d_invalidate() seem to have other depth\ndependent timings, so it\u0027s not even easy to expose this problem.\n\nHowever with FUSE it\u0027s easy to create a deep tree and d_invalidate()\nwill also get called.  This can make a syscall hang for a very long\ntime.\n\nThis is the original discovery of the problem by Russ Cox:\n\n  http://article.gmane.org/gmane.comp.file-systems.fuse.devel/3826\n\nThe following patch fixes the quadratic behavior, by optionally allowing\nprune_dcache() to prune ancestors of a dentry in one go, instead of doing\nit one at a time.\n\nCommon code in dput() and prune_one_dentry() is extracted into a new helper\nfunction d_kill().\n\nshrink_dcache_parent() as well as shrink_dcache_sb() are converted to use\nthe ancestry-pruner option.  Only for shrink_dcache_memory() is this\nbehavior not desirable, so it keeps using the old algorithm.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\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": "0a31bd5f2bbb6473ef9d24f0063ca91cfa678b64",
      "tree": "a945e829bf6bf7a93bf844b2ee9f2a3a2fa17c5d",
      "parents": [
        "5af60839909b8e3b28ca7cd7912fa0b23475617f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:55 2007 -0700"
      },
      "message": "KMEM_CACHE(): simplify slab cache creation\n\nThis patch provides a new macro\n\nKMEM_CACHE(\u003cstruct\u003e, \u003cflags\u003e)\n\nto simplify slab creation. KMEM_CACHE creates a slab with the name of the\nstruct, with the size of the struct and with the alignment of the struct.\nAdditional slab flags may be specified if necessary.\n\nExample\n\nstruct test_slab {\n\tint a,b,c;\n\tstruct list_head;\n} __cacheline_aligned_in_smp;\n\ntest_slab_cache \u003d KMEM_CACHE(test_slab, SLAB_PANIC)\n\nwill create a new slab named \"test_slab\" of the size sizeof(struct\ntest_slab) and aligned to the alignment of test slab.  If it fails then we\npanic.\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": "552ce544edfbe9bce79952a8c0f8d65b7f2d16bb",
      "tree": "cf33cebb71695d438bde8cf650161a66ffaae30b",
      "parents": [
        "ec2f9d1331f658433411c58077871e1eef4ee1b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 13 12:08:18 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 13 12:08:18 2007 -0800"
      },
      "message": "Revert \"[PATCH] Fix d_path for lazy unmounts\"\n\nThis reverts commit eb3dfb0cb1f4a44e2d0553f89514ce9f2a9fcaf1.\n\nIt causes some strange Gnome problem with dbus-daemon getting stuck, so\nwe\u0027ll revert it until that problem is understood.\n\nReported by both walt and Greg KH, who both independently git-bisected\nthe problem to this commit.\n\nAndreas is looking at it.\n\nReported-by: walt \u003cwa1ter@myrealbox.com\u003e\nReported-by: Greg KH \u003cgreg@kroah.com\u003e\nAcked-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eb3dfb0cb1f4a44e2d0553f89514ce9f2a9fcaf1",
      "tree": "9b35fa3ac8cb3d6fc4eb74d83d15f0f929f54631",
      "parents": [
        "5c3bd438ccb94f5d5bf5d8711330e038dc8dd21b"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Mon Feb 12 00:51:47 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:27 2007 -0800"
      },
      "message": "[PATCH] Fix d_path for lazy unmounts\n\nHere is a bugfix to d_path.\n\nFirst, when d_path() hits a lazily unmounted mount point, it tries to\nprepend the name of the lazily unmounted dentry to the path name.  It gets\nthis wrong, and also overwrites the slash that separates the name from the\nfollowing pathname component.  This is demonstrated by the attached test\ncase, which prints \"getcwd returned d_path-bugsubdir\" with the bug.  The\ncorrect result would be \"getcwd returned d_path-bug/subdir\".\n\nIt could be argued that the name of the root dentry should not be part of\nthe result of d_path in the first place.  On the other hand, what the\nunconnected namespace was once reachable as may provide some useful hints\nto users, and so that seems okay.\n\nSecond, it isn\u0027t always possible to tell from the __d_path result whether\nthe specified root and rootmnt (i.e., the chroot) was reached: lazy\nunmounts of bind mounts will produce a path that does start with a\nnon-slash so we can tell from that, but other lazy unmounts will produce a\npath that starts with a slash, just like \"ordinary\" paths.\n\nThe attached patch cleans up __d_path() to fix the bug with overlapping\npathname components.  It also adds a @fail_deleted argument, which allows\nto get rid of some of the mess in sys_getcwd().  Grabbing the dcache_lock\ncan then also be moved into __d_path().  The patch also makes sure that\npaths will only start with a slash for paths which are connected to the\nroot and rootmnt.\n\nThe @fail_deleted argument could be added to d_path() as well: this would\nallow callers to recognize deleted files, without having to resort to the\nambiguous check for the \" (deleted)\" string at the end of the pathnames.\nThis is not currently done, but it might be worthwhile.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3423415fbc2e5461605826317da1c8dbbf21f97",
      "tree": "d7e129545515846526d72072322ad405a4b7a41b",
      "parents": [
        "d18de5a2721f84ffd6a5d637915746ed47becc1c"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Dec 06 20:38:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:41 2006 -0800"
      },
      "message": "[PATCH] dcache: avoid RCU for never-hashed dentries\n\nSome dentries don\u0027t need to be globally visible in dentry hashtable.\n(pipes \u0026 sockets)\n\nSuch dentries dont need to wait for a RCU grace period at delete time.\nBeing able to free them permits a better CPU cache use (hot cache)\n\nThis patch combined with (dont insert pipe dentries into dentry_hashtable)\nreduced time of { pipe(p); close(p[0]); close(p[1]);} on my UP machine (1.6\nGHz Pentium-M) from 3.23 us to 2.86 us (But this patch does not depend on\nother patches, only bench results)\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nAcked-by: David Miller \u003cdavem@davemloft.net\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": "f87135762de4328c6f17897e803e6909bc056feb",
      "tree": "bf182df7b7ca8326c7ed3590693ac1e276b24a14",
      "parents": [
        "6eac3f93f5e6b7256fb20b7608d62ec192da12be"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 28 10:38:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:53 2006 -0700"
      },
      "message": "[PATCH] VFS: Fix an error in unused dentry counting\n\nWith Vasily Averin \u003cvvs@sw.ru\u003e\n\nFix an error in unused dentry counting in shrink_dcache_for_umount_subtree()\nin which the count is modified without the dcache_lock held.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Vasily Averin \u003cvvs@sw.ru\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6eac3f93f5e6b7256fb20b7608d62ec192da12be",
      "tree": "a829571b473072fb764e179499a8610789ba284e",
      "parents": [
        "ebed4bfc8da8df5b6b0bc4a5064a949f04683509"
      ],
      "author": {
        "name": "Vasily Averin",
        "email": "vvs@sw.ru",
        "time": "Sat Oct 28 10:38:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:53 2006 -0700"
      },
      "message": "[PATCH] missing unused dentry in prune_dcache()?\n\nOn the the following patch:\nhttp://linux.bkbits.net:8080/linux-2.6/gnupatch@449b144ecSF1rYskg3q-SeR2vf88zg\n\n# ChangeSet\n#   2006/06/22 15:05:57-07:00 neilb@suse.de\n#   [PATCH] Fix dcache race during umount\n\n#   If prune_dcache finds a dentry that it cannot free, it leaves it where it\n#   is (at the tail of the list) and exits, on the assumption that some other\n#   thread will be removing that dentry soon.\n\nHowever as far as I see this comment is not correct: when we cannot take\ns_umount rw_semaphore (for example because it was taken in do_remount) this\ndentry is already extracted from dentry_unused list and we do not add it\ninto the list again.  Therefore dentry will not be found by prune_dcache()\nand shrink_dcache_sb() and will leave in memory very long time until the\npartition will be unmounted.\n\nThe patch adds this dentry into tail of the dentry_unused list.\n\nSigned-off-by: Vasily Averin \u003cvvs@sw.ru\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9eaef27b36a6b716384948da94b8fc5bfba7b712",
      "tree": "ab69cf9c3863bb7ca564574c914e5b6bf8ad3162",
      "parents": [
        "3f7705eab6722ad1a346d748c4aad55755d6c241"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Oct 21 10:24:20 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 21 13:35:06 2006 -0700"
      },
      "message": "[PATCH] VFS: Make d_materialise_unique() enforce directory uniqueness\n\nIf the caller tries to instantiate a directory using an inode that already\nhas a dentry alias, then we attempt to rename the existing dentry instead\nof instantiating a new one.  Fail with an ELOOP error if the rename would\naffect one of our parent directories.\n\nThis behaviour is needed in order to avoid issues such as\n\n  http://bugzilla.kernel.org/show_bug.cgi?id\u003d7178\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\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": "c636ebdb186bf37f98d3839f69293597723edb36",
      "tree": "db1d54d355cd8030bf5d1645ce6bac8842f32690",
      "parents": [
        "6ce315234aefcbc599dea390c15672156ebf9e7b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Oct 11 01:22:19 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:25 2006 -0700"
      },
      "message": "[PATCH] VFS: Destroy the dentries contributed by a superblock on unmounting\n\nThe attached patch destroys all the dentries attached to a superblock in one go\nby:\n\n (1) Destroying the tree rooted at s_root.\n\n (2) Destroying every entry in the anon list, one at a time.\n\n (3) Each entry in the anon list has its subtree consumed from the leaves\n     inwards.\n\nThis reduces the amount of work generic_shutdown_super() does, and avoids\niterating through the dentry_unused list.\n\nNote that locking is almost entirely absent in the shrink_dcache_for_umount*()\nfunctions added by this patch.  This is because:\n\n (1) at the point the filesystem calls generic_shutdown_super(), it is not\n     permitted to further touch the superblock\u0027s set of dentries, and nor may\n     it remove aliases from inodes;\n\n (2) the dcache memory shrinker now skips dentries that are being unmounted;\n     and\n\n (3) the superblock no longer has any external references through which the VFS\n     can reach it.\n\nGiven these points, the only locking we need to do is when we remove dentries\nfrom the unused list and the name hashes, which we do a directory\u0027s worth at a\ntime.\n\nWe also don\u0027t need to guard against reference counts going to zero unexpectedly\nand removing bits of the tree we\u0027re working on as nothing else can call dput().\n\nA cut down version of dentry_iput() has been folded into\nshrink_dcache_for_umount_subtree() function.  Apart from not needing to unlock\nthings, it also doesn\u0027t need to check for inotify watches.\n\nIn this version of the patch, the complaint about a dentry still being in use\nhas been expanded from a single BUG_ON() and now gives much more information.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "21c0d8fdd95024ffa708a938099148b8f1078d46",
      "tree": "e812554e916f1fb7d9410640235fb7954d2a25b7",
      "parents": [
        "44c556000a31e8079cfbb9a42a7edb93ca6b589a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 04 02:16:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 04 07:55:21 2006 -0700"
      },
      "message": "[PATCH] knfsd: close a race-opportunity in d_splice_alias\n\nThere is a possible race in d_splice_alias.  Though __d_find_alias(inode, 1)\nwill only return a dentry with DCACHE_DISCONNECTED set, it is possible for it\nto get cleared before the BUG_ON, and it is is not possible to lock against\nthat.\n\nThere are a couple of problems here.  Firstly, the code doesn\u0027t match the\ncomment.  The comment describes a \u0027disconnected\u0027 dentry as being IS_ROOT as\nwell as DCACHE_DISCONNECTED, however there is not testing of IS_ROOT anythere.\n\nA dentry is marked DCACHE_DISCONNECTED when allocated with d_alloc_anon, and\nremains DCACHE_DISCONNECTED while a path is built up towards the root.  So a\ndentry can have a valid name and a valid parent and even grandparent, but will\nstill be DCACHE_DISCONNECTED until a path to the root is created.  Once the\npath to the root is complete, everything in the path gets DCACHE_DISCONNECTED\ncleared.  So the fact that DCACHE_DISCONNECTED isn\u0027t enough to say that a\ndentry is free to be spliced in with a given name.  This can only be allowed\nif the dentry does not yet have a name, so the IS_ROOT test is needed too.\n\nHowever even adding that test to __d_find_alias isn\u0027t enough.  As\nd_splice_alias drops dcache_lock before calling d_move to perform the splice,\nit could race with another thread calling d_splice_alias to splice the inode\nin with a different name in a different part of the tree (in the case where a\nfile has hard links).  So that splicing code is only really safe for\ndirectories (as we know that directories only have one link).  For\ndirectories, the caller of d_splice_alias will be holding i_mutex on the\n(unique) parent so there is no room for a race.\n\nA consequence of this is that a non-directory will never benefit from being\nspliced into a pre-exisiting dentry, but that isn\u0027t a problem.  It is\nperfectly OK for a non-directory to have multiple dentries, some anonymous,\nsome not.  And the comment for d_splice_alias says that it only happens for\ndirectories anyway.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "07f3f05c1e3052b8656129b2a5aca9f888241a34",
      "tree": "3338b004d518a0d2189efdc3fb88e94e1c02c0ce",
      "parents": [
        "65e6f5bc8149165efb9d7bdbd142bb837d5edfeb"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:52:18 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sat Sep 30 20:52:18 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move extern declarations out of fs/*.c into header files [try #6]\n\nCreate a new header file, fs/internal.h, for common definitions local to the\nsources in the fs/ directory.\n\nMove extern definitions that should be in header files from fs/*.c to\nfs/internal.h or other main header files where they span directories.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "770bfad846ab6628444428467b11fa6773ae9ea1",
      "tree": "5fd803319fe718367dca081b23abd36bfc85f78a",
      "parents": [
        "979df72e6f963b42ee484f2eca049c3344da0ba7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 22 20:06:07 2006 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Sep 22 23:24:30 2006 -0400"
      },
      "message": "NFS: Add dentry materialisation op\n\nThe attached patch adds a new directory cache management function that prepares\na disconnected anonymous function to be connected into the dentry tree. The\nanonymous dentry is transferred the name and parentage from another dentry.\n\nThe following changes were made in [try #2]:\n\n (*) d_materialise_dentry() now switches the parentage of the two nodes around\n     correctly when one or other of them is self-referential.\n\nThe following changes were made in [try #7]:\n\n (*) d_instantiate_unique() has had the interior part split out as function\n     __d_instantiate_unique(). Callers of this latter function must be holding\n     the appropriate locks.\n\n (*) _d_rehash() has been added as a wrapper around __d_rehash() to call it\n     with the most obvious hash list (the one from the name). d_rehash() now\n     calls _d_rehash().\n\n (*) d_materialise_dentry() is now __d_materialise_dentry() and is static.\n\n (*) d_materialise_unique() added to perform the combination of d_find_alias(),\n     d_materialise_dentry() and d_add_unique() that the NFS client was doing\n     twice, all within a single dcache_lock critical section. This reduces the\n     number of times two different spinlocks were being accessed.\n\nThe following further changes were made:\n\n (*) Add the dentries onto their parents d_subdirs lists.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "a90b9c05df3c1e58eaedc28795d0f5abd896c098",
      "tree": "bc9c1233bad94175abca731daa9120151e0d9c7e",
      "parents": [
        "13e83599d282ddfd544600df9db5ab343ac4662f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:04 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:06 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate dcache\n\nTeach special (recursive) locking code to the lock validator.  Has no effect\non non-lockdep kernels.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e4d919188554a77c798a267e098059bc9aa39726",
      "tree": "bb5e47e09f5d107db44358ad668988f5ae768ade",
      "parents": [
        "9cebb5526833059f327d237a032422c762378b2a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:02 2006 -0700"
      },
      "message": "[PATCH] lockdep: locking init debugging improvement\n\nLocking init improvement:\n\n - introduce and use __SPIN_LOCK_UNLOCKED for array initializations,\n   to pass in the name string of locks, used by debugging\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.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": "1bfba4e8ea0e555e3a0296051517d96253660ccc",
      "tree": "48ced9016b5c08f1be217677c25e6879c07b5278",
      "parents": [
        "a7addcea6ac7c0e9733a48cda06ca0880f116a48"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Mon Jun 26 00:24:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:17 2006 -0700"
      },
      "message": "[PATCH] core: use list_move()\n\nThis patch converts the combination of list_del(A) and list_add(A, B) to\nlist_move(A, B).\n\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8e13059a37252c45ab7173a0e4bac05e4a444ab6",
      "tree": "5a1e2d011e9b2690b9463a738a4d906ce3e8362c",
      "parents": [
        "38e13929c391e6964b00840b765ed601a3377d33"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Mon Jun 26 00:24:37 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:17 2006 -0700"
      },
      "message": "[PATCH] use list_add_tail() instead of list_add()\n\nThis patch converts list_add(A, B.prev) to list_add_tail(A, \u0026B) for\nreadability.\n\nAcked-by: Karsten Keil \u003ckkeil@suse.de\u003e\nCc: Jan Harkes \u003cjaharkes@cs.cmu.edu\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAOLed-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f58a1ebb22f128fccfeafb2b18557c87741cd627",
      "tree": "02fc9331087b97f69f50ab3bc78ae1e9910aa6ec",
      "parents": [
        "d84a84775bba661d5a3fd06757bbb419381937f3"
      ],
      "author": {
        "name": "Hua Zhong",
        "email": "hzhong@gmail.com",
        "time": "Sun Jun 25 05:49:32 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:26 2006 -0700"
      },
      "message": "[PATCH] remove unlikely(sb) in prune_dcache\n\nlikely profiling shows that the following is a miss.\n\nAfter boot:\n[+- ] Type | # True | # False | Function:Filename@Line\n+unlikely |     1074|        0  prune_dcache()@:fs/dcache.c@409\n\nAfter a bonnie++ run:\n+unlikely |    66716|    19584  prune_dcache()@:fs/dcache.c@409\n\nSo remove it.\n\nSigned-off-by: Hua Zhong \u003chzhong@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "454e2398be9b9fa30433fccc548db34d19aa9958",
      "tree": "1f61cb0c3716a33b661cfc8977e9beeb480a322c",
      "parents": [
        "1ad5544098a69d7dc1fa508cbb17e13a7a952fd8"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jun 23 02:02:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:45 2006 -0700"
      },
      "message": "[PATCH] VFS: Permit filesystem to override root dentry on mount\n\nExtend the get_sb() filesystem operation to take an extra argument that\npermits the VFS to pass in the target vfsmount that defines the mountpoint.\n\nThe filesystem is then required to manually set the superblock and root dentry\npointers.  For most filesystems, this should be done with simple_set_mnt()\nwhich will set the superblock pointer and then set the root dentry to the\nsuperblock\u0027s s_root (as per the old default behaviour).\n\nThe get_sb() op now returns an integer as there\u0027s now no need to return the\nsuperblock pointer.\n\nThis patch permits a superblock to be implicitly shared amongst several mount\npoints, such as can be done with NFS to avoid potential inode aliasing.  In\nsuch a case, simple_set_mnt() would not be called, and instead the mnt_root\nand mnt_sb would be set directly.\n\nThe patch also makes the following changes:\n\n (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount\n     pointer argument and return an integer, so most filesystems have to change\n     very little.\n\n (*) If one of the convenience function is not used, then get_sb() should\n     normally call simple_set_mnt() to instantiate the vfsmount. This will\n     always return 0, and so can be tail-called from get_sb().\n\n (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the\n     dcache upon superblock destruction rather than shrink_dcache_anon().\n\n     This is required because the superblock may now have multiple trees that\n     aren\u0027t actually bound to s_root, but that still need to be cleaned up. The\n     currently called functions assume that the whole tree is rooted at s_root,\n     and that anonymous dentries are not the roots of trees which results in\n     dentries being left unculled.\n\n     However, with the way NFS superblock sharing are currently set to be\n     implemented, these assumptions are violated: the root of the filesystem is\n     simply a dummy dentry and inode (the real inode for \u0027/\u0027 may well be\n     inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries\n     with child trees.\n\n     [*] Anonymous until discovered from another tree.\n\n (*) The documentation has been adjusted, including the additional bit of\n     changing ext2_* into foo_* in the documentation.\n\n[akpm@osdl.org: convert ipath_fs, do other stuff]\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Nathan Scott \u003cnathans@sgi.com\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d702ccb342e49f7591df5a87c3857c698183b0fa",
      "tree": "4bc01a35030827a238c0822d74995b37efa4d9f7",
      "parents": [
        "0feae5c47aabdde59cbbec32d150e17102de37f0"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Jun 22 14:47:31 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 22 15:05:57 2006 -0700"
      },
      "message": "[PATCH] prune_one_dentry() tweaks\n\n- Add description of d_lock handling to comments over prune_one_dentry().\n\n- It has three callsites - uninline it, saving 200 bytes of text.\n\nCc: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Olaf Hering \u003colh@suse.de\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0feae5c47aabdde59cbbec32d150e17102de37f0",
      "tree": "244f742d943a0516921180b840419fdc329075f0",
      "parents": [
        "de047c1bcd7f7bcfbdc29eb5b439fb332594da3f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 22 14:47:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 22 15:05:57 2006 -0700"
      },
      "message": "[PATCH] Fix dcache race during umount\n\nThe race is that the shrink_dcache_memory shrinker could get called while a\nfilesystem is being unmounted, and could try to prune a dentry belonging to\nthat filesystem.\n\nIf it does, then it will call in to iput on the inode while the dentry is\nno longer able to be found by the umounting process.  If iput takes a\nwhile, generic_shutdown_super could get all the way though\nshrink_dcache_parent and shrink_dcache_anon and invalidate_inodes without\never waiting on this particular inode.\n\nEventually the superblock gets freed anyway and if the iput tried to touch\nit (which some filesystems certainly do), it will lose.  The promised\n\"Self-destruct in 5 seconds\" doesn\u0027t lead to a nice day.\n\nThe race is closed by holding s_umount while calling prune_one_dentry on\nsomeone else\u0027s dentry.  As a down_read_trylock is used,\nshrink_dcache_memory will no longer try to prune the dentry of a filesystem\nthat is being unmounted, and unmount will not be able to start until any\nsuch active prune_one_dentry completes.\n\nThis requires that prune_dcache *knows* which filesystem (if any) it is\ndoing the prune on behalf of so that it can be careful of other\nfilesystems.  shrink_dcache_memory isn\u0027t called it on behalf of any\nfilesystem, and so is careful of everything.\n\nshrink_dcache_anon is now passed a super_block rather than the s_anon list\nout of the superblock, so it can get the s_anon list itself, and can pass\nthe superblock down to prune_dcache.\n\nIf prune_dcache finds a dentry that it cannot free, it leaves it where it\nis (at the tail of the list) and exits, on the assumption that some other\nthread will be removing that dentry soon.  To try to make sure that some\nwork gets done, a limited number of dnetries which are untouchable are\nskipped over while choosing the dentry to work on.\n\nI believe this race was first found by Kirill Korotaev.\n\nCc: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Olaf Hering \u003colh@suse.de\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e7e241f8c5c87cc3685364feface081c9fa3648",
      "tree": "43ea46cfec4da31a505e93875feeac945bf906ce",
      "parents": [
        "92476d7fc0326a409ab1d3864a04093a6be9aca7"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Mar 31 02:31:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:19:00 2006 -0800"
      },
      "message": "[PATCH] dcache: Add helper d_hash_and_lookup\n\nIt is very common to hash a dentry and then to call lookup.  If we take fs\nspecific hash functions into account the full hash logic can get ugly.\nFurther full_name_hash as an inline function is almost 100 bytes on x86 so\nhaving a non-inline choice in some cases can measurably decrease code size.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7a2bd3f7efa86e8b56482a8f8948c8b222064a67",
      "tree": "34a90c6b4f08efb1b7f3ca6face4879164c28e15",
      "parents": [
        "094e320d761dae5816d8faa695b0509eea79c108"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Fri Mar 31 02:30:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:55 2006 -0800"
      },
      "message": "[PATCH] inotify: IN_DELETE events missing\n\nIN_DELETE events are no longer generated for the removal of a file from a\nwatched directory.\n\nThis seems to be a result of clearing DCACHE_INOTIFY_PARENT_WATCHED in\nd_delete() directly before calling fsnotify_nameremove().\n\nAssuming the flag doesn\u0027t need to be cleared before dentry_iput(), this\nshould do the trick.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nAcked-by: Robert Love \u003crml@novell.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ae21d1bb376436285cd5346d3e4b3655d6dd1b9",
      "tree": "8f889770fae721da63bd378c1834a87e2eb1cfb5",
      "parents": [
        "f9b4192923fa6e38331e88214b1fe5fc21583fcc",
        "e9415777b1cd0eaf4d1d3d61772f0e6d5c2551ad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 09:41:18 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 09:41:18 2006 -0800"
      },
      "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  drivers/char/ftape/lowlevel/fdc-io.c: Correct a comment\n  Kconfig help: MTD_JEDECPROBE already supports Intel\n  Remove ugly debugging stuff\n  do_mounts.c: Minor ROOT_DEV comment cleanup\n  BUG_ON() Conversion in drivers/s390/block/dasd_devmap.c\n  BUG_ON() Conversion in mm/mempool.c\n  BUG_ON() Conversion in mm/memory.c\n  BUG_ON() Conversion in kernel/fork.c\n  BUG_ON() Conversion in ipc/sem.c\n  BUG_ON() Conversion in fs/ext2/\n  BUG_ON() Conversion in fs/hfs/\n  BUG_ON() Conversion in fs/dcache.c\n  BUG_ON() Conversion in fs/buffer.c\n  BUG_ON() Conversion in input/serio/hp_sdc_mlc.c\n  BUG_ON() Conversion in md/dm-table.c\n  BUG_ON() Conversion in md/dm-path-selector.c\n  BUG_ON() Conversion in drivers/isdn\n  BUG_ON() Conversion in drivers/char\n  BUG_ON() Conversion in drivers/mtd/\n"
    },
    {
      "commit": "3be7d29fb9c02962b49be636b30ca9cadd0fda4b",
      "tree": "2ec3fc11cb5f423091bd050181ac1786167c2ded",
      "parents": [
        "5ac35783f4a471d43c557db27928bc29f8a9c6d0"
      ],
      "author": {
        "name": "Artem B. Bityuckiy",
        "email": "dedekind@infradead.org",
        "time": "Sun Mar 26 18:58:31 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Mar 26 18:58:31 2006 +0200"
      },
      "message": "Remove ugly debugging stuff\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\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": "28133c7b2b9bbdf8a8765a319e818c1652f38c1f",
      "tree": "35a5e82cbd970a90f45933aa2d4f20e421537b66",
      "parents": [
        "e827f92355e1eeec2d227d3bd3350d04042a011e"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sun Mar 26 18:25:39 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Mar 26 18:25:39 2006 +0200"
      },
      "message": "BUG_ON() Conversion in fs/dcache.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": "2ab13460852e65c2ec0e77000baba5e859a6a2cf",
      "tree": "566f37cc9f4cb593c3f85a7eb4ae46b308b8a6dd",
      "parents": [
        "4ffc84442572669727dc4fcd976582508eaf23e7"
      ],
      "author": {
        "name": "Kirill Korotaev",
        "email": "dev@openvz.org",
        "time": "Sat Mar 25 03:07:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:56 2006 -0800"
      },
      "message": "[PATCH] Reduce sched latency in shrink_dcache_sb()\n\nThis patch reduces scheduling latency in shrink_dcache_sb() noticed during\nremounting of big partitions with many cached dentries.  The same latency\nfix was applied to select_parent() long ago.\n\nSigned-off-by: Denis Lunev \u003cden@sw.ru\u003e\nSigned-off-by: Pavel Emelianov \u003cxemul@sw.ru\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c32ccd87bfd1414b0aabfcd8dbc7539ad23bcbaa",
      "tree": "612dc637976cbe36e8b72924a1f7bd76e75463fd",
      "parents": [
        "bf36b9011e3c5b2739f9da2f6de8a6fa3edded32"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Mar 25 03:07:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:53 2006 -0800"
      },
      "message": "[PATCH] inotify: lock avoidance with parent watch status in dentry\n\nPrevious inotify work avoidance is good when inotify is completely unused,\nbut it breaks down if even a single watch is in place anywhere in the\nsystem.  Robin Holt notices that udev is one such culprit - it slows down a\n512-thread application on a 512 CPU system from 6 seconds to 22 minutes.\n\nSolve this by adding a flag in the dentry that tells inotify whether or not\nits parent inode has a watch on it.  Event queueing to parent will skip\ntaking locks if this flag is cleared.  Setting and clearing of this flag on\nall child dentries versus event delivery: this is no in terms of race\ncases, and that was shown to be equivalent to always performing the check.\n\nThe essential behaviour is that activity occuring _after_ a watch has been\nadded and _before_ it has been removed, will generate events.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Robert Love \u003crml@novell.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "214fda1f6e1b8ef2a5292b0372744037fc80d318",
      "tree": "4cf0a18632cc663fcd75a1e23e357ec39c0c3b37",
      "parents": [
        "7d99b7d634d81bb372e03e4561c80430aa4cfac2"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Mar 25 03:06:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:49 2006 -0800"
      },
      "message": "[PATCH] Optimise d_find_alias()\n\nThe attached patch optimises d_find_alias() to only take the spinlock if\nthere\u0027s anything in the the inode\u0027s alias list.  If there isn\u0027t, it returns\nNULL immediately.\n\nWith respect to the superblock sharing patch, this should reduce by one the\nnumber of times the dcache_lock is taken by nfs_lookup() for ordinary\ndirectory lookups.\n\nOnly in the case where there\u0027s already a dentry for particular directory inode\n(such as might happen when another mountpoint is rooted at that dentry) will\nthe lock then be taken the extra time.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\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": "529bf6be5c04f2e869d07bfdb122e9fd98ade714",
      "tree": "38514bb3941c4ac2a79266e4483663b79efa2f22",
      "parents": [
        "21a1ea9eb40411d4ee29448c53b9e4c0654d6ceb"
      ],
      "author": {
        "name": "Dipankar Sarma",
        "email": "dipankar@in.ibm.com",
        "time": "Tue Mar 07 21:55:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 08 14:14:01 2006 -0800"
      },
      "message": "[PATCH] fix file counting\n\nI have benchmarked this on an x86_64 NUMA system and see no significant\nperformance difference on kernbench.  Tested on both x86_64 and powerpc.\n\nThe way we do file struct accounting is not very suitable for batched\nfreeing.  For scalability reasons, file accounting was\nconstructor/destructor based.  This meant that nr_files was decremented\nonly when the object was removed from the slab cache.  This is susceptible\nto slab fragmentation.  With RCU based file structure, consequent batched\nfreeing and a test program like Serge\u0027s, we just speed this up and end up\nwith a very fragmented slab -\n\nllm22:~ # cat /proc/sys/fs/file-nr\n587730  0       758844\n\nAt the same time, I see only a 2000+ objects in filp cache.  The following\npatch I fixes this problem.\n\nThis patch changes the file counting by removing the filp_count_lock.\nInstead we use a separate percpu counter, nr_files, for now and all\naccesses to it are through get_nr_files() api.  In the sysctl handler for\nnr_files, we populate files_stat.nr_files before returning to user.\n\nCounting files as an when they are created and destroyed (as opposed to\ninside slab) allows us to correctly count open files with RCU.\n\nSigned-off-by: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "47ba87e0b1269698801310bfd1716b0538282405",
      "tree": "be429e822401e9f1a213b008b5e6e2f538754888",
      "parents": [
        "09114eb8c53d2d3b2ff9523e011cb68b2e245dce"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "marcelo.tosatti@cyclades.com",
        "time": "Fri Feb 03 03:04:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 03 08:32:04 2006 -0800"
      },
      "message": "[PATCH] make \"struct d_cookie\" depend on CONFIG_PROFILING\n\nShrinks \"struct dentry\" from 128 bytes to 124 on x86, allowing 31 objects\nper slab instead of 30.\n\nCc: John Levon \u003clevon@movementarian.org\u003e\nCc: Philippe Elie \u003cphil.el@wanadoo.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "858119e159384308a5dde67776691a2ebf70df0f",
      "tree": "f360768f999d51edc0863917ce0bf79e88c0ec4c",
      "parents": [
        "b0a9499c3dd50d333e2aedb7e894873c58da3785"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Sat Jan 14 13:20:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:06 2006 -0800"
      },
      "message": "[PATCH] Unlinline a bunch of other functions\n\nRemove the \"inline\" keyword from a bunch of big functions in the kernel with\nthe goal of shrinking it by 30kb to 40kb\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e866cfa939de7f52c154a9495eb5767f89abf453",
      "tree": "331c6c08848597ea5674ebccb51f31a045bd1e30",
      "parents": [
        "632d6407afb58ef125bf7e82a2e8af27d0704b56"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "green@linuxhacker.ru",
        "time": "Mon Jan 09 20:52:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Jan 10 08:01:41 2006 -0800"
      },
      "message": "[PATCH] d_instantiate_unique / NFS inode leakage\n\nIf we have found aliased dentry that we return, inode reference is not\ndropped and inode is not attached anywhere, so it seems the reference to\ninode is leaked in that case.\n\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e,\nCc: \u003cviro@parcelfarce.linux.theplanet.co.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": "5160ee6fc891a9ca114be0e90fa6655647bb64b2",
      "tree": "35d3740a777935582af1b78238f20d2c2971ed55",
      "parents": [
        "21b6bf143d05d77c350d9c6764ae090a877b66ea"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Jan 08 01:03:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:58 2006 -0800"
      },
      "message": "[PATCH] shrink dentry struct\n\nSome long time ago, dentry struct was carefully tuned so that on 32 bits\nUP, sizeof(struct dentry) was exactly 128, ie a power of 2, and a multiple\nof memory cache lines.\n\nThen RCU was added and dentry struct enlarged by two pointers, with nice\nresults for SMP, but not so good on UP, because breaking the above tuning\n(128 + 8 \u003d 136 bytes)\n\nThis patch reverts this unwanted side effect, by using an union (d_u),\nwhere d_rcu and d_child are placed so that these two fields can share their\nmemory needs.\n\nAt the time d_free() is called (and d_rcu is really used), d_child is known\nto be empty and not touched by the dentry freeing.\n\nLockless lookups only access d_name, d_parent, d_lock, d_op, d_flags (so\nthe previous content of d_child is not needed if said dentry was unhashed\nbut still accessed by a CPU because of RCU constraints)\n\nAs dentry cache easily contains millions of entries, a size reduction is\nworth the extra complexity of the ugly C union.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Stephen Smalley \u003csds@epoch.ncsc.mil\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "665a7583f32ab5b3bfe7a4d88da506542f7cdd75",
      "tree": "2b45def3f7ecaf322b05622a635510fe8aef51af",
      "parents": [
        "9f46080c41d5f3f7c00b4e169ba4b0b2865258bf"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@us.ibm.com",
        "time": "Mon Nov 07 00:59:17 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:53:35 2005 -0800"
      },
      "message": "[PATCH] Remove hlist_for_each_rcu() API, convert existing use to hlist_for_each_entry_rcu\n\nRemove the hlist_for_each_rcu() API, which is used only in one place, and\nis trivially converted to hlist_for_each_entry_rcu(), making the code\nshorter and more readable.  Any out-of-tree uses may be similarly\nconverted.\n\nSigned-off-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\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": "f805fbdaacf4367ce566743a665622387768ac0d",
      "tree": "006c7be5683f8cad7be02824827e0104e15604b4",
      "parents": [
        "875bd5ab01bc0b760fd4e97838931cd2e7456cbd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Sep 19 19:54:29 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Sep 19 19:54:29 2005 -0700"
      },
      "message": "Make fsnotify possibly work better for the inode removal case\n\nChecking i_nlink is dubious, but the alternatives look even\nless appetizing.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0cdca3f9806a3dbaa07b5e8175000cd513ba92d4",
      "tree": "2235a2065509b74eff9d94ffcdbc8d9371f5b5ab",
      "parents": [
        "fdadd65fbce0ff966cb8e74247d9636f52a7fc7a"
      ],
      "author": {
        "name": "Domen Puncer",
        "email": "domen@coderock.org",
        "time": "Sat Sep 10 00:27:07 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:32 2005 -0700"
      },
      "message": "[PATCH] janitor: fs/dcache.c: list_for_each*\n\nFirst one is list_for_each_entry (thanks maks), second 2 list_for_each_safe.\n\nSigned-off-by: Maximilian Attems \u003cjanitor@sternwelten.at\u003e\nSigned-off-by: Domen Puncer \u003cdomen@coderock.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7a91bf7f5c22c8407a9991cbd9ce5bb87caa6b4a",
      "tree": "ffd77cfbf621a990052c1277d8a18451b9363dda",
      "parents": [
        "1963c907b21e140082d081b1c8f8c2154593c7d7"
      ],
      "author": {
        "name": "John McCutchan",
        "email": "ttb@tentacle.dhs.org",
        "time": "Mon Aug 08 13:52:16 2005 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Aug 08 11:53:47 2005 -0700"
      },
      "message": "[PATCH] fsnotify_name/inoderemove\n\nThe patch below unhooks fsnotify from vfs_unlink \u0026 vfs_rmdir.  It\nintroduces two new fsnotify calls, that are hooked in at the dcache\nlevel.  This not only more closely matches how the VFS layer works, it\nalso avoids the problem with locking and inode lifetimes.\n\nThe two functions are\n\n - fsnotify_nameremove -- called when a directory entry is going away.\n   It notifies the PARENT of the deletion.  This is called from\n   d_delete().\n\n - inoderemove -- called when the files inode itself is going away.  It\n   notifies the inode that is being deleted.  This is called from\n   dentry_iput().\n\nSigned-off-by: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "75c96f85845a6707b0f9916cb263cb3584f7d48f",
      "tree": "45a64d1c9bb71d7093db3a11e0f21465c2e3dec6",
      "parents": [
        "5e198d94dd0c3ec7f6138229e2e412c2c6268c38"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu May 05 16:16:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu May 05 16:36:47 2005 -0700"
      },
      "message": "[PATCH] make some things static\n\nThis patch makes some needlessly global identifiers static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Arjan van de Ven \u003carjanv@infradead.org\u003e\nAcked-by: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\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"
    }
  ]
}
