)]}'
{
  "log": [
    {
      "commit": "99b7db7b8ffd6bb755eb0a175596421a0b581cb2",
      "tree": "cbaf57d252f0852f967d3fd5a5f87472964a01fe",
      "parents": [
        "6416ccb7899960868f5016751fb81bf25213d24f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Wed Aug 18 04:37:39 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 18 08:35:48 2010 -0400"
      },
      "message": "fs: brlock vfsmount_lock\n\nfs: brlock vfsmount_lock\n\nUse a brlock for the vfsmount lock. It must be taken for write whenever\nmodifying the mount hash or associated fields, and may be taken for read when\nperforming mount hash lookups.\n\nA new lock is added for the mnt-id allocator, so it doesn\u0027t need to take\nthe heavy vfsmount write-lock.\n\nThe number of atomics should remain the same for fastpath rlock cases, though\ncode would be slightly slower due to per-cpu access. Scalability is not not be\nmuch improved in common cases yet, due to other locks (ie. dcache_lock) getting\nin the way. However path lookups crossing mountpoints should be one case where\nscalability is improved (currently requiring the global lock).\n\nThe slowpath is slower due to use of brlock. On a 64 core, 64 socket, 32 node\nAltix system (high latency to remote nodes), a simple umount microbenchmark\n(mount --bind mnt mnt2 ; umount mnt2 loop 1000 times), before this patch it\ntook 6.8s, afterwards took 7.1s, about 5% slower.\n\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b04f784e5d19ed58892833dae845738972cea260",
      "tree": "6060e063b5a51461fd60630d57318778fe987148",
      "parents": [
        "2a4419b5b2a77f3f4537c14f7ad7df95770655dd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Wed Aug 18 04:37:34 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 18 08:35:47 2010 -0400"
      },
      "message": "fs: remove extra lookup in __lookup_hash\n\nfs: remove extra lookup in __lookup_hash\n\nOptimize lookup for create operations, where no dentry should often be\ncommon-case. In cases where it is not, such as unlink, the added overhead\nis much smaller than the removed.\n\nAlso, move comments about __d_lookup racyness to the __d_lookup call site.\nd_lookup is intuitive; __d_lookup is what needs commenting. So in that same\nvein, add kerneldoc comments to __d_lookup and clean up some of the comments:\n\n- We are interested in how the RCU lookup works here, particularly with\n  renames. Make that explicit, and point to the document where it is explained\n  in more detail.\n- RCU is pretty standard now, and macros make implementations pretty mindless.\n  If we want to know about RCU barrier details, we look in RCU code.\n- Delete some boring legacy comments because we don\u0027t care much about how the\n  code used to work, more about the interesting parts of how it works now. So\n  comments about lazy LRU may be interesting, but would better be done in the\n  LRU or refcount management code.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cd956a1c039a55a0ea58175b9a6e83c45799f3de",
      "tree": "d531e2764b9946e3f4ee94f881d2f67321653191",
      "parents": [
        "1f5cfe2f732c6f4d198950ec3c951105af24dd01"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Aug 14 13:05:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 14 16:21:00 2010 -0700"
      },
      "message": "fs/dcache: fix function param name in kernel-doc\n\nFix parameter name in kernel-doc notation (causes a warning).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8df9d1a4142311c084ffeeacb67cd34d190eff74",
      "tree": "512e018114ea506659fac73d838bfca0fb97a5a4",
      "parents": [
        "ffd1f4ed5bddccf2277e3d8525bcedf1983319f8"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:41 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:29:47 2010 -0400"
      },
      "message": "vfs: show unreachable paths in getcwd and proc\n\nPrepend \"(unreachable)\" to path strings if the path is not reachable\nfrom the current root.\n\nTwo places updated are\n - the return string from getcwd()\n - and symlinks under /proc/$PID.\n\nOther uses of d_path() are left unchanged (we know that some old\nsoftware crashes if /proc/mounts is changed).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ffd1f4ed5bddccf2277e3d8525bcedf1983319f8",
      "tree": "2a1b08b204820ba0e9ecb7397ee7a08daff01594",
      "parents": [
        "f2eb6575d5beba1e98d400463007d77555d1fc35"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:40 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:28:21 2010 -0400"
      },
      "message": "vfs: only add \" (deleted)\" where necessary\n\n__d_path() has 4 callers:\n\n  d_path()\n  sys_getcwd()\n  seq_path_root()\n  tomoyo_realpath_from_path2()\n\nOf these the only one which needs the \" (deleted)\" ending is d_path().\n\nsys_getcwd() checks for existence before calling __d_path().\n\nseq_path_root() is used to show the mountpoint path in\n/proc/PID/mountinfo, which is always a positive.\n\nAnd tomoyo doesn\u0027t want the deleted ending.\n\nCreate a helper \"path_with_deleted()\" as subsequent patches will need\nthis in multiple places.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f2eb6575d5beba1e98d400463007d77555d1fc35",
      "tree": "d7459d7d06014b432ef8594f4d2e6de4966fe372",
      "parents": [
        "98dc568bc2ebefe4c0cb315a7fb7eff8bbb43176"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:39 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:28:21 2010 -0400"
      },
      "message": "vfs: add prepend_path() helper\n\nSplit off prepend_path() from __d_path().  This new helper takes an\nend-of-buffer pointer and buffer-length pointer just like the other\nprepend_* functions.  Move the \" (deleted)\" postfix out to __d_path().\n\nThis patch doesn\u0027t change any functionality but paves the way for the\nfollowing patches.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98dc568bc2ebefe4c0cb315a7fb7eff8bbb43176",
      "tree": "54cc4353683020df6669bc8b1aa5b55ebe3ab1f3",
      "parents": [
        "7ae6bdbd9b9d42da53ea809875c0a6cda3de694c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:38 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:28:21 2010 -0400"
      },
      "message": "vfs: __d_path: dont prepend the name of the root dentry\n\nIn the old times pseudo-filesystems set the name of theroot dentry to\nsome prefix like \"pipe:\" and the name of the child dentry to \"[123]\"\nand relied on a hack in __d_path() to replace the preceding slash with\nthe root\u0027s name to get \"pipe:[123]\".\n\nThen the d_dname() dentry operation was introduced which solved the\nsame problem without having to pre-fill the name in each dentry.\n\nCurrently the following pseudo filesystems exist in the kernel:\n\nperfmon\nmtd\nanon_inode\nbdev\npipe\nsocket\n\nOf these only perfmon, anon_inode, pipe and socket create\nsub-dentries, all of which have now been switched to using d_dname().\n\nbdev and mtd only create inodes.\n\nThis means that now the hack to overwrite the slash can be removed, so\nfor unreachable paths (e.g. within a detached mount) the path string\nwon\u0027t be polluted with garbage.  For these cases a subsequent patch\nwill add a prefix, indicating that the path is unreachable.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f7ad3c6be90809b53b7f0ae9d4eaa45ce2564a79",
      "tree": "dc9b09188bab35320200f318b5e7b52f24dc43ad",
      "parents": [
        "542ce7a9bc6b3838832ae0f4f8de30c667af8ff3"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Aug 10 11:41:36 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Aug 11 00:28:20 2010 -0400"
      },
      "message": "vfs: add helpers to get root and pwd\n\nAdd three helpers that retrieve a refcounted copy of the root and cwd\nfrom the supplied fs_struct.\n\n get_fs_root()\n get_fs_pwd()\n get_fs_root_and_pwd()\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dca332528bc69e05f67161e1ed59929633d5e63d",
      "tree": "0ec5576d52bead57c73983d2412cfe71814b5f8d",
      "parents": [
        "7a4dec53897ecd3367efb1e12fe8a4edc47dc0e9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 02:31:46 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:49:02 2010 -0400"
      },
      "message": "no need for list_for_each_entry_safe()/resetting with superblock list\n\njust delay __put_super() a bit\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c103135c14e03fc9a9e5f0adc01df9ad272cf2a1",
      "tree": "0c75bd6a56385697cd0e79fb695a833c5225e45e",
      "parents": [
        "d0352d3ed722b134dacc21836c1763e7e3523662"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 06 22:31:14 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:13 2010 -0400"
      },
      "message": "new helper: __dentry_path()\n\nbuilds path relative to fs root, called under dcache_lock,\ndoesn\u0027t append any nonsense to unlinked ones.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "57439f878afafefad8836ebf5c49da2a0a746105",
      "tree": "ec11dd35704aa37d77a5fd8404fda57f297a3834",
      "parents": [
        "5904b3b81d25166e5e39b9727645bb47937618e3"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Thu Jun 24 13:02:14 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 29 10:38:22 2010 -0700"
      },
      "message": "fs: fix superblock iteration race\n\nlist_for_each_entry_safe is not suitable to protect against concurrent\nmodification of the list. 6754af6 introduced a race in sb walking.\n\nlist_for_each_entry can use the trick of pinning the current entry in\nthe list before we drop and retake the lock because it subsequently\nfollows cur-\u003enext. However list_for_each_entry_safe saves n\u003dcur-\u003enext\nfor following before entering the loop body, so when the lock is\ndropped, n may be deleted.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: John Stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Frank Mayhar \u003cfmayhar@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79893c17b45dec0d3c25bc22d28d9f319b14f573",
      "tree": "560c5f13193cbb1e2d2bf5dc1fd6f25d49c01165",
      "parents": [
        "df40c01a9249873e4ad0625ae5d9fb831962b75c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 22 20:27:55 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:16 2010 -0400"
      },
      "message": "fix prune_dcache()/umount() race\n\n... and get rid of the last __put_super_and_need_restart() caller\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "551de6f34dfeefbeeadb32909c387d393114ecc8",
      "tree": "822af803e7e75ed476b0a176639c162e0395910d",
      "parents": [
        "1712ac8fda7d8bc4dc921f5777b7423aacad7263"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 22 19:36:35 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:14 2010 -0400"
      },
      "message": "Leave superblocks on s_list until the end\n\nWe used to remove from s_list and s_instances at the same\ntime.  So let\u0027s *not* do the former and skip superblocks\nthat have empty s_instances in the loops over s_list.\n\nThe next step, of course, will be to get rid of rescan logics\nin those loops.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "13e3c5e5b9c67e59074d24e29f3ff794bb4dfef0",
      "tree": "18222526565a7fdf44aba30d2861c1f6b75516e3",
      "parents": [
        "d515e86e639890b33a09390d062b0831664f04a2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 16:11:04 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:12 2010 -0400"
      },
      "message": "clean DCACHE_CANT_MOUNT in d_delete()\n\nWe set the \"it\u0027s dead, don\u0027t mount on it\" flag _and_ do not remove it if\nwe turn the damn thing negative and leave it around.  And if it goes\npositive afterwards, well...\n\nFortunately, there\u0027s only one place where that needs to be caught:\nonly d_delete() can turn the sucker negative without immediately freeing\nit; all other places that can lead to -\u003ed_iput() call are followed by\nunconditionally freeing struct dentry in question.  So the fix is obvious:\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d16014\nReported-by: Adam Tkac \u003cvonsch@gmail.com\u003e\nTested-by: Adam Tkac \u003cvonsch@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e         [2.6.34.x]\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4919c5e45a91b5db5a41695fe0357fbdff0d5767",
      "tree": "1aec0bdee83753205be2a6bbe0486db08984f938",
      "parents": [
        "bec1052e5be6a70f03f6adc650f3a6e4c2f44ddf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:13:08 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:13:08 2010 -0500"
      },
      "message": "fix race in d_splice_alias()\n\nrehashing the negative placeholder opens a race with d_lookup();\nwe unhash it almost immediately (by d_move()), but the race\nwindow is there.  Since d_move() doesn\u0027t rely on target being\nhashed, we don\u0027t need that d_rehash() at all.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2096f759abcb42200a81d776f597362fd9265024",
      "tree": "f0784653a50713f9f91f39e24c40abacbfbb6427",
      "parents": [
        "495d6c9c6595ec7b37910dfd42634839431d21fd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 30 13:16:21 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 14:07:55 2010 -0500"
      },
      "message": "New helper: path_is_under(path1, path2)\n\nAnalog of is_subdir for vfsmount,dentry pairs, moved from audit_tree.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ec4f860597af41c6b71f4de86d8e86f710bfab54",
      "tree": "0e16659ad0c0a89567cca34069e1a6da7131d7f2",
      "parents": [
        "587d4a17d837ac0f17edb26f1b6c80c0abda6343"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Jan 05 13:45:18 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 13:00:19 2010 -0500"
      },
      "message": "fs/dcache.c: CodingStyle cleanup\n\nCleanup EXPORT* macros according to Documantation/CodingStyle.\n\nMove EXPORT* macros to the line immediately after the closing\nfunction brace.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ef26ca97e83052790940cbc444b01b0d17a813c1",
      "tree": "93700cae2f8133e74be9621f00bd4588017d85eb",
      "parents": [
        "39159de2a091a35ea86b188ebdc5e642f5cfc832"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Sep 29 20:09:42 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 16 12:16:48 2009 -0500"
      },
      "message": "libfs: move EXPORT_SYMBOL for d_alloc_name\n\nThe EXPORT_SYMBOL for d_alloc_name is in fs/libfs.c but the function\nis in fs/dcache.c.  Move the EXPORT_SYMBOL to the line immediately\nafter the closing function brace line in fs/dcache.c as mentioned\nin Documentation/CodingStyle.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "613afbf83298efaead05ebcac23d2285609d7160",
      "tree": "15fa2025d74cee5f6805ab974c532c6b6a603333",
      "parents": [
        "6f80bd985fe242c2e6a8b6209ed20b0495d3d63b"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jul 16 15:44:29 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jul 18 15:51:44 2009 +0200"
      },
      "message": "sched: Pull up the might_sleep() check into cond_resched()\n\nmight_sleep() is called late-ish in cond_resched(), after the\nneed_resched()/preempt enabled/system running tests are\nchecked.\n\nIt\u0027s better to check the sleeps while atomic earlier and not\ndepend on some environment datas that reduce the chances to\ndetect a problem.\n\nAlso define cond_resched_*() helpers as macros, so that the\nFILE/LINE reported in the sleeping while atomic warning\ndisplays the real origin and not sched.h\n\nChanges in v2:\n\n - Call __might_sleep() directly instead of might_sleep() which\n   may call cond_resched()\n\n - Turn cond_resched() into a macro so that the file:line\n   couple reported refers to the caller of cond_resched() and\n   not __cond_resched() itself.\n\nChanges in v3:\n\n - Also propagate this __might_sleep() pull up to\n   cond_resched_lock() and cond_resched_softirq()\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1247725694-6082-6-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3da392e9ff14b9f388e74319e6d195848991c07",
      "tree": "d9e7660e5c0b4524aeaafcc5b89a9d68a7ca3817",
      "parents": [
        "8c85e125124a473d6f3e9bb187b0b84207f81d91"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon May 04 03:32:03 2009 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "dcache: extrace and use d_unlinked()\n\nd_unlinked() will be used in middle-term to ban checkpointing when opened\nbut unlinked file is detected, and in long term, to detect such situation\nand special case on it.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c490d79bb70c549e096099576b1df40a8810b0d8",
      "tree": "4ebdb76143b6ebaa287274548a1d2c844a94f63e",
      "parents": [
        "a731d12d6ddd1e703770cacb5dfecb155b03ee06"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Sun Apr 26 20:25:53 2009 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:40 2009 -0400"
      },
      "message": "fs: dcache fix LRU ordering\n\nFix ordering of LRU when moving referenced dentries to the head of the list\n(they should go to the head of the list in the same order as they were found\nfrom the tail, rather than reverse order).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "24b6f16ecf37f918a1934d590e9e71c100d6388f",
      "tree": "14ea0e7f399c1608d0401e87655cc9332a3b9f33",
      "parents": [
        "1644ccc8a99ae73859c39372f96afdbf03c9f80d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Apr 18 03:25:41 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 20 23:01:15 2009 -0400"
      },
      "message": "No need for crossing to mountpoint in audit_tag_tree()\n\nis_under() will DTRT anyway.  And yes, is_subdir() behaviour\nis intentional.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e5824c97a993ac5bd22cec34e6cb6f85d39b73ba",
      "tree": "91e9675c3ad752fabed0ada406288ea2d47bc424",
      "parents": [
        "d9e66c7296f3a39f6ac847f11ada8ddf10a4f8b1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 16:36:59 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:28 2009 -0400"
      },
      "message": "Trim includes of fdtable.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ad4e53bd5406ee214ddc5a41f03f779b8b2d526",
      "tree": "b3dab5140284b3edf02bf2b13f74bfddb25aa62a",
      "parents": [
        "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:50:06 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Get rid of indirect include of fs_struct.h\n\nDon\u0027t pull it in sched.h; very few files actually need it and those\ncan include directly.  sched.h itself only needs forward declaration\nof struct fs_struct;\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b6520c81934848cef126d93951f7ce242e0f656d",
      "tree": "dda2be723ee831eb1d33ead7f22335f7817f9c61",
      "parents": [
        "2b1c6bd77d4e6a727ffac8630cd154b2144b751a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Jan 05 19:10:37 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 27 14:43:57 2009 -0400"
      },
      "message": "cleanup d_add_ci\n\nMake sure that comments describe what\u0027s going on and not how, and always\nuse __d_instantiate instead of two separate branches, one with\nd_instantiate and one with __d_instantiate.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "adc487204a9373d2b5a535412466326036147a72",
      "tree": "bae340437d94f25020f2dcdf448eb1110d4621a8",
      "parents": [
        "dca17146f4b72b8966016c406d94ad3e48289b79"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Fri Feb 27 14:02:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 27 16:26:20 2009 -0800"
      },
      "message": "EXPORT_SYMBOL(d_obtain_alias) rather than EXPORT_SYMBOL_GPL\n\nCommit 4ea3ada2955e4519befa98ff55dd62d6dfbd1705 declares d_obtain_alias()\nas EXPORT_SYMBOL_GPL where it\u0027s supposed to replace d_alloc_anon which was\npreviously declared as EXPORT_SYMBOL and thus available to any loadable\nmodule.\n\nThis patch reverts that.\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: 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": "3cdad42884bbd95d5aa01297e8236ea1bad70053",
      "tree": "169b8958b56d5c39a4f437d041baf0412bb53b96",
      "parents": [
        "003d7ab479168132a2b2c6700fe682b08f08ab0c"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:22 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:26 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 20\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "9a8d5bb4ad829e66ab5428ccdce2cbc8ab0ac96c",
      "tree": "dd328a002fdc141a9b45d1262c2956209644c95a",
      "parents": [
        "df4927bf6ccf6278a97a44bd107080c71b269cb5"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jan 07 18:09:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:15 2009 -0800"
      },
      "message": "generic swap(): dcache: use swap() instead of private do_switch()\n\nUse the new generic implementation.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.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": "b6b3fdead251d432f32f2cfce2a893ab8a658110",
      "tree": "358885c529fd14d0cc404a454088329533db379e",
      "parents": [
        "fd659fd6275d3426d7967da1f0e3638bbbd2fedb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Dec 10 09:35:45 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:42 2008 -0500"
      },
      "message": "filp_cachep can be static in fs/file_table.c\n\nInstead of creating the \"filp\" kmem_cache in vfs_caches_init(),\nwe can do it a litle be later in files_init(), so that filp_cachep\nis static to fs/file_table.c\n\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "52afeefb9dac9287429642189996426a2bfd6a25",
      "tree": "cbc7baf2a2f4e8dc16861ad4b13de0183f4afa7e",
      "parents": [
        "be42c4c433c2c0d3f1583c08908fead00d36d222"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Mon Dec 01 14:35:00 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:41 2008 -0500"
      },
      "message": "expand some comments (d_path / seq_path)\n\nExplain that you really need to use the return value of d_path rather than\nthe buffer you passed into it.\n\nAlso fix the comment for seq_path(), the function arguments changed\nrecently but the comment hadn\u0027t been updated in sync.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be42c4c433c2c0d3f1583c08908fead00d36d222",
      "tree": "4553430fa44429b1127a4ef8649380b3bce4f9eb",
      "parents": [
        "dc711ca35f9d95a1eec02118e0c298b5e3068315"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon Dec 01 14:34:58 2008 -0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:40 2008 -0500"
      },
      "message": "correct wrong function name of d_put in kernel document and source comment\n\nno function named d_put(), it should be dput().\n\nImpact: fix document and comment, no functionality changed\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fuijtsu.com\u003e\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dc711ca35f9d95a1eec02118e0c298b5e3068315",
      "tree": "0224900b89471b719a9abcd3e43b334e3d993df9",
      "parents": [
        "7df5fa06de89a4ac311957e0cb9c1d87552b4325"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Nov 03 15:03:50 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:40 2008 -0500"
      },
      "message": "fix switch_names() breakage in short-to-short case\n\nWe want -\u003ename.len to match the resulting name on *both*\nsource and target\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c2452f32786159ed85f0e4b21fec09258f822fc8",
      "tree": "50d93df47f4547a5699c87a608e85596e4c6165f",
      "parents": [
        "e2b689d82c0394e5239a3557a217f19e2f47f1be"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Dec 01 09:33:43 2008 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:38 2008 -0500"
      },
      "message": "shrink struct dentry\n\nstruct dentry is one of the most critical structures in the kernel. So it\u0027s\nsad to see it going neglected.\n\nWith CONFIG_PROFILING turned on (which is probably the common case at least\nfor distros and kernel developers), sizeof(struct dcache) \u003d\u003d 208 here\n(64-bit). This gives 19 objects per slab.\n\nI packed d_mounted into a hole, and took another 4 bytes off the inline\nname length to take the padding out from the end of the structure. This\nshinks it to 200 bytes. I could have gone the other way and increased the\nlength to 40, but I\u0027m aiming for a magic number, read on...\n\nI then got rid of the d_cookie pointer. This shrinks it to 192 bytes. Rant:\nwhy was this ever a good idea? The cookie system should increase its hash\nsize or use a tree or something if lookups are a problem. Also the \"fast\ndcookie lookups\" in oprofile should be moved into the dcookie code -- how\ncan oprofile possibly care about the dcookie_mutex? It gets dropped after\nget_dcookie() returns so it can\u0027t be providing any sort of protection.\n\nAt 192 bytes, 21 objects fit into a 4K page, saving about 3MB on my system\nwith ~140 000 entries allocated. 192 is also a multiple of 64, so we get\nnice cacheline alignment on 64 and 32 byte line systems -- any given dentry\nwill now require 3 cachelines to touch all fields wheras previously it\nwould require 4.\n\nI know the inline name size was chosen quite carefully, however with the\nreduction in cacheline footprint, it should actually be just about as fast\nto do a name lookup for a 36 character name as it was before the patch (and\nfaster for other sizes). The memory footprint savings for names which are\n\u003c\u003d 32 or \u003e 36 bytes long should more than make up for the memory cost for\n33-36 byte names.\n\nPerformance is a feature...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fd217f4d70172c526478f2bc76859e909fdfa674",
      "tree": "df707d185b3009ada981c17211a6e02097e8fc7b",
      "parents": [
        "08b9fe6b12d32324f311c46b88102b6b9067d434"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Tue Oct 21 06:47:33 2008 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:17:12 2008 -0400"
      },
      "message": "[PATCH] fs: add a sanity check in d_free\n\nHi Al,\n\nremember that debug session we did at KS? You suggested this patch back\nthen....\n\nFrom 7751eaf30474b8cbfaea64795805a17eab05ac53 Mon Sep 17 00:00:00 2001\nFrom: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nDate: Tue, 16 Sep 2008 16:51:17 -0700\nSubject: [PATCH] fs: add a sanity check in d_free\n\nwe\u0027re seeing some corruption in the dentry-\u003ed_alias list that\nappears like a free of an entry still on the list; this patch\nadds a WARN_ON() to catch this scenario, as suggested by Al Viro\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\n"
    },
    {
      "commit": "5cec56deb6d41b5b570306b17cd0b1590ebd0897",
      "tree": "b5485bd962bdf354d566e8a5e4257e726b542f8b",
      "parents": [
        "0e55a7cca4b66f625d67b292f80b6a976e77c51b"
      ],
      "author": {
        "name": "Qinghuang Feng",
        "email": "qhfeng.kernel@gmail.com",
        "time": "Mon Oct 13 18:32:42 2008 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:24 2008 -0400"
      },
      "message": "[PATCH] fs/dcache.c: update comment of d_validate()\n\nParameters @hash and @len have been removed since 2.4.3,\nnow just to delete them.\n\nSigned-off-by: Qinghuang Feng \u003cqhfeng.kernel@gmail.com\u003e\n"
    },
    {
      "commit": "8f3dfaa5bab767a043c5af5b879fb86c03329f8a",
      "tree": "b5213e73f1cca4ca6c6c820a1927a0fb03b9cb57",
      "parents": [
        "360da90029196c9449bc61e5a07ce8404e4cba57"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Oct 16 07:50:29 2008 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:18 2008 -0400"
      },
      "message": "[PATCH vfs-2.6 4/6] vfs: remove unnecessary fsnotify_d_instantiate()\n\nThis calls d_move(), so fsnotify_d_instantiate() is unnecessary like\nrename path.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n"
    },
    {
      "commit": "360da90029196c9449bc61e5a07ce8404e4cba57",
      "tree": "7bca57f11b2022633f5c49ec9a1bca9d2d4d1b1a",
      "parents": [
        "e2761a1167633ed943fea29002f990194923d060"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Oct 16 07:50:28 2008 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:17 2008 -0400"
      },
      "message": "[PATCH vfs-2.6 3/6] vfs: add __d_instantiate() helper\n\nThis adds __d_instantiate() for users which is already taking\ndcache_lock, and replace with it.\n\nThe part of d_add_ci() isn\u0027t equivalent. But it should be needed\nfsnotify_d_instantiate() actually, because the path is to add the\ninode to negative dentry.  fsnotify_d_instantiate() should be called\nafter change from negative to positive.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n"
    },
    {
      "commit": "e2761a1167633ed943fea29002f990194923d060",
      "tree": "e91816e85c7721fcff72e5f84336b1dde9d1ac17",
      "parents": [
        "871c0067d53ba2dc35897c7da1da675bf4c70511"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Oct 16 07:50:28 2008 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:16 2008 -0400"
      },
      "message": "[PATCH vfs-2.6 2/6] vfs: add d_ancestor()\n\nThis adds d_ancestor() instead of d_isparent(), then use it.\n\nIf new_dentry \u003d\u003d old_dentry, is_subdir() returns 1, looks strange.\n\"new_dentry \u003d\u003d old_dentry\" is not subdir obviously. But I\u0027m not\nchecking callers for now, so this keeps current behavior.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n"
    },
    {
      "commit": "871c0067d53ba2dc35897c7da1da675bf4c70511",
      "tree": "a76e6888d180a747df04155998bf8e595715da99",
      "parents": [
        "9fbb76ce0fe96c07c44ba2aec3dc99f4b8d2b9c6"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Oct 16 07:50:27 2008 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:16 2008 -0400"
      },
      "message": "[PATCH vfs-2.6 1/6] vfs: replace parent \u003d\u003d dentry-\u003ed_parent by IS_ROOT()\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\n"
    },
    {
      "commit": "9308a6128d9074e348d9f9b5822546fe12a794a9",
      "tree": "3b67f8b6381162b9ff0800eee8722081ef9ed039",
      "parents": [
        "440037287c5ebb07033ab927ca16bb68c291d309"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 11 15:49:12 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:02 2008 -0400"
      },
      "message": "[PATCH] kill d_alloc_anon\n\nRemove d_alloc_anon now that no users are left.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "440037287c5ebb07033ab927ca16bb68c291d309",
      "tree": "c4be3843ea87a777c2647f471895917005d8068f",
      "parents": [
        "4ea3ada2955e4519befa98ff55dd62d6dfbd1705"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 11 15:49:04 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:01 2008 -0400"
      },
      "message": "[PATCH] switch all filesystems over to d_obtain_alias\n\nSwitch all users of d_alloc_anon to d_obtain_alias.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4ea3ada2955e4519befa98ff55dd62d6dfbd1705",
      "tree": "b473278d0df8d869d183fbc0e4a1a07585de240a",
      "parents": [
        "3a8cff4f026c0b98bee6291eb28d4df42feb76dc"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Aug 11 15:48:57 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:13:00 2008 -0400"
      },
      "message": "[PATCH] new helper: d_obtain_alias\n\nThe calling conventions of d_alloc_anon are rather unfortunate for all\nusers, and it\u0027s name is not very descriptive either.\n\nAdd d_obtain_alias as a new exported helper that drops the inode\nreference in the failure case, too and allows to pass-through NULL\npointers and inodes to allow for tail-calls in the export operations.\n\nIncidentally this helper already existed as a private function in\nlibfs.c as exportfs_d_alloc so kill that one and switch the callers\nto d_obtain_alias.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "fa3536cc144c1298f2ed9416c33f3b77fa2cd37a"
}
