)]}'
{
  "log": [
    {
      "commit": "bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3",
      "tree": "ef5341c7747f809aec7ae233f6e3ef90af39be5f",
      "parents": [
        "f9b5570d7fdedff32a2e78102bfb54cd1b12b289"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:46 2011 -0400"
      },
      "message": "fs: kill i_alloc_sem\n\ni_alloc_sem is a rather special rw_semaphore.  It\u0027s the last one that may\nbe released by a non-owner, and it\u0027s write side is always mirrored by\nreal exclusion.  It\u0027s intended use it to wait for all pending direct I/O\nrequests to finish before starting a truncate.\n\nReplace it with a hand-grown construct:\n\n - exclusion for truncates is already guaranteed by i_mutex, so it can\n   simply fall way\n - the reader side is replaced by an i_dio_count member in struct inode\n   that counts the number of pending direct I/O requests.  Truncate can\u0027t\n   proceed as long as it\u0027s non-zero\n - when i_dio_count reaches non-zero we wake up a pending truncate using\n   wake_up_bit on a new bit in i_flags\n - new references to i_dio_count can\u0027t appear while we are waiting for\n   it to read zero because the direct I/O count always needs i_mutex\n   (or an equivalent like XFS\u0027s i_iolock) for starting a new operation.\n\nThis scheme is much simpler, and saves the space of a spinlock_t and a\nstruct list_head in struct inode (typically 160 bits on a non-debug 64-bit\nsystem).\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f9b5570d7fdedff32a2e78102bfb54cd1b12b289",
      "tree": "0bbe650c809d96b25d746c400e316c3ad71b4097",
      "parents": [
        "9ea7df534ed2a18157434a496a12cf073ca00c52"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:42 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:45 2011 -0400"
      },
      "message": "fs: simplify handling of zero sized reads in __blockdev_direct_IO\n\nReject zero sized reads as soon as we know our I/O length, and don\u0027t\nborther with locks or allocations that might have to be cleaned up\notherwise.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9ea7df534ed2a18157434a496a12cf073ca00c52",
      "tree": "f8fa09102093cbc60249f96ec4fb91985ae8659b",
      "parents": [
        "582686915803e34adc8fdcd90bff7ca7f6a42221"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 24 14:29:41 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:45 2011 -0400"
      },
      "message": "ext4: Rewrite ext4_page_mkwrite() to use generic helpers\n\nRewrite ext4_page_mkwrite() to use __block_page_mkwrite() helper. This\nremoves the need of using i_alloc_sem to avoid races with truncate which\nseems to be the wrong locking order according to lock ordering documented in\nmm/rmap.c. Also calling ext4_da_write_begin() as used by the old code seems to\nbe problematic because we can decide to flush delay-allocated blocks which\nwill acquire s_umount semaphore - again creating unpleasant lock dependency\nif not directly a deadlock.\n\nAlso add a check for frozen filesystem so that we don\u0027t busyloop in page fault\nwhen the filesystem is frozen.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "582686915803e34adc8fdcd90bff7ca7f6a42221",
      "tree": "5a522cb6dbc41eaac987dbf15a2cbae35b2544cc",
      "parents": [
        "8c5dc70aae29d2571c0f461d69b37e4e6e01ff4c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:40 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:44 2011 -0400"
      },
      "message": "fat: remove i_alloc_sem abuse\n\nAdd a new rw_semaphore to protect bmap against truncate.  Previous\ni_alloc_sem was abused for this, but it\u0027s going away in this series.\n\nNote that we can\u0027t simply use i_mutex, given that the swapon code\ncalls -\u003ebmap under it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8c5dc70aae29d2571c0f461d69b37e4e6e01ff4c",
      "tree": "8f8ef804a7e0df8b432d042d0b029515a5a8ada5",
      "parents": [
        "e46ebd27823b27273da780376d54c080250ff1a2"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@distanz.ch",
        "time": "Fri Jul 01 13:44:51 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:43 2011 -0400"
      },
      "message": "VFS: Fixup kerneldoc for generic_permission()\n\nThe flags parameter went away in\nd749519b444db985e40b897f73ce1898b11f997e\n\nSigned-off-by: Tobias Klauser \u003ctklauser@distanz.ch\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e46ebd27823b27273da780376d54c080250ff1a2",
      "tree": "cbc3b65326f1fe006284869bd180481fa195340c",
      "parents": [
        "8daaa83145ef1f0a146680618328dbbd0fa76939"
      ],
      "author": {
        "name": "Tomasz Stanislawski",
        "email": "t.stanislaws@samsung.com",
        "time": "Tue Jul 12 11:27:20 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:43 2011 -0400"
      },
      "message": "anonfd: fix missing declaration\n\nThe forward declaration of struct file_operations is\nadded to avoid compilation warnings.\n\nSigned-off-by: Tomasz Stanislawski \u003ct.stanislaws@samsung.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8daaa83145ef1f0a146680618328dbbd0fa76939",
      "tree": "8ca49f03ed2fc4dada7283a6e109b13e3fb5501e",
      "parents": [
        "8ab47664d51a69ea79fe70bb07ca80664f74f76b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:46 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:42 2011 -0400"
      },
      "message": "xfs: make use of new shrinker callout for the inode cache\n\nConvert the inode reclaim shrinker to use the new per-sb shrinker\noperations. This allows much bigger reclaim batches to be used, and\nallows the XFS inode cache to be shrunk in proportion with the VFS\ndentry and inode caches. This avoids the problem of the VFS caches\nbeing shrunk significantly before the XFS inode cache is shrunk\nresulting in imbalances in the caches during reclaim.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8ab47664d51a69ea79fe70bb07ca80664f74f76b",
      "tree": "a0cc73a909840edfb23b4b4490c39fd222cce0fa",
      "parents": [
        "0e1fdafd93980eac62e778798549ce0f6073905c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:45 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:41 2011 -0400"
      },
      "message": "vfs: increase shrinker batch size\n\nNow that the per-sb shrinker is responsible for shrinking 2 or more\ncaches, increase the batch size to keep econmies of scale for\nshrinking each cache.  Increase the shrinker batch size to 1024\nobjects.\n\nTo allow for a large increase in batch size, add a conditional\nreschedule to prune_icache_sb() so that we don\u0027t hold the LRU spin\nlock for too long. This mirrors the behaviour of the\n__shrink_dcache_sb(), and allows us to increase the batch size\nwithout needing to worry about problems caused by long lock hold\ntimes.\n\nTo ensure that filesystems using the per-sb shrinker callouts don\u0027t\ncause problems, document that the object freeing method must\nreschedule appropriately inside loops.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0e1fdafd93980eac62e778798549ce0f6073905c",
      "tree": "a8b21525d195d436fa738e9a470e64eaa21e6736",
      "parents": [
        "4f8c19fdf3f97402b68f058b1c72a6c7166c9e59"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:44 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:41 2011 -0400"
      },
      "message": "superblock: add filesystem shrinker operations\n\nNow we have a per-superblock shrinker implementation, we can add a\nfilesystem specific callout to it to allow filesystem internal\ncaches to be shrunk by the superblock shrinker.\n\nRather than perpetuate the multipurpose shrinker callback API (i.e.\nnr_to_scan \u003d\u003d 0 meaning \"tell me how many objects freeable in the\ncache), two operations will be added. The first will return the\nnumber of objects that are freeable, the second is the actual\nshrinker call.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4f8c19fdf3f97402b68f058b1c72a6c7166c9e59",
      "tree": "1e986c639955955f6191c46bcfa831e6bb466d60",
      "parents": [
        "b0d40c92adafde7c2d81203ce7c1c69275f41140"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:43 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:40 2011 -0400"
      },
      "message": "inode: remove iprune_sem\n\nNow that we have per-sb shrinkers with a lifecycle that is a subset\nof the superblock lifecycle and can reliably detect a filesystem\nbeing unmounted, there is not longer any race condition for the\niprune_sem to protect against. Hence we can remove it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0d40c92adafde7c2d81203ce7c1c69275f41140",
      "tree": "f75a19dcd1a37aff23dc43323b58f014b1297c6b",
      "parents": [
        "12ad3ab66103e6582ca69c0c9de18b13487eaaef"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:42 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:10 2011 -0400"
      },
      "message": "superblock: introduce per-sb cache shrinker infrastructure\n\nWith context based shrinkers, we can implement a per-superblock\nshrinker that shrinks the caches attached to the superblock. We\ncurrently have global shrinkers for the inode and dentry caches that\nsplit up into per-superblock operations via a coarse proportioning\nmethod that does not batch very well.  The global shrinkers also\nhave a dependency - dentries pin inodes - so we have to be very\ncareful about how we register the global shrinkers so that the\nimplicit call order is always correct.\n\nWith a per-sb shrinker callout, we can encode this dependency\ndirectly into the per-sb shrinker, hence avoiding the need for\nstrictly ordering shrinker registrations. We also have no need for\nany proportioning code for the shrinker subsystem already provides\nthis functionality across all shrinkers. Allowing the shrinker to\noperate on a single superblock at a time means that we do less\nsuperblock list traversals and locking and reclaim should batch more\neffectively. This should result in less CPU overhead for reclaim and\npotentially faster reclaim of items from each filesystem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "12ad3ab66103e6582ca69c0c9de18b13487eaaef",
      "tree": "52d1ecd11d48faa7e6f8d6600c8e76807b0985a5",
      "parents": [
        "09cc9fc7a7c3d872065426d7fb0f0ad6d3eb90fc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:41 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:38 2011 -0400"
      },
      "message": "superblock: move pin_sb_for_writeback() to fs/super.c\n\nThe per-sb shrinker has the same requirement as the writeback\nthreads of ensuring that the superblock is usable and pinned for the\ntime it takes to run the work. Both need to take a passive reference\nto the sb, take a read lock on the s_umount lock and then only\ncontinue if an unmount is not in progress.\n\npin_sb_for_writeback() does this exactly, so move it to fs/super.c\nand rename it to grab_super_passive() and exporting it via\nfs/internal.h for all the VFS code to be able to use.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "09cc9fc7a7c3d872065426d7fb0f0ad6d3eb90fc",
      "tree": "79f6f835dd009ac34bd35ee3ee61e616ec2b255a",
      "parents": [
        "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:40 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:36 2011 -0400"
      },
      "message": "inode: move to per-sb LRU locks\n\nWith the inode LRUs moving to per-sb structures, there is no longer\na need for a global inode_lru_lock. The locking can be made more\nfine-grained by moving to a per-sb LRU lock, isolating the LRU\noperations of different filesytsems completely from each other.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7",
      "tree": "08917a620b6d15076223c1ef75996a1a76a13abd",
      "parents": [
        "fcb94f72d3e0f4f34b326c2986da8e5996daf72c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:39 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:35 2011 -0400"
      },
      "message": "inode: Make unused inode LRU per superblock\n\nThe inode unused list is currently a global LRU. This does not match\nthe other global filesystem cache - the dentry cache - which uses\nper-superblock LRU lists. Hence we have related filesystem object\ntypes using different LRU reclaimation schemes.\n\nTo enable a per-superblock filesystem cache shrinker, both of these\ncaches need to have per-sb unused object LRU lists. Hence this patch\nconverts the global inode LRU to per-sb LRUs.\n\nThe patch only does rudimentary per-sb propotioning in the shrinker\ninfrastructure, as this gets removed when the per-sb shrinker\ncallouts are introduced later on.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fcb94f72d3e0f4f34b326c2986da8e5996daf72c",
      "tree": "a18da3a56f447264c0dc2501a41afc5890afc78c",
      "parents": [
        "e9299f5058595a655c3b207cda9635e28b9197e6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:38 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:34 2011 -0400"
      },
      "message": "inode: convert inode_stat.nr_unused to per-cpu counters\n\nBefore we split up the inode_lru_lock, the unused inode counter\nneeds to be made independent of the global inode_lru_lock. Convert\nit to per-cpu counters to do this.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e9299f5058595a655c3b207cda9635e28b9197e6",
      "tree": "b31a4dc5cab98ee1701313f45e92e583c2d76f63",
      "parents": [
        "3567b59aa80ac4417002bf58e35dce5c777d4164"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:37 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:32 2011 -0400"
      },
      "message": "vmscan: add customisable shrinker batch size\n\nFor shrinkers that have their own cond_resched* calls, having\nshrink_slab break the work down into small batches is not\npaticularly efficient. Add a custom batchsize field to the struct\nshrinker so that shrinkers can use a larger batch size if they\ndesire.\n\nA value of zero (uninitialised) means \"use the default\", so\nbehaviour is unchanged by this patch.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3567b59aa80ac4417002bf58e35dce5c777d4164",
      "tree": "0d450f4cd1fae3c01cbc5ccaefd4cd519029b0f6",
      "parents": [
        "acf92b485cccf028177f46918e045c0c4e80ee10"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:36 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:31 2011 -0400"
      },
      "message": "vmscan: reduce wind up shrinker-\u003enr when shrinker can\u0027t do work\n\nWhen a shrinker returns -1 to shrink_slab() to indicate it cannot do\nany work given the current memory reclaim requirements, it adds the\nentire total_scan count to shrinker-\u003enr. The idea ehind this is that\nwhenteh shrinker is next called and can do work, it will do the work\nof the previously aborted shrinker call as well.\n\nHowever, if a filesystem is doing lots of allocation with GFP_NOFS\nset, then we get many, many more aborts from the shrinkers than we\ndo successful calls. The result is that shrinker-\u003enr winds up to\nit\u0027s maximum permissible value (twice the current cache size) and\nthen when the next shrinker call that can do work is issued, it\nhas enough scan count built up to free the entire cache twice over.\n\nThis manifests itself in the cache going from full to empty in a\nmatter of seconds, even when only a small part of the cache is\nneeded to be emptied to free sufficient memory.\n\nUnder metadata intensive workloads on ext4 and XFS, I\u0027m seeing the\nVFS caches increase memory consumption up to 75% of memory (no page\ncache pressure) over a period of 30-60s, and then the shrinker\nempties them down to zero in the space of 2-3s. This cycle repeats\nover and over again, with the shrinker completely trashing the inode\nand dentry caches every minute or so the workload continues.\n\nThis behaviour was made obvious by the shrink_slab tracepoints added\nearlier in the series, and made worse by the patch that corrected\nthe concurrent accounting of shrinker-\u003enr.\n\nTo avoid this problem, stop repeated small increments of the total\nscan value from winding shrinker-\u003enr up to a value that can cause\nthe entire cache to be freed. We still need to allow it to wind up,\nso use the delta as the \"large scan\" threshold check - if the delta\nis more than a quarter of the entire cache size, then it is a large\nscan and allowed to cause lots of windup because we are clearly\nneeding to free lots of memory.\n\nIf it isn\u0027t a large scan then limit the total scan to half the size\nof the cache so that windup never increases to consume the whole\ncache. Reducing the total scan limit further does not allow enough\nwind-up to maintain the current levels of performance, whilst a\nhigher threshold does not prevent the windup from freeing the entire\ncache under sustained workloads.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "acf92b485cccf028177f46918e045c0c4e80ee10",
      "tree": "7da97439b5388d143cf414874572f1b2da7f3fe3",
      "parents": [
        "095760730c1047c69159ce88021a7fa3833502c8"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:35 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:29 2011 -0400"
      },
      "message": "vmscan: shrinker-\u003enr updates race and go wrong\n\nshrink_slab() allows shrinkers to be called in parallel so the\nstruct shrinker can be updated concurrently. It does not provide any\nexclusio for such updates, so we can get the shrinker-\u003enr value\nincreasing or decreasing incorrectly.\n\nAs a result, when a shrinker repeatedly returns a value of -1 (e.g.\na VFS shrinker called w/ GFP_NOFS), the shrinker-\u003enr goes haywire,\nsometimes updating with the scan count that wasn\u0027t used, sometimes\nlosing it altogether. Worse is when a shrinker does work and that\nupdate is lost due to racy updates, which means the shrinker will do\nthe work again!\n\nFix this by making the total_scan calculations independent of\nshrinker-\u003enr, and making the shrinker-\u003enr updates atomic w.r.t. to\nother updates via cmpxchg loops.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "095760730c1047c69159ce88021a7fa3833502c8",
      "tree": "7cee34087a3e0d3d14691075b0ea614846c87d7c",
      "parents": [
        "a9049376ee05bf966bfe2b081b5071326856890a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:34 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:27 2011 -0400"
      },
      "message": "vmscan: add shrink_slab tracepoints\n\nIt is impossible to understand what the shrinkers are actually doing\nwithout instrumenting the code, so add a some tracepoints to allow\ninsight to be gained.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9049376ee05bf966bfe2b081b5071326856890a",
      "tree": "efb3cbfc7760537f201bb28dacbb0d39ec39f04c",
      "parents": [
        "0c1aa9a952c3608eb17bf990466f1491d1ee8b6c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 21:20:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:26 2011 -0400"
      },
      "message": "make d_splice_alias(ERR_PTR(err), dentry) \u003d ERR_PTR(err)\n\n... and simplify the living hell out of callers\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0c1aa9a952c3608eb17bf990466f1491d1ee8b6c",
      "tree": "93c044f5700db46f056fb7f57924ff9f9f8fee98",
      "parents": [
        "5b4b299cc7b6adfb9401bf7f826a80f190b971be"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 20:57:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:24 2011 -0400"
      },
      "message": "deuglify squashfs_lookup()\n\nd_splice_alias(NULL, dentry) is equivalent to d_add(dentry, NULL), NULL\nso no need for that if (inode) ... in there (or ERR_PTR(0), for that\nmatter)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5b4b299cc7b6adfb9401bf7f826a80f190b971be",
      "tree": "f897ca34aa49f28292f4951ca00a71efac7f24aa",
      "parents": [
        "e7f59097071f2e193e900093742a4be85839f3d9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 18:43:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:23 2011 -0400"
      },
      "message": "nfsd4_list_rec_dir(): don\u0027t bother with reopening rec_file\n\njust rewind it to the beginning before vfs_readdir() and be\ndone with that...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7f59097071f2e193e900093742a4be85839f3d9",
      "tree": "35cc747b65d29fdc4f6dea472bf75b540da20453",
      "parents": [
        "0ee5dc676a5f8fadede608c7281dfedb1ae714ea"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:45:59 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:21 2011 -0400"
      },
      "message": "kill useless checks for sb-\u003es_op \u003d\u003d NULL\n\nnever is...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0ee5dc676a5f8fadede608c7281dfedb1ae714ea",
      "tree": "887896f0e1b51f39e9be21a1e8d960ec50a817a7",
      "parents": [
        "fb408e6ccc32404a05783911b6f3fed56bd17b06"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:44:25 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:20 2011 -0400"
      },
      "message": "btrfs: kill magical embedded struct superblock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fb408e6ccc32404a05783911b6f3fed56bd17b06",
      "tree": "ad19408c2e4b2f8eaac9e3dc541f432fc85bc2fd",
      "parents": [
        "a4464dbc0ca6a3ab8e9d1206bc05059dae2a559d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:12:51 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:19 2011 -0400"
      },
      "message": "get rid of pointless checks for dentry-\u003esb \u003d\u003d NULL\n\nit never is...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4464dbc0ca6a3ab8e9d1206bc05059dae2a559d",
      "tree": "d3c9332ab72cf5a4eba483ba1ff83c54ca4c42a0",
      "parents": [
        "e3c3d9c838d48c0341c40ea45ee087e3d8c8ea39"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:03:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:17 2011 -0400"
      },
      "message": "Make -\u003ed_sb assign-once and always non-NULL\n\nNew helper (non-exported, fs/internal.h-only): __d_alloc(sb, name).\nAllocates dentry, sets its -\u003ed_sb to given superblock and sets\n-\u003ed_op accordingly.  Old d_alloc(NULL, name) callers are converted\nto that (all of them know what superblock they want).  d_alloc()\nitself is left only for parent !\u003d NULl case; uses __d_alloc(),\ninserts result into the list of parent\u0027s children.\n\nNote that now -\u003ed_sb is assign-once and never NULL *and*\n-\u003ed_parent is never NULL either.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e3c3d9c838d48c0341c40ea45ee087e3d8c8ea39",
      "tree": "4ed2993e4c1af8aa725b2bd138c0a6967d33384b",
      "parents": [
        "e0a0124936171af6156b80fe8ac8799f039e767f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 17:14:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:16 2011 -0400"
      },
      "message": "unexport kern_path_parent()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e0a0124936171af6156b80fe8ac8799f039e767f",
      "tree": "5eed31f5b5dbf43f9a4d0e14fb4f9e1f9bcfd6d0",
      "parents": [
        "ed75e95de574c99575e5f3e1d9ca59ea8c12a9cb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 17:00:37 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:14 2011 -0400"
      },
      "message": "switch vfs_path_lookup() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ed75e95de574c99575e5f3e1d9ca59ea8c12a9cb",
      "tree": "9b79ea8f3b30f2589d2edf773307bdc6528ef3e3",
      "parents": [
        "5da4e689449ad99ab31cf2208d99eddfce0498ba"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:53:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:12 2011 -0400"
      },
      "message": "kill lookup_create()\n\nfolded into the only caller (kern_path_create())\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5da4e689449ad99ab31cf2208d99eddfce0498ba",
      "tree": "5cd8ccc145b8b29b3a63dd6252ee921d8e01379b",
      "parents": [
        "69753a0f14d3cb2e8a70e559ef8d409e4deeac8a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:37:12 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:11 2011 -0400"
      },
      "message": "devtmpfs: get rid of bogus mkdir in create_path()\n\nWe do _NOT_ want to mkdir the path itself - we are preparing to\nmknod it, after all.  Normally it\u0027ll fail with -ENOENT and\njust do nothing, but if somebody has created the parent in\nthe meanwhile, we\u0027ll get buggered...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "69753a0f14d3cb2e8a70e559ef8d409e4deeac8a",
      "tree": "e00ca40e65892ff9383bbf2d301d4269dd9327e9",
      "parents": [
        "2780f1ff6aec0cf708a61c022d475bfcaa648965"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:35:45 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:10 2011 -0400"
      },
      "message": "switch devtmpfs to kern_path_create()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2780f1ff6aec0cf708a61c022d475bfcaa648965",
      "tree": "c8c65497d2ab7c56bde6fc6166489d9caf9386e9",
      "parents": [
        "6657719390cd05be45f4e3b501d8bb46889c0a19"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 27 16:25:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:09 2011 -0400"
      },
      "message": "switch devtmpfs object creation/removal to separate kernel thread\n\n... and give it a namespace where devtmpfs would be mounted on root,\nthus avoiding abuses of vfs_path_lookup() (it was never intended to\nbe used with LOOKUP_PARENT).  Games with credentials are also gone.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6657719390cd05be45f4e3b501d8bb46889c0a19",
      "tree": "8d2d97f645b05badd134526659f5d9adc7ab9234",
      "parents": [
        "1ba106818615faddb63ba782f85f3498b9eb61c6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 28 15:41:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:07 2011 -0400"
      },
      "message": "make sure that nsproxy_cache is initialized early enough\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1ba106818615faddb63ba782f85f3498b9eb61c6",
      "tree": "45454702de65167453ebb873e8503456b2d0c640",
      "parents": [
        "dae6ad8f37529963ae7df52baaccf056b38f210e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 26 11:54:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:06 2011 -0400"
      },
      "message": "switch do_spufs_create() to user_path_create(), fix double-unlock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dae6ad8f37529963ae7df52baaccf056b38f210e",
      "tree": "1bfc6f766601e744c2c2c064b97cdefdcca4ad5c",
      "parents": [
        "49084c3bb2055c401f3493c13edae14d49128ca0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 26 11:50:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:05 2011 -0400"
      },
      "message": "new helpers: kern_path_create/user_path_create\n\ncombination of kern_path_parent() and lookup_create().  Does *not*\nexpose struct nameidata to caller.  Syscalls converted to that...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "49084c3bb2055c401f3493c13edae14d49128ca0",
      "tree": "354b13abe17f898bdcb24c11b961095f5023b832",
      "parents": [
        "8aeb376ca0fe61038166c3b8243c678addb80abf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:59:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:03 2011 -0400"
      },
      "message": "kill LOOKUP_CONTINUE\n\nLOOKUP_PARENT is equivalent to it now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8aeb376ca0fe61038166c3b8243c678addb80abf",
      "tree": "daae94f5aebe5decd67ad37dc642090ebaa9dba5",
      "parents": [
        "4352780386139ff33d2203868b392e6535deff61"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:48:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:02 2011 -0400"
      },
      "message": "nfs: LOOKUP_{OPEN,CREATE,EXCL} is set only on the last step\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4352780386139ff33d2203868b392e6535deff61",
      "tree": "5bfc19790fa4c70b9153753d68e3dc11e49f7483",
      "parents": [
        "a127e0af59ab610e8b37ac2dfa4cdb2ec8c8f604"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:45:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:00 2011 -0400"
      },
      "message": "cifs_lookup(): LOOKUP_OPEN is set only on the last component\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a127e0af59ab610e8b37ac2dfa4cdb2ec8c8f604",
      "tree": "9184b632a82441d8f4d8c19514dfad15072d1718",
      "parents": [
        "5c0f360b083fb33d05d1bff4b138b82d715eb419"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:43:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:59 2011 -0400"
      },
      "message": "ceph: LOOKUP_OPEN is set only when it\u0027s the last component\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5c0f360b083fb33d05d1bff4b138b82d715eb419",
      "tree": "3bb7116ffd8613587918501a73fb858c364c6b10",
      "parents": [
        "407938e79edcadba1b5a17cf928584d8a191a8d7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:41:09 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:57 2011 -0400"
      },
      "message": "jfs_ci_revalidate() is safe from RCU mode\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "407938e79edcadba1b5a17cf928584d8a191a8d7",
      "tree": "2d8abfe7d1fb12e6c28370ab44c77516d7b2f3a1",
      "parents": [
        "dd7dd556e45133ef13f2c4bddc0e0b1ac23bc0e4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:37:18 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:56 2011 -0400"
      },
      "message": "LOOKUP_CREATE and LOOKUP_RENAME_TARGET can be set only on the last step\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dd7dd556e45133ef13f2c4bddc0e0b1ac23bc0e4",
      "tree": "4884b6af570a2a0cb01d11f39a38a3a9c73e49ba",
      "parents": [
        "bf6c7f6c7bd0ea779757d35b5fdc9f9157f056b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:17:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:56 2011 -0400"
      },
      "message": "no need to check for LOOKUP_OPEN in -\u003ecreate() instances\n\n... it will be set in nd-\u003eflag for all cases with non-NULL nd\n(i.e. when called from do_last()).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bf6c7f6c7bd0ea779757d35b5fdc9f9157f056b3",
      "tree": "aed90f298856f286f84af6774ea30ade62c95294",
      "parents": [
        "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:08:31 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:54 2011 -0400"
      },
      "message": "don\u0027t pass nameidata to vfs_create() from ecryptfs_create()\n\nInstead of playing with removal of LOOKUP_OPEN, mangling (and\nrestoring) nd-\u003epath, just pass NULL to vfs_create().  The whole\npoint of what\u0027s being done there is to suppress any attempts\nto open file by underlying fs, which is what nd \u003d\u003d NULL indicates.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a",
      "tree": "8cbed05fcd99d24e881e5ea12d8a954865e31085",
      "parents": [
        "554a8b9f54cd7ca2b89f5dc227df08be082fae0d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 19:15:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:52 2011 -0400"
      },
      "message": "don\u0027t transliterate lower bits of -\u003eintent.open.flags to FMODE_...\n\n-\u003ecreate() instances are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "554a8b9f54cd7ca2b89f5dc227df08be082fae0d",
      "tree": "d8188a1503e744fa64dbabe6e585065e5234683b",
      "parents": [
        "f7c85868fcacc331dd3454a4f08f006d7942521f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 23 12:35:50 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:49 2011 -0400"
      },
      "message": "Don\u0027t pass nameidata when calling vfs_create() from mknod()\n\nAll instances can cope with that now (and ceph one actually\nstarts working properly).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f7c85868fcacc331dd3454a4f08f006d7942521f",
      "tree": "03e01b3f96684911c353ce22c1cc757a36616977",
      "parents": [
        "511415980ace0ceecd71088dbe1c7ce4ca7c79fe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:53:18 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:46 2011 -0400"
      },
      "message": "fix mknod() on nfs4 (hopefully)\n\na) check the right flags in -\u003ecreate() (LOOKUP_OPEN, not LOOKUP_CREATE)\nb) default (!LOOKUP_OPEN) open_flags is O_CREAT|O_EXCL|FMODE_READ, not 0\nc) lookup_instantiate_filp() should be done only with LOOKUP_OPEN;\notherwise we need to issue CLOSE, lest we leak stateid on server.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "511415980ace0ceecd71088dbe1c7ce4ca7c79fe",
      "tree": "153510403c8053f3287d304c02609c17d07801d3",
      "parents": [
        "3d4ff43d895c50319af45eb4bf04a4618eccdf76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:47:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:45 2011 -0400"
      },
      "message": "nameidata_to_nfs_open_context() doesn\u0027t need nameidata, actually...\n\njust open flags; switched to passing just those and\nrenamed to create_nfs_open_context()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3d4ff43d895c50319af45eb4bf04a4618eccdf76",
      "tree": "b412cd076920a903a854a20bceed4a0ce511fd13",
      "parents": [
        "82a2c1b77ada3b81911deeb871719ec5ff77f83c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:40:12 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:44 2011 -0400"
      },
      "message": "nfs_open_context doesn\u0027t need struct path either\n\njust dentry, please...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "82a2c1b77ada3b81911deeb871719ec5ff77f83c",
      "tree": "89b0329a54274e51c19c342048e80639bc489129",
      "parents": [
        "643168c2dc0d04cb884ae7bcd1ee19d9ecdff6a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:30:55 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:42 2011 -0400"
      },
      "message": "nfs4_opendata doesn\u0027t need struct path either\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "643168c2dc0d04cb884ae7bcd1ee19d9ecdff6a8",
      "tree": "68c75e2a53096b2f6fe12b3f43b9fdb91d6dc484",
      "parents": [
        "7c97c200e2c5aa8b1067bebb99df0a7c2e12ebf3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 22 18:20:23 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:41 2011 -0400"
      },
      "message": "nfs4_closedata doesn\u0027t need to mess with struct path\n\ninstead of path_get()/path_put(), we can just use nfs_sb_{,de}active()\nto pin the superblock down.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7c97c200e2c5aa8b1067bebb99df0a7c2e12ebf3",
      "tree": "bc486a32cb322a58730be30f5c61d272e3fee54f",
      "parents": [
        "beefebf1aa611242e022e71bae87034f415d3314"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 08:51:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:39 2011 -0400"
      },
      "message": "cifs: fix the type of cifs_demultiplex_thread()\n\n... and get rid of a bogus typecast, while we are at it; it\u0027s not\njust that we want a function returning int and not void, but cast\nto pointer to function taking void * and returning void would be\n(void (*)(void *)) and not (void *)(void *), TYVM...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "beefebf1aa611242e022e71bae87034f415d3314",
      "tree": "87f7aaeda400872f42a3ff5560e8ac995bb08970",
      "parents": [
        "729cdb3a1ee03a4363f9c7e66ddd979727e99e1f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 01:01:59 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:38 2011 -0400"
      },
      "message": "ecryptfs_inode_permission() doesn\u0027t need to bail out on RCU\n\n... now that inode_permission() can take MAY_NOT_BLOCK and handle it\nproperly.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "729cdb3a1ee03a4363f9c7e66ddd979727e99e1f",
      "tree": "6b2e6947e1f58ebcb1aaa2a0f0710ae1fb2d6a1d",
      "parents": [
        "76fe3276be26cff2e609cdcfbc1265cf1dd72b2c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 01:01:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:36 2011 -0400"
      },
      "message": "kill IPERM_FLAG_RCU\n\nnot used anymore\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "76fe3276be26cff2e609cdcfbc1265cf1dd72b2c",
      "tree": "67e25ccf9a76e5cad7bee3087d8f305a9cc1ec8d",
      "parents": [
        "d2d9e9fbc2f8f492dae373482da61d34475c53c1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 21:56:31 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:36 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: document API changes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d2d9e9fbc2f8f492dae373482da61d34475c53c1",
      "tree": "5d881318daae1c85d9544d18500eca4d175e76e7",
      "parents": [
        "4ad5abb3d01a2c10854969b00982fadb130784a6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:55:26 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:34 2011 -0400"
      },
      "message": "merge do_revalidate() into its only caller\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4ad5abb3d01a2c10854969b00982fadb130784a6",
      "tree": "757ad9baeab65982e8c8ed61b222c8969b3dbf43",
      "parents": [
        "d594e7ec4da6c1a527dea4965eee37cd785792b8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:57:03 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:32 2011 -0400"
      },
      "message": "no reason to keep exec_permission() separate now\n\ncache footprint alone makes it a bad idea...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d594e7ec4da6c1a527dea4965eee37cd785792b8",
      "tree": "b1c50c217309934a25449052625747927cbe4b45",
      "parents": [
        "eecdd358b467405a084d400d5ec571bbdbfe97a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:55:42 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:30 2011 -0400"
      },
      "message": "massage generic_permission() to treat directories on a separate path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eecdd358b467405a084d400d5ec571bbdbfe97a3",
      "tree": "357332873b909a19964e77dbae3c4aed5c100dc6",
      "parents": [
        "cf1dd1dae851ce5765cda5de16aa965eef7c2dbf"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:48:41 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:29 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to exec_permission()\n\npass mask instead; kill security_inode_exec_permission() since we can use\nsecurity_inode_permission() instead.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cf1dd1dae851ce5765cda5de16aa965eef7c2dbf",
      "tree": "5ee564e56eca307701ce155e30a2cbb05b9937e3",
      "parents": [
        "e74f71eb78a4a8b9eaf1bc65f20f761648e85f76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:44:08 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:27 2011 -0400"
      },
      "message": "selinux: don\u0027t transliterate MAY_NOT_BLOCK to IPERM_FLAG_RCU\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e74f71eb78a4a8b9eaf1bc65f20f761648e85f76",
      "tree": "7bc7fc1344f5ed6e3ce8132b36125ef5cec6407c",
      "parents": [
        "10556cb21a0d0b24d95f00ea6df16f599a3345b2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:38:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:26 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003einode_permission()\n\npass that via mask instead.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9c2c703929e4c41210cfa6e3f599514421bab8dc",
      "tree": "2086738f22755ad18ba18ab2ee0f2b23d651da60",
      "parents": [
        "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:06:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:19 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: pass MAY_NOT_BLOCK to -\u003echeck_acl()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311",
      "tree": "9c6a5879558b7a189f94eae97ac80268e63fe29b",
      "parents": [
        "178ea73521d64ba41d7aa5488fb9f549c6d4507d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 18:59:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:18 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: MAY_NOT_BLOCK\n\nDuplicate the flags argument into mask bitmap.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "07b8ce1ee87d291ff564c02cf878fae973317a52",
      "tree": "94f07ed2b5d18aef71f1b28193375f88c0c947bc",
      "parents": [
        "f4d6ff89d8e54b68a4322388d26d518d6133fa4e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:52:57 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:14 2011 -0400"
      },
      "message": "lockless get_write_access/deny_write_access\n\nnew helpers: atomic_inc_unless_negative()/atomic_dec_unless_positive()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f4d6ff89d8e54b68a4322388d26d518d6133fa4e",
      "tree": "57f4113a7e5ac2cc0e5a713ac31339f72de797ba",
      "parents": [
        "3bfa784a6539f91a27d7ffdd408efdb638e3bebd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 13:14:21 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:13 2011 -0400"
      },
      "message": "move exec_permission() up to the rest of permission-related functions\n\n... and convert the comment before it into linuxdoc form.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3bfa784a6539f91a27d7ffdd408efdb638e3bebd",
      "tree": "2fb293076c98a4bbc18fd2ddad7fdc4cea08c384",
      "parents": [
        "1b5d783c94c328d406e801566f161adcfb018dda"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 12:55:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:11 2011 -0400"
      },
      "message": "kill file_permission() completely\n\nconvert the last remaining caller to inode_permission()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1b5d783c94c328d406e801566f161adcfb018dda",
      "tree": "e7d27b987e0670099af28db0d6bfcdac33236046",
      "parents": [
        "78f32a9b479e9b9f1ce2bf620a7602c1cdbc4c8e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 12:49:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:10 2011 -0400"
      },
      "message": "consolidate BINPRM_FLAGS_ENFORCE_NONDUMP handling\n\nnew helper: would_dump(bprm, file).  Checks if we are allowed to\nread the file and if we are not - sets ENFORCE_NODUMP.  Exported,\nused in places that previously open-coded the same logics.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "78f32a9b479e9b9f1ce2bf620a7602c1cdbc4c8e",
      "tree": "1c1d61bbe0587edb29f1290efaafcdeee0cb814e",
      "parents": [
        "6f2861097467852f2271c2b40f9c3d1d01757048"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 11:54:42 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:08 2011 -0400"
      },
      "message": "switch path_init() to exec_permission()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6f2861097467852f2271c2b40f9c3d1d01757048",
      "tree": "e0f182d7e29812ce86d5f1876f613c55f30ba49e",
      "parents": [
        "4cf27141cbe0239f48ec6f0b37bad347d51d1785"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 11:49:08 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:07 2011 -0400"
      },
      "message": "switch udf_ioctl() to inode_permission()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4cf27141cbe0239f48ec6f0b37bad347d51d1785",
      "tree": "ef2b247dc3cbbd795331b8937d3c29e5fc3c7b85",
      "parents": [
        "43e15cdbefea4ce6d68113de98d4f61c0cf45687"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 01:50:08 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:05 2011 -0400"
      },
      "message": "make exec_permission(dir) really equivalent to inode_permission(dir, MAY_EXEC)\n\ncapability overrides apply only to the default case; if fs has -\u003epermission()\nthat does _not_ call generic_permission(), we have no business doing them.\nMoreover, if it has -\u003epermission() that does call generic_permission(), we\nhave no need to recheck capabilities.\n\nBesides, the capability overrides should apply only if we got EACCES from\nacl_permission_check(); any other value (-EIO, etc.) should be returned\nto caller, capabilities or not capabilities.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "43e15cdbefea4ce6d68113de98d4f61c0cf45687",
      "tree": "75676aae179fc56bbb9d861c0ab656a9edaa7ca4",
      "parents": [
        "44396f4b5cb8566f7118aec55eeac99be7ad94cb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 20:16:57 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:04 2011 -0400"
      },
      "message": "new helper: iterate_supers_type()\n\nCall the given function for all superblocks of given type.  Function\ngets a superblock (with s_umount locked shared) and (void *) argument\nsupplied by caller of iterator.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "44396f4b5cb8566f7118aec55eeac99be7ad94cb",
      "tree": "dc2fd0d01c634ee9a5f5cfb8ca0d660f060ce188",
      "parents": [
        "e6625fa48e6580a74b7e700efd7e6463e282810b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue May 31 11:58:49 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:03 2011 -0400"
      },
      "message": "fs: add a DCACHE_NEED_LOOKUP flag for d_flags\n\nBtrfs (and I\u0027d venture most other fs\u0027s) stores its indexes in nice disk order\nfor readdir, but unfortunately in the case of anything that stats the files in\norder that readdir spits back (like oh say ls) that means we still have to do\nthe normal lookup of the file, which means looking up our other index and then\nlooking up the inode.  What I want is a way to create dummy dentries when we\nfind them in readdir so that when ls or anything else subsequently does a\nstat(), we already have the location information in the dentry and can go\nstraight to the inode itself.  The lookup stuff just assumes that if it finds a\ndentry it is done, it doesn\u0027t perform a lookup.  So add a DCACHE_NEED_LOOKUP\nflag so that the lookup code knows it still needs to run i_op-\u003elookup() on the\nparent to get the inode for the dentry.  I have tested this with btrfs and I\nwent from something that looks like this\n\nhttp://people.redhat.com/jwhiter/ls-noreada.png\n\nTo this\n\nhttp://people.redhat.com/jwhiter/ls-good.png\n\nThats a savings of 1300 seconds, or 22 minutes.  That is a significant savings.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e6625fa48e6580a74b7e700efd7e6463e282810b",
      "tree": "fdb12c5ca073bd444d9d64dee3f8e34b323aebda",
      "parents": [
        "47126d807ab1ef24e0f02dcca20883e275198fe2",
        "38be7a79f7c99dd01425f19ef6cf744878b6a94b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:10:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:10:28 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: fix file mode calculation\n"
    },
    {
      "commit": "47126d807ab1ef24e0f02dcca20883e275198fe2",
      "tree": "c17b93db77d14239d0dd2d25b084394a645c9733",
      "parents": [
        "4746efded84d7c5a9c8d64d4c6e814ff0cf9fb42",
        "9daedd833a38edd90cf7baa1b1fcf61c3a0721e3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:10:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:10:05 2011 -0700"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc:\n  davinci: DM365 EVM: fix video input mux bits\n  ARM: davinci: Check for NULL return from irq_alloc_generic_chip\n  arm: davinci: Fix low level gpio irq handlers\u0027 argument\n"
    },
    {
      "commit": "4746efded84d7c5a9c8d64d4c6e814ff0cf9fb42",
      "tree": "174f400db27c1a1d9a66407931199aabfdce6bba",
      "parents": [
        "f7b88631a89757d70192044c9d9f2e8d2fc02f2c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Tue Jul 19 08:49:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:09:31 2011 -0700"
      },
      "message": "vmscan: fix a livelock in kswapd\n\nI\u0027m running a workload which triggers a lot of swap in a machine with 4\nnodes.  After I kill the workload, I found a kswapd livelock.  Sometimes\nkswapd3 or kswapd2 are keeping running and I can\u0027t access filesystem,\nbut most memory is free.\n\nThis looks like a regression since commit 08951e545918c159 (\"mm: vmscan:\ncorrect check for kswapd sleeping in sleeping_prematurely\").\n\nNode 2 and 3 have only ZONE_NORMAL, but balance_pgdat() will return 0\nfor classzone_idx.  The reason is end_zone in balance_pgdat() is 0 by\ndefault, if all zones have watermark ok, end_zone will keep 0.\n\nLater sleeping_prematurely() always returns true.  Because this is an\norder 3 wakeup, and if classzone_idx is 0, both balanced_pages and\npresent_pages in pgdat_balanced() are 0.  We add a special case here.\nIf a zone has no page, we think it\u0027s balanced.  This fixes the livelock.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f7b88631a89757d70192044c9d9f2e8d2fc02f2c",
      "tree": "51da597d7625d2428701be146f233cee047425d9",
      "parents": [
        "e501f29c727dea74e2124c584cbab5fa805d489b"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue Jul 19 08:49:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 22:09:30 2011 -0700"
      },
      "message": "fs/libfs.c: fix simple_attr_write() on 32bit machines\n\nAssume that /sys/kernel/debug/dummy64 is debugfs file created by\ndebugfs_create_x64().\n\n\t# cd /sys/kernel/debug\n\t# echo 0x1234567812345678 \u003e dummy64\n\t# cat dummy64\n\t0x0000000012345678\n\n\t# echo 0x80000000 \u003e dummy64\n\t# cat dummy64\n\t0xffffffff80000000\n\nA value larger than INT_MAX cannot be written to the debugfs file created\nby debugfs_create_u64 or debugfs_create_x64 on 32bit machine.  Because\nsimple_attr_write() uses simple_strtol() for the conversion.\n\nTo fix this, use simple_strtoll() instead.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@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": "e501f29c727dea74e2124c584cbab5fa805d489b",
      "tree": "3a5c3611e7fc3ac454fd498b93a521d7a1e2be05",
      "parents": [
        "3a5c3743f15f27237ab025736a981e2d0c9fdfed",
        "59430262401bec02d415179c43dbe5b8819c09ce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 21:50:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 21:50:21 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  vfs: fix race in rcu lookup of pruned dentry\n  Fix cifs_get_root()\n\n[ Edited the last commit to get rid of a \u0027unused variable \"seq\"\u0027\n  warning due to Al editing the patch.  - Linus ]\n"
    },
    {
      "commit": "59430262401bec02d415179c43dbe5b8819c09ce",
      "tree": "18caba988f1fb650bb804727de06adc73953b2c6",
      "parents": [
        "fec11dd9a0109fe52fd631e5c510778d6cbff6cc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 15:43:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 19 21:49:01 2011 -0700"
      },
      "message": "vfs: fix race in rcu lookup of pruned dentry\n\nDon\u0027t update *inode in __follow_mount_rcu() until we\u0027d verified that\nthere is mountpoint there.  Kudos to Hugh Dickins for catching that\none in the first place and eventually figuring out the solution (and\ncatching a braino in the earlier version of patch).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "38be7a79f7c99dd01425f19ef6cf744878b6a94b",
      "tree": "5f31b24e4ecca2564ed01b212e3193ba7b2ed4b6",
      "parents": [
        "d7f124f129a6aea99938e0d4172c741b56fefeda"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 19 11:25:04 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 19 11:25:04 2011 -0700"
      },
      "message": "ceph: fix file mode calculation\n\nopen(2) must always include one of O_RDONLY, O_WRONLY, or O_RDWR.  No need\nfor any O_APPEND special case.\n\nPassing O_WRONLY|O_RDWR is undefined according to the man page, but the\nLinux VFS interprets this as O_RDWR, so we\u0027ll do the same.\n\nThis fixes open(2) with flags O_RDWR|O_APPEND, which was incorrectly being\ntranslated to readonly.\n\nReported-by: Fyodor Ustinov \u003cufm@ufm.su\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9daedd833a38edd90cf7baa1b1fcf61c3a0721e3",
      "tree": "68d1b90f6fbd0eb83c25a29d83c359252a91ca01",
      "parents": [
        "33e1e5e317b0fc78ac6588ec8aa40005bcddd7ce"
      ],
      "author": {
        "name": "Jon Povey",
        "email": "jon.povey@racelogic.co.uk",
        "time": "Tue Jul 19 12:30:11 2011 +0900"
      },
      "committer": {
        "name": "Sekhar Nori",
        "email": "nsekhar@ti.com",
        "time": "Tue Jul 19 14:00:29 2011 +0530"
      },
      "message": "davinci: DM365 EVM: fix video input mux bits\n\nVideo input mux settings for tvp7002 and imager inputs were swapped.\nComment was correct.\n\nTested on EVM with tvp7002 input.\n\nSigned-off-by: Jon Povey \u003cjon.povey@racelogic.co.uk\u003e\nAcked-by: Manjunath Hadli \u003cmanjunath.hadli@ti.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Sekhar Nori \u003cnsekhar@ti.com\u003e\n"
    },
    {
      "commit": "33e1e5e317b0fc78ac6588ec8aa40005bcddd7ce",
      "tree": "001bb1f8b9a2072e3de8dc6ae54f82c8b3f6d4cc",
      "parents": [
        "f299bb9527abfa6ee45a5e26288b5e3a619f01d6"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Sat Jul 16 22:39:35 2011 -0700"
      },
      "committer": {
        "name": "Sekhar Nori",
        "email": "nsekhar@ti.com",
        "time": "Tue Jul 19 12:49:00 2011 +0530"
      },
      "message": "ARM: davinci: Check for NULL return from irq_alloc_generic_chip\n\nAvoid NULL dereference of irq_alloc_generic_chip return in low\nmemory conditions.\n\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\nSigned-off-by: Sekhar Nori \u003cnsekhar@ti.com\u003e\n"
    },
    {
      "commit": "3a5c3743f15f27237ab025736a981e2d0c9fdfed",
      "tree": "13fc4d89901c2e2e187cfb44ab904bc587b0ab9c",
      "parents": [
        "dc6b845044ccb7e9e6f3b7e71bd179b3cf0223b6",
        "680ba7ca630f5816af9c80a946520be76b2167a5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 13:29:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 13:29:26 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  pppoe: Must flush connections when MAC address changes too.\n  include/linux/sdla.h: remove the prototype of sdla()\n  tulip: dmfe: Remove old log spamming pr_debugs\n"
    },
    {
      "commit": "680ba7ca630f5816af9c80a946520be76b2167a5",
      "tree": "e9b80b6e771d3b8e40398755e0743891f9191ab3",
      "parents": [
        "a07c7964a29b6dc515b120f1e1c223ac2f8666f5"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 18 11:48:28 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 18 11:48:28 2011 -0700"
      },
      "message": "pppoe: Must flush connections when MAC address changes too.\n\nKernel bugzilla: 39252\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a07c7964a29b6dc515b120f1e1c223ac2f8666f5",
      "tree": "cf45e084be0437ca921c0623569932bf1d142c1d",
      "parents": [
        "0b8f6273eb6fd0611849d6fb432151f04e042434"
      ],
      "author": {
        "name": "WANG Cong",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Sat Jul 16 22:22:20 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 18 11:06:03 2011 -0700"
      },
      "message": "include/linux/sdla.h: remove the prototype of sdla()\n\n`make headers_check` complains that\n\nlinux-2.6/usr/include/linux/sdla.h:116: userspace cannot reference\nfunction or variable defined in the kernel\n\nthis is due to that there is no such a kernel function,\n\nvoid sdla(void *cfg_info, char *dev, struct frad_conf *conf, int quiet);\n\nI don\u0027t know why we have it in a kernel header, so remove it.\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "fec11dd9a0109fe52fd631e5c510778d6cbff6cc",
      "tree": "2a59d8e2cb0325862740fc24ecb246aa02c8413f",
      "parents": [
        "0916a5e45fbd2604a303c8cc18e6b2b7c815e4c9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 18 13:50:40 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 18 13:51:58 2011 -0400"
      },
      "message": "Fix cifs_get_root()\n\nAdd missing -\u003ei_mutex, convert to lookup_one_len() instead of\n(broken) open-coded analog, cope with getting something like\na//b as relative pathname.  Simplify the hell out of it, while\nwe are there...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nReviewed-by: Jeff Layton \u003cjlayton@redhat.com\u003e\n"
    },
    {
      "commit": "0b8f6273eb6fd0611849d6fb432151f04e042434",
      "tree": "25c5f8cd5fa0116e98006a2086f2e32a1f066f47",
      "parents": [
        "f560f6697f17e2465c8845c09f3a483faef38275"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jul 18 10:44:44 2011 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jul 18 10:44:44 2011 -0700"
      },
      "message": "tulip: dmfe: Remove old log spamming pr_debugs\n\nCommit 726b65ad444d (\"tulip: Convert uses of KERN_DEBUG\") enabled\nsome old previously inactive uses of pr_debug converted by\ncommit dde7c8ef1679 (\"tulip/dmfe.c: Use dev_\u003clevel\u003e and pr_\u003clevel\u003e\").\n\nRemove these pr_debugs.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "dc6b845044ccb7e9e6f3b7e71bd179b3cf0223b6",
      "tree": "324e094803fe8cfcb5c36010490b92d5b6a8c174",
      "parents": [
        "524196d2ad12cfe29e15d3db7b8d678dde35b5f7"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Sun Jul 17 00:24:37 2011 -0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:12:21 2011 -0700"
      },
      "message": "si4713-i2c: avoid potential buffer overflow on si4713\n\nWhile compiling it with Fedora 15, I noticed this issue:\n\n  inlined from ‘si4713_write_econtrol_string’ at drivers/media/radio/si4713-i2c.c:1065:24:\n  arch/x86/include/asm/uaccess_32.h:211:26: error: call to ‘copy_from_user_overflow’ declared with attribute error: copy_from_user() buffer size is not provably correct\n\nCc: stable@kernel.org\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nAcked-by: Sakari Ailus \u003csakari.ailus@maxwell.research.nokia.com\u003e\nAcked-by: Eduardo Valentin \u003cedubezval@gmail.com\u003e\nReviewed-by: Eugene Teo \u003ceugeneteo@kernel.sg\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "524196d2ad12cfe29e15d3db7b8d678dde35b5f7",
      "tree": "7fb051f346c0b17e82aaef55f7e11ab1eb2f7675",
      "parents": [
        "d36c30181c4cf6ead34ae30fa2c777b871225c87",
        "b793eb60a01d5b5e4aaeb2fbc2b036dec0d9f84d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:05:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:05:59 2011 -0700"
      },
      "message": "Merge branch \u0027fix/asoc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027fix/asoc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:\n  ASoC: Correct WM8994 MICBIAS supply widget hookup\n  ASoC: Fix shift in WM8958 accessory detection default implementation\n  ASoC: sh: fsi-hdmi: fixup snd_soc_card name\n  ASoC: sh: fsi-da7210: fixup snd_soc_card name\n  ASoC: sh: fsi-ak4642: fixup snd_soc_card name\n"
    },
    {
      "commit": "d36c30181c4cf6ead34ae30fa2c777b871225c87",
      "tree": "8a2476c0eb6bb83ed5a8b493d79458d0e114a146",
      "parents": [
        "a406721dff91a9a5297d140dbb90327966cf9bc0",
        "0916a5e45fbd2604a303c8cc18e6b2b7c815e4c9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:03:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:03:15 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  hppfs_lookup(): don\u0027t open-code lookup_one_len()\n  hppfs: fix dentry leak\n  cramfs: get_cramfs_inode() returns ERR_PTR() on failure\n  ufs should use d_splice_alias()\n  fix exofs -\u003eget_parent()\n  ceph analog of cifs build_path_from_dentry() race fix\n  cifs: build_path_from_dentry() race fix\n"
    },
    {
      "commit": "a406721dff91a9a5297d140dbb90327966cf9bc0",
      "tree": "43e9910434f91f4c94eed84d937661d4f303eba0",
      "parents": [
        "f560f6697f17e2465c8845c09f3a483faef38275",
        "d3f684f2820a7f42acef68bea6622d9032127fb2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:02:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 18 09:02:58 2011 -0700"
      },
      "message": "Merge branch \u0027hwmon-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging\n\n* \u0027hwmon-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:\n  hwmon: (max1111) Fix race condition causing NULL pointer exception\n  hwmon: (it87) Fix label group removal\n  hwmon: (asus_atk0110) Fix memory leak\n"
    },
    {
      "commit": "0916a5e45fbd2604a303c8cc18e6b2b7c815e4c9",
      "tree": "94846a921e4c8b5c5607c7811e0787e0684a356f",
      "parents": [
        "3cc0658e35124ace881f6942839dcae877c3eaed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 22:27:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 23:22:48 2011 -0400"
      },
      "message": "hppfs_lookup(): don\u0027t open-code lookup_one_len()\n\n... and it\u0027s getting it wrong, too - missing -\u003ed_revalidate() calls when\nit\u0027s dealing with filesystem (procfs) that has non-trivial -\u003ed_revalidate()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3cc0658e35124ace881f6942839dcae877c3eaed",
      "tree": "651cd3a34747a65c966168f1099489a8bc874d82",
      "parents": [
        "0577d1ba411f9c40693b8b3e4aa7e0892cd03091"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 22:24:15 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 23:22:17 2011 -0400"
      },
      "message": "hppfs: fix dentry leak\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0577d1ba411f9c40693b8b3e4aa7e0892cd03091",
      "tree": "1da66779d615071aaa00b12530569e057b0845db",
      "parents": [
        "642c937b4ed2e51d2f2e4c46ab7cd8b5bddf268b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 19:04:14 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 23:22:02 2011 -0400"
      },
      "message": "cramfs: get_cramfs_inode() returns ERR_PTR() on failure\n\n... and we want to report these failures in -\u003elookup() anyway.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "642c937b4ed2e51d2f2e4c46ab7cd8b5bddf268b",
      "tree": "37a1346f5a907ed052bd5f5ab44a3e6668cc12d3",
      "parents": [
        "a803b8067e317832d6a251c5b0486e36a4f81922"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 10:07:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 23:21:35 2011 -0400"
      },
      "message": "ufs should use d_splice_alias()\n\nit\u0027s NFS-exportable, so...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a803b8067e317832d6a251c5b0486e36a4f81922",
      "tree": "db7a40edece0e43f870bc33776bb1a7e4fb13006",
      "parents": [
        "1b71fe2efa31cd18c865db474a4cd473b6ab5281"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 08 20:56:55 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 23:20:29 2011 -0400"
      },
      "message": "fix exofs -\u003eget_parent()\n\nNULL is not a possible return value for that method, TYVM...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f560f6697f17e2465c8845c09f3a483faef38275",
      "tree": "b5b77d5f68ce957598e6b786a78c9dea78632ffa",
      "parents": [
        "3d68bd0010d2c9bc9ad6004fdcc4d6a56dcae199",
        "c2ec9471b5b1307429aef1cfaa2b3ae453a61d6f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 17 12:49:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 17 12:49:55 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:\n  [CIFS] update cifs to version 1.74\n  [CIFS] update limit for snprintf in cifs_construct_tcon\n  cifs: Fix signing failure when server mandates signing for NTLMSSP\n"
    },
    {
      "commit": "3d68bd0010d2c9bc9ad6004fdcc4d6a56dcae199",
      "tree": "013ac9bd1bc68d1d9dda17346eefc617aeb47265",
      "parents": [
        "efcbae253f97bf82e7befd372da3ad5995a53f1a",
        "05e9a2f67849e427f8900bad0a3f2a939e8dd3d6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 17 12:49:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 17 12:49:28 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  Bluetooth: Fix crash with incoming L2CAP connections\n  Bluetooth: Fix regression in L2CAP connection procedure\n  gianfar: rx parser\n  r6040: only disable RX interrupt if napi_schedule_prep is successful\n  net: remove NETIF_F_ALL_TX_OFFLOADS\n  net: sctp: fix checksum marking for outgoing packets\n"
    }
  ],
  "next": "efcbae253f97bf82e7befd372da3ad5995a53f1a"
}
