)]}'
{
  "log": [
    {
      "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": "735643ee6cc5249bfac07fcad0946a5e7aff4423",
      "tree": "e725df246f4a3cf88b6b42a28d859ab969acf81c",
      "parents": [
        "71cc2c2152170b8166f59abb0604dc62073aeb92"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@crashcourse.ca",
        "time": "Wed Apr 30 00:55:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:54 2008 -0700"
      },
      "message": "Remove \"#ifdef __KERNEL__\" checks from unexported headers\n\nRemove the \"#ifdef __KERNEL__\" tests from unexported header files in\nlinux/include whose entire contents are wrapped in that preprocessor\ntest.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "6d59e7f582ef1c1988542d0fc3b36d0087b757ce",
      "tree": "2e6e2e7d42af8f89f7b87aeaf5261d4cfbd9b625",
      "parents": [
        "807501475fce0ebe68baedf87f202c3e4ee0d12c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 22 15:48:17 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 21 23:11:01 2008 -0400"
      },
      "message": "[PATCH] move a bunch of declarations to fs/internal.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "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": "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": "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": "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": "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": "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": "c32ccd87bfd1414b0aabfcd8dbc7539ad23bcbaa",
      "tree": "612dc637976cbe36e8b72924a1f7bd76e75463fd",
      "parents": [
        "bf36b9011e3c5b2739f9da2f6de8a6fa3edded32"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Mar 25 03:07:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:22:53 2006 -0800"
      },
      "message": "[PATCH] inotify: lock avoidance with parent watch status in dentry\n\nPrevious inotify work avoidance is good when inotify is completely unused,\nbut it breaks down if even a single watch is in place anywhere in the\nsystem.  Robin Holt notices that udev is one such culprit - it slows down a\n512-thread application on a 512 CPU system from 6 seconds to 22 minutes.\n\nSolve this by adding a flag in the dentry that tells inotify whether or not\nits parent inode has a watch on it.  Event queueing to parent will skip\ntaking locks if this flag is cleared.  Setting and clearing of this flag on\nall child dentries versus event delivery: this is no in terms of race\ncases, and that was shown to be equivalent to always performing the check.\n\nThe essential behaviour is that activity occuring _after_ a watch has been\nadded and _before_ it has been removed, will generate events.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Robert Love \u003crml@novell.com\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b8623545b42c03eb92e51b28c84acf4b8ba00a3",
      "tree": "071045ad9c60d2697292c523c77322a70a248fb9",
      "parents": [
        "92118c739df879497b8cc5a2eb3a9dc255f01b20"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 15 01:07:03 2005 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 07 20:56:35 2006 -0500"
      },
      "message": "[PATCH] remove bogus asm/bug.h includes.\n\nA bunch of asm/bug.h includes are both not needed (since it will get\npulled anyway) and bogus (since they are done too early).  Removed.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47ba87e0b1269698801310bfd1716b0538282405",
      "tree": "be429e822401e9f1a213b008b5e6e2f538754888",
      "parents": [
        "09114eb8c53d2d3b2ff9523e011cb68b2e245dce"
      ],
      "author": {
        "name": "Marcelo Tosatti",
        "email": "marcelo.tosatti@cyclades.com",
        "time": "Fri Feb 03 03:04:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 03 08:32:04 2006 -0800"
      },
      "message": "[PATCH] make \"struct d_cookie\" depend on CONFIG_PROFILING\n\nShrinks \"struct dentry\" from 128 bytes to 124 on x86, allowing 31 objects\nper slab instead of 30.\n\nCc: John Levon \u003clevon@movementarian.org\u003e\nCc: Philippe Elie \u003cphil.el@wanadoo.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5160ee6fc891a9ca114be0e90fa6655647bb64b2",
      "tree": "35d3740a777935582af1b78238f20d2c2971ed55",
      "parents": [
        "21b6bf143d05d77c350d9c6764ae090a877b66ea"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Sun Jan 08 01:03:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:13:58 2006 -0800"
      },
      "message": "[PATCH] shrink dentry struct\n\nSome long time ago, dentry struct was carefully tuned so that on 32 bits\nUP, sizeof(struct dentry) was exactly 128, ie a power of 2, and a multiple\nof memory cache lines.\n\nThen RCU was added and dentry struct enlarged by two pointers, with nice\nresults for SMP, but not so good on UP, because breaking the above tuning\n(128 + 8 \u003d 136 bytes)\n\nThis patch reverts this unwanted side effect, by using an union (d_u),\nwhere d_rcu and d_child are placed so that these two fields can share their\nmemory needs.\n\nAt the time d_free() is called (and d_rcu is really used), d_child is known\nto be empty and not touched by the dentry freeing.\n\nLockless lookups only access d_name, d_parent, d_lock, d_op, d_flags (so\nthe previous content of d_child is not needed if said dentry was unhashed\nbut still accessed by a CPU because of RCU constraints)\n\nAs dentry cache easily contains millions of entries, a size reduction is\nworth the extra complexity of the ugly C union.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Stephen Smalley \u003csds@epoch.ncsc.mil\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a05964f3917c7c55368c229d7985f8e7c9977e97",
      "tree": "7ec25550267ef050572c00ba2f37d6a4ff9c469e",
      "parents": [
        "2144440327fa01b2f3f65e355120a78211685702"
      ],
      "author": {
        "name": "Ram Pai",
        "email": "linuxram@us.ibm.com",
        "time": "Mon Nov 07 17:20:17 2005 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 18:18:11 2005 -0800"
      },
      "message": "[PATCH] shared mounts handling: umount\n\nAn unmount of a mount creates a umount event on the parent.  If the\nparent is a shared mount, it gets propagated to all mounts in the peer\ngroup.\n\nSigned-off-by: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3f4bb1f4199b7dc0c958447b1e4898980013b884",
      "tree": "3d8aacfc6b7bbf7b2d224ae10ca693c55c64739e",
      "parents": [
        "0811bab24ff1eecab38110eda7ea7847db95c64e"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Sep 06 15:18:16 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:41 2005 -0700"
      },
      "message": "[PATCH] struct dentry: place d_hash close to d_parent and d_name to speedup lookups\n\ndentry cache uses sophisticated RCU technology (and prefetching if\navailable) but touches 2 cache lines per dentry during hlist lookup.\n\nThis patch moves d_hash in the same cache line than d_parent and d_name\nfields so that :\n\n1) One cache line is needed instead of two.\n\n2) the hlist_for_each_rcu() prefetching has a chance to bring all the\n   needed data in advance, not only the part that includes d_hash.next.\n\nI also changed one old comment that was wrong for 64bits.\n\nA further optimisation would be to separate dentry in two parts, one that\nis mostly read, and one writen (d_count/d_lock) to avoid false sharing on\nSMP/NUMA but this would need different field placement depending on 32bits\nor 64bits platform.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
