)]}'
{
  "log": [
    {
      "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": "f9e4acf3befd3b2903e01b3ef1bd344f03299826",
      "tree": "26eb1f9e71adfd4bd5678861c8f13fd655adfa60",
      "parents": [
        "d003fb70fd356d0684ee0cd37a785e058c8678de"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 12 00:51:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:28 2007 -0800"
      },
      "message": "[PATCH] inotify: read return val fix\n\nFix for inotify read bug (bugzilla.kernel.org #6999)\n\nProblem Description:\nWhen reading from an inotify device with an insufficient sized buffer, read(2)\nwill return 0 with no errno set. This is because of an logically incorrect\naction from the user program thus should return an more logical value. My\nsuggestion is return -EINVAL as for bind(2).\n\nThis patch is based on the proposal from Ryan \u003cwolf0403@hotmail.com\u003e, and\nfeedback from John McCutchan \u003cjohn@johnmccutchan.com\u003e.\n\nReturn -EINVAL if we have not passed in enough buffer space to read a single\ninotify event, rather than 0 which indicates that there is nothing to read.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: \"John McCutchan\" \u003cjohn@johnmccutchan.com\u003e\nCc: Ryan \u003cwolf0403@hotmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f7fc9e4d03987fe29f6dd4aa67e4c56eb7ecb05",
      "tree": "51763269e44eb9bf4d0f8c529577489902850cf9",
      "parents": [
        "b65d34fd465f19fbe2f32f2205a9a06ca7c2bdeb"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:35 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:41 2006 -0800"
      },
      "message": "[PATCH] VFS: change struct file to use struct path\n\nThis patch changes struct file to use struct path instead of having\nindependent pointers to struct dentry and struct vfsmount, and converts all\nusers of f_{dentry,vfsmnt} in fs/ to use f_path.{dentry,mnt}.\n\nAdditionally, it adds two #define\u0027s to make the transition easier for users of\nthe f_dentry and f_vfsmnt.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "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": "5b6509aa8c2f292caea7c0602ec361f920951508",
      "tree": "0edf596a30b5e121c16d1868a0a284eced177f58",
      "parents": [
        "70ea91f17f7454bc7a285817e883eace2597984f"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Jul 30 03:03:54 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 31 13:28:41 2006 -0700"
      },
      "message": "[PATCH] inotify: fix deadlock found by lockdep\n\nThis is a real deadlock, a nice complex one:\n(warning: long explanation follows so that Andrew can have a complete\npatch description)\n\nit\u0027s an ABCDA deadlock:\n\nA iprune_mutex\nB inode-\u003einotify_mutex\nC ih-\u003emutex\nD dev-\u003eev_mutex\n\nThe AB relationship comes straight from invalidate_inodes()\n\nint invalidate_inodes(struct super_block * sb)\n{\n        int busy;\n        LIST_HEAD(throw_away);\n\n        mutex_lock(\u0026iprune_mutex);\n        spin_lock(\u0026inode_lock);\n        inotify_unmount_inodes(\u0026sb-\u003es_inodes);\n\nwhere inotify_umount_inodes() takes the\n                mutex_lock(\u0026inode-\u003einotify_mutex);\n\nThe BC relationship comes directly from inotify_find_update_watch():\ns32 inotify_find_update_watch(struct inotify_handle *ih, struct inode *inode,\n                              u32 mask)\n{\n   ...\n        mutex_lock(\u0026inode-\u003einotify_mutex);\n        mutex_lock(\u0026ih-\u003emutex);\n\nThe CD relationship comes from inotify_rm_wd:\ninotify_rm_wd does\n        mutex_lock(\u0026inode-\u003einotify_mutex);\n        mutex_lock(\u0026ih-\u003emutex)\nand then calls inotify_remove_watch_locked() which calls\nnotify_dev_queue_event() which does\n\t        mutex_lock(\u0026dev-\u003eev_mutex);\n\n(this strictly is a BCD relationship)\n\nThe DA relationship comes from the most interesting part:\n\n  [\u003cffffffff8022d9f2\u003e] shrink_icache_memory+0x42/0x270\n  [\u003cffffffff80240dc4\u003e] shrink_slab+0x11d/0x1c9\n  [\u003cffffffff802b5104\u003e] try_to_free_pages+0x187/0x244\n  [\u003cffffffff8020efed\u003e] __alloc_pages+0x1cd/0x2e0\n  [\u003cffffffff8025e1f8\u003e] cache_alloc_refill+0x3f8/0x821\n  [\u003cffffffff8020a5e5\u003e] kmem_cache_alloc+0x85/0xcb\n  [\u003cffffffff802db027\u003e] kernel_event+0x2e/0x122\n  [\u003cffffffff8021d61c\u003e] inotify_dev_queue_event+0xcc/0x140\n\ninotify_dev_queue_event schedules a kernel_event which does a\nkmem_cache_alloc( , GFP_KERNEL) which may try to shrink slabs, including\nthe inode cache .. which then takes iprune_mutex.\n\nAnd voila, there is an AB, a BC, a CD relationship (even a direct BCD),\nand also now a DA relationship -\u003e a circular type AB-BA deadlock but\ninvolving 4 locks.\n\nThe solution is simple: kernel_event() is NOT allowed to use GFP_KERNEL,\nbut must use GFP_NOFS to not cause recursion into the VFS.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Robert Love \u003crml@novell.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": "a9dc971d3fdb857a2bcd6d53238125a2cd31d5f4",
      "tree": "02e8816f583b5ca40da5789ab9e8d7de9b3ed598",
      "parents": [
        "7c29772288b7026504cfe75bfd90d40fbd1574bf"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Thu Jun 01 13:11:03 2006 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 20 05:25:18 2006 -0400"
      },
      "message": "[PATCH] inotify (3/5): add interfaces to kernel API\n\nAdd inotify_init_watch() so caller can use inotify_watch refcounts\nbefore calling inotify_add_watch().\n\nAdd inotify_find_watch() to find an existing watch for an (ih,inode)\npair.  This is similar to inotify_find_update_watch(), but does not\nupdate the watch\u0027s mask if one is found.\n\nAdd inotify_rm_watch() to remove a watch via the watch pointer instead\nof the watch descriptor.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nAcked-by: Robert Love \u003crml@novell.com\u003e\nAcked-by: John McCutchan \u003cjohn@johnmccutchan.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7c29772288b7026504cfe75bfd90d40fbd1574bf",
      "tree": "dfc0cfef97c4c5fdbd87bbd9abdbf44bcd21c906",
      "parents": [
        "2d9048e201bfb67ba21f05e647b1286b8a4a5667"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Thu Jun 01 13:11:01 2006 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 20 05:25:18 2006 -0400"
      },
      "message": "[PATCH] inotify (2/5): add name\u0027s inode to event handler\n\nWhen an inotify event includes a dentry name, also include the inode\nassociated with that name.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nAcked-by: Robert Love \u003crml@novell.com\u003e\nAcked-by: John McCutchan \u003cjohn@johnmccutchan.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2d9048e201bfb67ba21f05e647b1286b8a4a5667",
      "tree": "1df2ca6780d403f3209cf445f8b0b27f45098434",
      "parents": [
        "90204e0b7b51e9f2a6905adca12dc331128602c7"
      ],
      "author": {
        "name": "Amy Griffis",
        "email": "amy.griffis@hp.com",
        "time": "Thu Jun 01 13:10:59 2006 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 20 05:25:17 2006 -0400"
      },
      "message": "[PATCH] inotify (1/5): split kernel API from userspace support\n\nThe following series of patches introduces a kernel API for inotify,\nmaking it possible for kernel modules to benefit from inotify\u0027s\nmechanism for watching inodes.  With these patches, inotify will\nmaintain for each caller a list of watches (via an embedded struct\ninotify_watch), where each inotify_watch is associated with a\ncorresponding struct inode.  The caller registers an event handler and\nspecifies for which filesystem events their event handler should be\ncalled per inotify_watch.\n\nSigned-off-by: Amy Griffis \u003camy.griffis@hp.com\u003e\nAcked-by: Robert Love \u003crml@novell.com\u003e\nAcked-by: John McCutchan \u003cjohn@johnmccutchan.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ]
}
