)]}'
{
  "log": [
    {
      "commit": "32385c7cf60a78375b63afc4f02001df84dfd1a0",
      "tree": "6419ac3c77cb38bac389e5efc59928e01780a2ae",
      "parents": [
        "3ec762ad8be364c2fadfe0d6b2cc6d4d3b5e1b54"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Fri Jan 14 13:12:45 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 13:12:45 2011 +0000"
      },
      "message": "kernel: fix hlist_bl again\n\n__d_rehash is dereferencing an almost-NULL pointer on my ARM926.\nCONFIG_SMP\u003dn and CONFIG_DEBUG_SPINLOCK\u003dy.\n\nThe faulting instruction is:    strne   r3, [r2, #4]\nand as can be seen from the register dump below, r2 is 0x00000001, hence\nthe faulting 0x00000005 address.\n\n__d_rehash is essentially:\n\n       spin_lock_bucket(b);\n       entry-\u003ed_flags \u0026\u003d ~DCACHE_UNHASHED;\n       hlist_bl_add_head_rcu(\u0026entry-\u003ed_hash, \u0026b-\u003ehead);\n       spin_unlock_bucket(b);\n\nwhich is:\n\n       bit_spin_lock(0, (unsigned long *)\u0026b-\u003ehead.first);\n       entry-\u003ed_flags \u0026\u003d ~DCACHE_UNHASHED;\n       hlist_bl_add_head_rcu(\u0026entry-\u003ed_hash, \u0026b-\u003ehead);\n       __bit_spin_unlock(0, (unsigned long *)\u0026b-\u003ehead.first);\n\nbit_spin_lock(0, ptr) sets bit 0 of *ptr, in this case b-\u003ehead.first if\nCONFIG_SMP or CONFIG_DEBUG_SPINLOCK is set:\n\n#if defined(CONFIG_SMP) || defined(CONFIG_DEBUG_SPINLOCK)\n       while (unlikely(test_and_set_bit_lock(bitnum, addr))) {\n               while (test_bit(bitnum, addr)) {\n                       preempt_enable();\n                       cpu_relax();\n                       preempt_disable();\n               }\n       }\n#endif\n\nSo, b-\u003ehead.first starts off NULL, and becomes a non-NULL (address 1).\nhlist_bl_add_head_rcu() does this:\n\nstatic inline void hlist_bl_add_head_rcu(struct hlist_bl_node *n,\n                                       struct hlist_bl_head *h)\n{\n       first \u003d hlist_bl_first(h);\n       n-\u003enext \u003d first;\n       if (first)\n               first-\u003epprev \u003d \u0026n-\u003enext;\n\nIt is the store to first-\u003epprev which is faulting.\n\nhlist_bl_first():\n\nstatic inline struct hlist_bl_node *hlist_bl_first(struct hlist_bl_head *h)\n{\n       return (struct hlist_bl_node *)\n               ((unsigned long)h-\u003efirst \u0026 ~LIST_BL_LOCKMASK);\n}\n\nbut:\n#if defined(CONFIG_SMP)\n#define LIST_BL_LOCKMASK        1UL\n#else\n#define LIST_BL_LOCKMASK        0UL\n#endif\n\nSo, we have one piece of code which sets bit 0 of addresses, and another\nbit of code which doesn\u0027t clear it before dereferencing the pointer if\n!CONFIG_SMP \u0026\u0026 CONFIG_DEBUG_SPINLOCK.  With the patch below, I can again\nsucessfully boot the kernel on my Versatile PB/926 platform.\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "3ec762ad8be364c2fadfe0d6b2cc6d4d3b5e1b54",
      "tree": "abd1529daad510dbf44a6ebcaa1f680b073eaca6",
      "parents": [
        "7b9337aaf98f9941d0927a75217d3ff31afec609"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Jan 14 11:34:34 2011 +0800"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 08:46:29 2011 +0000"
      },
      "message": "cgroups: Fix a lockdep warning at cgroup removal\n\nCommit 2fd6b7f5 (\"fs: dcache scale subdirs\") forgot to annotate a dentry\nlock, which caused a lockdep warning.\n\nReported-by: Valdis Kletnieks \u003cValdis.Kletnieks@vt.edu\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "7b9337aaf98f9941d0927a75217d3ff31afec609",
      "tree": "d61753169b24d521147116717f310dfb65d3d20d",
      "parents": [
        "f20877d94a74557b7c28b4ed8920d834c31e0ea5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 08:42:43 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 08:42:43 2011 +0000"
      },
      "message": "fs: namei fix -\u003eput_link on wrong inode in do_filp_open\n\nJ. R. Okajima noticed that -\u003eput_link is being attempted on the\nwrong inode, and suggested the way to fix it. I changed it a bit\naccording to Al\u0027s suggestion to keep an explicit link path around.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "f20877d94a74557b7c28b4ed8920d834c31e0ea5",
      "tree": "88ea4019a1a8a0a3b8c2f24479ec44b353928f3f",
      "parents": [
        "657e94b673a805b427903c5628e95348235fad06"
      ],
      "author": {
        "name": "J. R. Okajima",
        "email": "hooanon05@yahoo.co.jp",
        "time": "Fri Jan 14 03:56:04 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 03:56:04 2011 +0000"
      },
      "message": "fs: fix do_last error case when need_reval_dot\n\nWhen open(2) without O_DIRECTORY opens an existing dir, it should return\nEISDIR. In do_last(), the variable \u0027error\u0027 is initialized EISDIR, but it\nis changed by d_revalidate() which returns any positive to represent\n\u0027the target dir is valid.\u0027\n\nShould we keep and return the initialized \u0027error\u0027 in this case.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "657e94b673a805b427903c5628e95348235fad06",
      "tree": "0c174e387cb5d3fd3a2b55e154219cc67b644637",
      "parents": [
        "2c6755988afc003a0332406a134fb6a1626f9b28"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:48:39 2011 +0000"
      },
      "message": "nfs: add missing rcu-walk check\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2c6755988afc003a0332406a134fb6a1626f9b28",
      "tree": "84eea829cab7b28585000f6fd7fe0dc176b746c5",
      "parents": [
        "90dbb77ba48dddb87445d238e84cd137cf97dd98"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:36:43 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@hera.kernel.org",
        "time": "Fri Jan 14 02:36:43 2011 +0000"
      },
      "message": "fs: hlist UP debug fixup\n\nPo-Yu Chuang \u003cratbert.chuang@gmail.com\u003e noticed that hlist_bl_set_first could\ncrash on a UP system when LIST_BL_LOCKMASK is 0, because\n\n\tLIST_BL_BUG_ON(!((unsigned long)h-\u003efirst \u0026 LIST_BL_LOCKMASK));\n\nalways evaulates to true.\n\nFix the expression, and also avoid a dependency between bit spinlock\nimplementation and list bl code (list code shouldn\u0027t know anything\nexcept that bit 0 is set when adding and removing elements). Eventually\nif a good use case comes up, we might use this list to store 1 or more\narbitrary bits of data, so it really shouldn\u0027t be tied to locking either,\nbut for now they are helpful for debugging.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "90dbb77ba48dddb87445d238e84cd137cf97dd98",
      "tree": "446772602e5944075a6c614db05dd06681f3f3d8",
      "parents": [
        "bb20c18db6fbb5e6ba499c76473a487d35073467"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:36:19 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@hera.kernel.org",
        "time": "Fri Jan 14 02:36:19 2011 +0000"
      },
      "message": "fs: fix dropping of rcu-walk from force_reval_path\n\nAs J. R. Okajima noted, force_reval_path passes in the same dentry to\nd_revalidate as the one in the nameidata structure (other callers pass in a\nchild), so the locking breaks. This can oops with a chrooted nfs mount, for\nexample. Similarly there can be other problems with revalidating a dentry\nwhich is already in nameidata of the path walk.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "bb20c18db6fbb5e6ba499c76473a487d35073467",
      "tree": "ca0426f86e5c2a331bd5006d7f16795711b7ade2",
      "parents": [
        "a82416da83722944d78d933301e32e7c5ad70edd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:35:53 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@hera.kernel.org",
        "time": "Fri Jan 14 02:35:53 2011 +0000"
      },
      "message": "fs: force_reval_path drop rcu-walk before d_invalidate\n\nd_revalidate can return in rcu-walk mode even when it returns 0.  We can\u0027t just\ncall any old dcache function on rcu-walk dentry (the dentry is unstable, so\neven through d_lock can safely be taken, the result may no longer be what we\nexpect -- careful re-checks would be required). So just drop rcu in this case.\n\n(I missed this conversion when switching to the rcu-walk convention that Linus\nsuggested)\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "a82416da83722944d78d933301e32e7c5ad70edd",
      "tree": "c2990d561fc5ed703bf46b34122f7a6b81b45dd5",
      "parents": [
        "b3e19d924b6eaf2ca7d22cba99a517c5171007b6"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 14 02:26:53 2011 +0000"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@hera.kernel.org",
        "time": "Fri Jan 14 02:26:53 2011 +0000"
      },
      "message": "fs: small rcu-walk documentation fixes\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b3e19d924b6eaf2ca7d22cba99a517c5171007b6",
      "tree": "8c1fa4074114a883a4e2de2f7d12eb29ed91bdf1",
      "parents": [
        "c6653a838b1b2738561aff0b8c0f62a9b714bdd9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:11 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:33 2011 +1100"
      },
      "message": "fs: scale mntget/mntput\n\nThe problem that this patch aims to fix is vfsmount refcounting scalability.\nWe need to take a reference on the vfsmount for every successful path lookup,\nwhich often go to the same mount point.\n\nThe fundamental difficulty is that a \"simple\" reference count can never be made\nscalable, because any time a reference is dropped, we must check whether that\nwas the last reference. To do that requires communication with all other CPUs\nthat may have taken a reference count.\n\nWe can make refcounts more scalable in a couple of ways, involving keeping\ndistributed counters, and checking for the global-zero condition less\nfrequently.\n\n- check the global sum once every interval (this will delay zero detection\n  for some interval, so it\u0027s probably a showstopper for vfsmounts).\n\n- keep a local count and only taking the global sum when local reaches 0 (this\n  is difficult for vfsmounts, because we can\u0027t hold preempt off for the life of\n  a reference, so a counter would need to be per-thread or tied strongly to a\n  particular CPU which requires more locking).\n\n- keep a local difference of increments and decrements, which allows us to sum\n  the total difference and hence find the refcount when summing all CPUs. Then,\n  keep a single integer \"long\" refcount for slow and long lasting references,\n  and only take the global sum of local counters when the long refcount is 0.\n\nThis last scheme is what I implemented here. Attached mounts and process root\nand working directory references are \"long\" references, and everything else is\na short reference.\n\nThis allows scalable vfsmount references during path walking over mounted\nsubtrees and unattached (lazy umounted) mounts with processes still running\nin them.\n\nThis results in one fewer atomic op in the fastpath: mntget is now just a\nper-CPU inc, rather than an atomic inc; and mntput just requires a spinlock\nand non-atomic decrement in the common case. However code is otherwise bigger\nand heavier, so single threaded performance is basically a wash.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "c6653a838b1b2738561aff0b8c0f62a9b714bdd9",
      "tree": "42ab45defd51c23dde7b91bafe62a28509befaf8",
      "parents": [
        "9d55c369bb5e695e629bc35cba2ef607755b3bee"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:10 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:33 2011 +1100"
      },
      "message": "fs: rename vfsmount counter helpers\n\nSuggested by Andreas, mnt_ prefix is clearer namespace, follows kernel\nconventions better, and is easier for tab complete. I introduced these\nnames so I\u0027ll admit they were not good choices.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "9d55c369bb5e695e629bc35cba2ef607755b3bee",
      "tree": "d97cd498a67f1f7987d4403ef90e399516a3b8c9",
      "parents": [
        "e1bb57826381199cc79fbf44e9dfeee58fc7b339"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:09 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:32 2011 +1100"
      },
      "message": "fs: implement faster dentry memcmp\n\nThe standard memcmp function on a Westmere system shows up hot in\nprofiles in the `git diff` workload (both parallel and single threaded),\nand it is likely due to the costs associated with trapping into\nmicrocode, and little opportunity to improve memory access (dentry\nname is not likely to take up more than a cacheline).\n\nSo replace it with an open-coded byte comparison. This increases code\nsize by 8 bytes in the critical __d_lookup_rcu function, but the\nspeedup is huge, averaging 10 runs of each:\n\ngit diff st   user   sys   elapsed  CPU\nbefore        1.15   2.57  3.82      97.1\nafter         1.14   2.35  3.61      96.8\n\ngit diff mt   user   sys   elapsed  CPU\nbefore        1.27   3.85  1.46     349\nafter         1.26   3.54  1.43     333\n\nElapsed time for single threaded git diff at 95.0% confidence:\n        -0.21  +/- 0.01\n        -5.45% +/- 0.24%\n\nIt\u0027s -0.66% +/- 0.06% elapsed time on my Opteron, so rep cmp costs on the\nfam10h seem to be relatively smaller, but there is still a win.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "e1bb57826381199cc79fbf44e9dfeee58fc7b339",
      "tree": "b2f5edeebc568c3fff4afd799801e9e605b99efc",
      "parents": [
        "4b936885ab04dc6e0bb0ef35e0e23c1a7364d9e5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:08 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:32 2011 +1100"
      },
      "message": "fs: prefetch inode data in dcache lookup\n\nThis makes single threaded git diff -1.25% +/- 0.05% elapsed time on my\n2s12c24t Westmere system, and -0.86% +/- 0.05% on my 2s8c Barcelona, by\nprefetching the important first cacheline of the inode in while we do the\nactual name compare and other operations on the dentry.\n\nThere was no measurable slowdown in the single file stat case, or the creat\ncase (where negative dentries would be common).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "4b936885ab04dc6e0bb0ef35e0e23c1a7364d9e5",
      "tree": "a0173d27c1ce39f173be404d269c2f15144072ab",
      "parents": [
        "873feea09ebc980cbd3631b767356ce1eee65ec1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:07 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:32 2011 +1100"
      },
      "message": "fs: improve scalability of pseudo filesystems\n\nRegardless of how much we possibly try to scale dcache, there is likely\nalways going to be some fundamental contention when adding or removing children\nunder the same parent. Pseudo filesystems do not seem need to have connected\ndentries because by definition they are disconnected.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "873feea09ebc980cbd3631b767356ce1eee65ec1",
      "tree": "59a8fce9b138086abee7cf845f62ff70a390cf81",
      "parents": [
        "ceb5bdc2d246f6d81cf61ed70f325308a11821d2"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:06 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:31 2011 +1100"
      },
      "message": "fs: dcache per-inode inode alias locking\n\ndcache_inode_lock can be replaced with per-inode locking. Use existing\ninode-\u003ei_lock for this. This is slightly non-trivial because we sometimes\nneed to find the inode from the dentry, which requires d_inode to be\nstabilised (either with refcount or d_lock).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ceb5bdc2d246f6d81cf61ed70f325308a11821d2",
      "tree": "65fc9e0227994d4ffc80530dd15bb5a9672a295e",
      "parents": [
        "626d607435617cc0f033522083e2bb195b81813c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:05 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:31 2011 +1100"
      },
      "message": "fs: dcache per-bucket dcache hash locking\n\nWe can turn the dcache hash locking from a global dcache_hash_lock into\nper-bucket locking.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "626d607435617cc0f033522083e2bb195b81813c",
      "tree": "c1decac81fa5218e7391b6e2b75e2642ec4d8f27",
      "parents": [
        "4e35e6070b1ceed89c3bba2af4216c286fb1dafd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:04 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:31 2011 +1100"
      },
      "message": "bit_spinlock: add required includes\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "4e35e6070b1ceed89c3bba2af4216c286fb1dafd",
      "tree": "94bd18604a978380c1fde46a3f188f1639067960",
      "parents": [
        "880566e17c4fce0d998d92610d32fcb9506aa6dd"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:03 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:31 2011 +1100"
      },
      "message": "kernel: add bl_list\n\nIntroduce a type of hlist that can support the use of the lowest bit in the\nhlist_head. This will be subsequently used to implement per-bucket bit spinlock\nfor inode and dentry hashes, and may be useful in other cases such as network\nhashes.\n\nReviewed-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "880566e17c4fce0d998d92610d32fcb9506aa6dd",
      "tree": "74b8adcfea568bd6c99dd73412aedcff3a0e496d",
      "parents": [
        "258a5aa8dfc6294f5f7df892023ee4d3e57c9841"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:02 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:30 2011 +1100"
      },
      "message": "xfs: provide simple rcu-walk ACL implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "258a5aa8dfc6294f5f7df892023ee4d3e57c9841",
      "tree": "101a4b9ee97f7d838b35a906244085873c599d19",
      "parents": [
        "73598611ade7c85f0c3d52ba5130103f6709c6d3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:01 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:30 2011 +1100"
      },
      "message": "btrfs: provide simple rcu-walk ACL implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "73598611ade7c85f0c3d52ba5130103f6709c6d3",
      "tree": "51b54051c2b41cb712db0c47b9e595dafc09c8f3",
      "parents": [
        "1e1743ebe35ec7e3c1fa732408358fbc614cbbe5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:00 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:30 2011 +1100"
      },
      "message": "ext2,3,4: provide simple rcu-walk ACL implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "1e1743ebe35ec7e3c1fa732408358fbc614cbbe5",
      "tree": "9654cd50bb29a4c5ccc498b9b08cc385288bc854",
      "parents": [
        "b74c79e99389cd79b31fcc08f82c24e492e63c7e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:59 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide simple rcu-walk generic_check_acl implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nThis could easily be extended to put acls under RCU and check them\nunder seqlock, if need be. But this implementation is enough to show\nthe rcu-walk aware permissions code for path lookups is working, and\nwill handle cases where there are no ACLs or ACLs in just the final\nelement.\n\nThis patch implicity converts tmpfs to rcu-aware permission check.\nSubsequent patches onvert ext*, xfs, and, btrfs. Each of these uses\nacl/permission code in a different way, so convert them all to provide\ntemplates and proof of concept.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9",
      "tree": "d4630a38c0d683a7e1b8823d7971753719b8a54d",
      "parents": [
        "fb045adb99d9b7c562dc7fef834857f78249daa1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:56 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: cache optimise dentry and inode for rcu-walk\n\nPut dentry and inode fields into top of data structure.  This allows RCU path\ntraversal to perform an RCU dentry lookup in a path walk by touching only the\nfirst 56 bytes of the dentry.\n\nWe also fit in 8 bytes of inline name in the first 64 bytes, so for short\nnames, only 64 bytes needs to be touched to perform the lookup. We should\nget rid of the hash-\u003eprev pointer from the first 64 bytes, and fit 16 bytes\nof name in there, which will take care of 81% rather than 32% of the kernel\ntree.\n\ninode is also rearranged so that RCU lookup will only touch a single cacheline\nin the inode, plus one in the i_ops structure.\n\nThis is important for directory component lookups in RCU path walking. In the\nkernel source, directory names average is around 6 chars, so this works.\n\nWhen we reach the last element of the lookup, we need to lock it and take its\nrefcount which requires another cacheline access.\n\nAlign dentry and inode operations structs, so members will be at predictable\noffsets and we can group common operations into head of structure.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff",
      "tree": "f02e7ee57e6060f0af1bcda281baf2972d2da72f",
      "parents": [
        "c28cc36469554dc55540f059fbdc7fa22a2c31fc"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:54 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache remove d_mounted\n\nRather than keep a d_mounted count in the dentry, set a dentry flag instead.\nThe flag can be cleared by checking the hash table to see if there are any\nmounts left, which is not time critical because it is performed at detach time.\n\nThe mounted state of a dentry is only used to speculatively take a look in the\nmount hash table if it is set -- before following the mount, vfsmount lock is\ntaken and mount re-checked without races.\n\nThis saves 4 bytes on 32-bit, nothing on 64-bit but it does provide a hole I\nmight use later (and some configs have larger than 32-bit spinlocks which might\nmake use of the hole).\n\nAutofs4 conversion and changelog by Ian Kent \u003craven@themaw.net\u003e:\nIn autofs4, when expring direct (or offset) mounts we need to ensure that we\nblock user path walks into the autofs mount, which is covered by another mount.\nTo do this we clear the mounted status so that follows stop before walking into\nthe mount and are essentially blocked until the expire is completed. The\nautomount daemon still finds the correct dentry for the umount due to the\nfollow mount logic in fs/autofs4/root.c:autofs4_follow_link(), which is set as\nan inode operation for direct and offset mounts only and is called following\nthe lookup that stopped at the covered mount.\n\nAt the end of the expire the covering mount probably has gone away so the\nmounted status need not be restored. But we need to check this and only restore\nthe mounted status if the expire failed.\n\nXXX: autofs may not work right if we have other mounts go over the top of it?\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "c28cc36469554dc55540f059fbdc7fa22a2c31fc",
      "tree": "6b867456be48b8633a2d56a99e00bb3faf9dccc7",
      "parents": [
        "31e6b01f4183ff419a6d1f86177cbf4662347cec"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:53 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:27 2011 +1100"
      },
      "message": "fs: fs_struct use seqlock\n\nUse a seqlock in the fs_struct to enable us to take an atomic copy of the\ncomplete cwd and root paths. Use this in the RCU lookup path to avoid a\nthread-shared spinlock in RCU lookup operations.\n\nMulti-threaded apps may now perform path lookups with scalability matching\nmulti-process apps. Operations such as stat(2) become very scalable for\nmulti-threaded workload.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "31e6b01f4183ff419a6d1f86177cbf4662347cec",
      "tree": "e215ec9af88352c55e024f784f3d9f8eb13fab85",
      "parents": [
        "3c22cd5709e8143444a6d08682a87f4c57902df3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:52 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:27 2011 +1100"
      },
      "message": "fs: rcu-walk for path lookup\n\nPerform common cases of path lookups without any stores or locking in the\nancestor dentry elements. This is called rcu-walk, as opposed to the current\nalgorithm which is a refcount based walk, or ref-walk.\n\nThis results in far fewer atomic operations on every path element,\nsignificantly improving path lookup performance. It also avoids cacheline\nbouncing on common dentries, significantly improving scalability.\n\nThe overall design is like this:\n* LOOKUP_RCU is set in nd-\u003eflags, which distinguishes rcu-walk from ref-walk.\n* Take the RCU lock for the entire path walk, starting with the acquiring\n  of the starting path (eg. root/cwd/fd-path). So now dentry refcounts are\n  not required for dentry persistence.\n* synchronize_rcu is called when unregistering a filesystem, so we can\n  access d_ops and i_ops during rcu-walk.\n* Similarly take the vfsmount lock for the entire path walk. So now mnt\n  refcounts are not required for persistence. Also we are free to perform mount\n  lookups, and to assume dentry mount points and mount roots are stable up and\n  down the path.\n* Have a per-dentry seqlock to protect the dentry name, parent, and inode,\n  so we can load this tuple atomically, and also check whether any of its\n  members have changed.\n* Dentry lookups (based on parent, candidate string tuple) recheck the parent\n  sequence after the child is found in case anything changed in the parent\n  during the path walk.\n* inode is also RCU protected so we can load d_inode and use the inode for\n  limited things.\n* i_mode, i_uid, i_gid can be tested for exec permissions during path walk.\n* i_op can be loaded.\n\nWhen we reach the destination dentry, we lock it, recheck lookup sequence,\nand increment its refcount and mountpoint refcount. RCU and vfsmount locks\nare dropped. This is termed \"dropping rcu-walk\". If the dentry refcount does\nnot match, we can not drop rcu-walk gracefully at the current point in the\nlokup, so instead return -ECHILD (for want of a better errno). This signals the\npath walking code to re-do the entire lookup with a ref-walk.\n\nAside from the final dentry, there are other situations that may be encounted\nwhere we cannot continue rcu-walk. In that case, we drop rcu-walk (ie. take\na reference on the last good dentry) and continue with a ref-walk. Again, if\nwe can drop rcu-walk gracefully, we return -ECHILD and do the whole lookup\nusing ref-walk. But it is very important that we can continue with ref-walk\nfor most cases, particularly to avoid the overhead of double lookups, and to\ngain the scalability advantages on common path elements (like cwd and root).\n\nThe cases where rcu-walk cannot continue are:\n* NULL dentry (ie. any uncached path element)\n* parent with d_inode-\u003ei_op-\u003epermission or ACLs\n* dentries with d_revalidate\n* Following links\n\nIn future patches, permission checks and d_revalidate become rcu-walk aware. It\nmay be possible eventually to make following links rcu-walk aware.\n\nUncached path elements will always require dropping to ref-walk mode, at the\nvery least because i_mutex needs to be grabbed, and objects allocated.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "3c22cd5709e8143444a6d08682a87f4c57902df3",
      "tree": "6d245491d9103a1d77a3128ed5d1d996d3794300",
      "parents": [
        "ff0c7d15f9787b7e8c601533c015295cc68329f8"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:51 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:27 2011 +1100"
      },
      "message": "kernel: optimise seqlock\n\nAdd branch annotations for seqlock read fastpath, and introduce\n__read_seqcount_begin and __read_seqcount_end functions, that can avoid the\nsmp_rmb() if used carefully. These will be used by store-free path walking\nalgorithm performance is critical and seqlocks are in use.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ff0c7d15f9787b7e8c601533c015295cc68329f8",
      "tree": "e3db53950b8ed78e542ab35a3cd3a6eaee26eccd",
      "parents": [
        "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:50 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: avoid inode RCU freeing for pseudo fs\n\nPseudo filesystems that don\u0027t put inode on RCU list or reachable by\nrcu-walk dentries do not need to RCU free their inodes.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "77812a1ef139d84270d27faacc0630c887411013",
      "tree": "a051134c0d1c74425a5f60adc0ca252c5db15b35",
      "parents": [
        "ec33679d78f9d653a44ddba10b5fb824c06330a1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:48 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:25 2011 +1100"
      },
      "message": "fs: consolidate dentry kill sequence\n\nThe tricky locking for disposing of a dentry is duplicated 3 times in the\ndcache (dput, pruning a dentry from the LRU, and pruning its ancestors).\nConsolidate them all into a single function dentry_kill.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ec33679d78f9d653a44ddba10b5fb824c06330a1",
      "tree": "5d1530286d1348064020c466427576294def7191",
      "parents": [
        "be182bff72fae6a3eb25624b39170c40b72f0909"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:47 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:25 2011 +1100"
      },
      "message": "fs: use RCU in shrink_dentry_list to reduce lock nesting\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "be182bff72fae6a3eb25624b39170c40b72f0909",
      "tree": "b77ee014d7850c6e57dae7231a38c0c26cd96b38",
      "parents": [
        "89e6054836a7b1e7500cd70a14b5579e752c9250"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:46 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:25 2011 +1100"
      },
      "message": "fs: reduce dcache_inode_lock width in lru scanning\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "89e6054836a7b1e7500cd70a14b5579e752c9250",
      "tree": "b74d2ecd1ac2a571d289e5525a0dc067ec1f35eb",
      "parents": [
        "a734eb458ab2bd11479a27dd54f48e1b26a55845"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:45 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:25 2011 +1100"
      },
      "message": "fs: dcache reduce prune_one_dentry locking\n\nprune_one_dentry can avoid quite a bit of locking in the common case where\nancestors have an elevated refcount. Alternatively, we could have gone the\nother way and made fewer trylocks in the case where d_count goes to zero, but\nis probably less common.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "a734eb458ab2bd11479a27dd54f48e1b26a55845",
      "tree": "425f6173d63a58ec719147764300bb324e1d53e3",
      "parents": [
        "dc0474be3e27463d4d4a2793f82366eed906f223"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:44 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:24 2011 +1100"
      },
      "message": "fs: dcache reduce d_parent locking\n\nUse RCU to simplify locking in dget_parent.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "dc0474be3e27463d4d4a2793f82366eed906f223",
      "tree": "41f75e638442cb343bacdcfbabb17ffc3bd5b4ce",
      "parents": [
        "357f8e658bba8a085c4a5d4331e30894be8096b8"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:43 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:24 2011 +1100"
      },
      "message": "fs: dcache rationalise dget variants\n\ndget_locked was a shortcut to avoid the lazy lru manipulation when we already\nheld dcache_lock (lru manipulation was relatively cheap at that point).\nHowever, how that the lru lock is an innermost one, we never hold it at any\ncaller, so the lock cost can now be avoided. We already have well working lazy\ndcache LRU, so it should be fine to defer LRU manipulations to scan time.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "357f8e658bba8a085c4a5d4331e30894be8096b8",
      "tree": "2182f5cd42a1c142bd2780bdaa7cc7953d9ec924",
      "parents": [
        "89ad485f01fd83c47f17a128db3bd7b89c0f244f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:42 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:24 2011 +1100"
      },
      "message": "fs: dcache reduce dcache_inode_lock\n\ndcache_inode_lock can be avoided in d_delete() and d_materialise_unique()\nin cases where it is not required.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "89ad485f01fd83c47f17a128db3bd7b89c0f244f",
      "tree": "1f9772e3f0dc8ac9392341e677217caf2d9ba36c",
      "parents": [
        "61f3dee4af09528997a970280da240577bf60721"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:41 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:24 2011 +1100"
      },
      "message": "fs: dcache reduce locking in d_alloc\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "61f3dee4af09528997a970280da240577bf60721",
      "tree": "8c916d7c1965303a37f1051aa5d42d8e2b7b115a",
      "parents": [
        "58db63d086790eec2ed433f9d8c4962239809cf8"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:40 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache reduce dput locking\n\nIt is possible to run dput without taking data structure locks up-front. In\nmany cases where we don\u0027t kill the dentry anyway, these locks are not required.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "58db63d086790eec2ed433f9d8c4962239809cf8",
      "tree": "e8fa4238167f92bb0dbded4d2df1498d8c4e9404",
      "parents": [
        "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:39 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache avoid starvation in dcache multi-step operations\n\nLong lived dcache \"multi-step\" operations which retry on rename seq can\nbe starved with a lot of rename activity. If they fail after the 1st pass,\ntake the rename_lock for writing to avoid further starvation.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "949854d02455080d20cd3e1db28a3a18daf7599d",
      "tree": "9b13a6f86c1d0b91e462a471e53b0e717036b18e",
      "parents": [
        "9abca36087288fe28de4749c71ca003d4b9e3ed0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:37 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:22 2011 +1100"
      },
      "message": "fs: Use rename lock and RCU for multi-step operations\n\nThe remaining usages for dcache_lock is to allow atomic, multi-step read-side\noperations over the directory tree by excluding modifications to the tree.\nAlso, to walk in the leaf-\u003eroot direction in the tree where we don\u0027t have\na natural d_lock ordering.\n\nThis could be accomplished by taking every d_lock, but this would mean a\nhuge number of locks and actually gets very tricky.\n\nSolve this instead by using the rename seqlock for multi-step read-side\noperations, retry in case of a rename so we don\u0027t walk up the wrong parent.\nConcurrent dentry insertions are not serialised against.  Concurrent deletes\nare tricky when walking up the directory: our parent might have been deleted\nwhen dropping locks so also need to check and retry for that.\n\nWe can also use the rename lock in cases where livelock is a worry (and it\nis introduced in subsequent patch).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "9abca36087288fe28de4749c71ca003d4b9e3ed0",
      "tree": "1d1b08bdcffb8f8a7be217ee1c017f5154f64f6a",
      "parents": [
        "b23fb0a60379a95e10c671f646b259ea2558421e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:36 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:22 2011 +1100"
      },
      "message": "fs: increase d_name lock coverage\n\nCover d_name with d_lock in more cases, where there may be concurrent\nmodification to it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b23fb0a60379a95e10c671f646b259ea2558421e",
      "tree": "7c3644b91241d32fda502a7be0b78e4c225f8091",
      "parents": [
        "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:35 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:22 2011 +1100"
      },
      "message": "fs: scale inode alias list\n\nAdd a new lock, dcache_inode_lock, to protect the inode\u0027s i_dentry list\nfrom concurrent modification. d_alias is also protected by d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2fd6b7f50797f2e993eea59e0a0b8c6399c811dc",
      "tree": "ce33b94b34844c09103836cf4cfa4364b742f217",
      "parents": [
        "da5029563a0a026c64821b09e8e7b4fd81d3fe1b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:34 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale subdirs\n\nProtect d_subdirs and d_child with d_lock, except in filesystems that aren\u0027t\nusing dcache_lock for these anyway (eg. using i_mutex).\n\nNote: if we change the locking rule in future so that -\u003ed_child protection is\nprovided only with -\u003ed_parent-\u003ed_lock, it may allow us to reduce some locking.\nBut it would be an exception to an otherwise regular locking scheme, so we\u0027d\nhave to see some good results. Probably not worthwhile.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "da5029563a0a026c64821b09e8e7b4fd81d3fe1b",
      "tree": "5d5618e0cb382390073377b1be7d0aa76879ac54",
      "parents": [
        "b7ab39f631f505edc2bbdb86620d5493f995c9da"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:33 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale d_unhashed\n\nProtect d_unhashed(dentry) condition with d_lock. This means keeping\nDCACHE_UNHASHED bit in synch with hash manipulations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b7ab39f631f505edc2bbdb86620d5493f995c9da",
      "tree": "62be97ebc7fc69ceb601f23312d335ebb8038ee7",
      "parents": [
        "2304450783dfde7b0b94ae234edd0dbffa865073"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:32 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:21 2011 +1100"
      },
      "message": "fs: dcache scale dentry refcount\n\nMake d_count non-atomic and protect it with d_lock. This allows us to ensure a\n0 refcount dentry remains 0 without dcache_lock. It is also fairly natural when\nwe start protecting many other dentry members with d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2304450783dfde7b0b94ae234edd0dbffa865073",
      "tree": "b3435e65c24d69ccad9ef9492624f5b6081d86b8",
      "parents": [
        "789680d1ee9311cdf095241dc02bd9784d799cd1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:31 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "fs: dcache scale lru\n\nAdd a new lock, dcache_lru_lock, to protect the dcache LRU list from concurrent\nmodification. d_lru is also protected by d_lock, which allows LRU lists to be\naccessed without the lru lock, using RCU in future patches.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "789680d1ee9311cdf095241dc02bd9784d799cd1",
      "tree": "e6a984b0aa4791918f1b665f45210c2ab762969c",
      "parents": [
        "ec2447c278ee973d35f38e53ca16ba7f965ae33d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:30 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "fs: dcache scale hash\n\nAdd a new lock, dcache_hash_lock, to protect the dcache hash table from\nconcurrent modification. d_hash is also protected by d_lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ec2447c278ee973d35f38e53ca16ba7f965ae33d",
      "tree": "5d17a0523c301b8c71c0f198ffe7782c5e9c0ea9",
      "parents": [
        "b1e6a015a580ad145689ad1d6b4aa0e03e6c868b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:29 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "hostfs: simplify locking\n\nRemove dcache_lock locking from hostfs filesystem, and move it into dcache\nhelpers. All that is required is a coherent path name. Protection from\nconcurrent modification of the namespace after path name generation is not\nprovided in current code, because dcache_lock is dropped before the path is\nused.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b1e6a015a580ad145689ad1d6b4aa0e03e6c868b",
      "tree": "57a10ef164e4d2f798d9b832dbeaf973aca2ab83",
      "parents": [
        "621e155a3591962420eacdd39f6f0aa29ceb221e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:28 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "fs: change d_hash for rcu-walk\n\nChange d_hash so it may be called from lock-free RCU lookups. See similar\npatch for d_compare for details.\n\nFor in-tree filesystems, this is just a mechanical change.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "621e155a3591962420eacdd39f6f0aa29ceb221e",
      "tree": "387a9fb396f1bf24514b712c294182e36ba51076",
      "parents": [
        "fb2d5b86aff355a27ebfc132d3c99f4a940cc3fe"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:27 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:19 2011 +1100"
      },
      "message": "fs: change d_compare for rcu-walk\n\nChange d_compare so it may be called from lock-free RCU lookups. This\ndoes put significant restrictions on what may be done from the callback,\nhowever there don\u0027t seem to have been any problems with in-tree fses.\nIf some strange use case pops up that _really_ cannot cope with the\nrcu-walk rules, we can just add new rcu-unaware callbacks, which would\ncause name lookup to drop out of rcu-walk mode.\n\nFor in-tree filesystems, this is just a mechanical change.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb2d5b86aff355a27ebfc132d3c99f4a940cc3fe",
      "tree": "7fed12adf54473131e8b86c0c302c443b1d6a846",
      "parents": [
        "2bc334dcc7c77be3700dd443d92a78603f76976b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:26 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:19 2011 +1100"
      },
      "message": "fs: name case update method\n\nsmpfs and ncpfs want to update a live dentry name in-place. Rather than\nhave them open code the locking, provide a documented dcache API.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2bc334dcc7c77be3700dd443d92a78603f76976b",
      "tree": "51c666a438263f09efdea8a55a6220411ff7f8ab",
      "parents": [
        "79eb4dde742fe2e9c9e301432b894a7410261ce7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:25 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "jfs: dont overwrite dentry name in d_revalidate\n\nUse vfat\u0027s method for dealing with negative dentries to preserve case,\nrather than overwrite dentry name in d_revalidate, which is a bit ugly\nand also gets in the way of doing lock-free path walking.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "79eb4dde742fe2e9c9e301432b894a7410261ce7",
      "tree": "89150e92450fd10f7bd55348459d9f36be544ec0",
      "parents": [
        "fe15ce446beb3a33583af81ffe6c9d01a75314ed"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:24 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "cifs: dont overwrite dentry name in d_revalidate\n\nUse vfat\u0027s method for dealing with negative dentries to preserve case,\nrather than overwrite dentry name in d_revalidate, which is a bit ugly\nand also gets in the way of doing lock-free path walking.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "5eef7fa905c814826f518aca2d414ca77508ce30",
      "tree": "53c40fdbe92c30910befbad14ebace3ab9a342c0",
      "parents": [
        "fbc8d4c04626e015b18cc61199f505920abb48f0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:22 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: dcache documentation cleanup\n\nRemove redundant (and incorrect, since dcache RCU lookup) dentry locking\ndocumentation and point to the canonical document.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fbc8d4c04626e015b18cc61199f505920abb48f0",
      "tree": "31cd59dd54966d225ae159f41308798b2d58b8a2",
      "parents": [
        "5adcee1d8d32d7f305f6f5aaefdbf8f35adca177"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:21 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:17 2011 +1100"
      },
      "message": "config fs: avoid switching -\u003ed_op on live dentry\n\nSwitching d_op on a live dentry is racy in general, so avoid it. In this case\nit is a negative dentry, which is safer, but there are still concurrent ops\nwhich may be called on d_op in that case (eg. d_revalidate). So in general\na filesystem may not do this. Fix configfs so as not to do this.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "5adcee1d8d32d7f305f6f5aaefdbf8f35adca177",
      "tree": "9292ebc9bb6a21b364a97a44d1b6857a565159c5",
      "parents": [
        "3e880fb5e4bb6a012035e3edd0586ee2817c2e24"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:20 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:17 2011 +1100"
      },
      "message": "cgroup fs: avoid switching -\u003ed_op on live dentry\n\nSwitching d_op on a live dentry is racy in general, so avoid it. In this case\nit is a negative dentry, which is safer, but there are still concurrent ops\nwhich may be called on d_op in that case (eg. d_revalidate). So in general\na filesystem may not do this. Fix cgroupfs so as not to do this.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "3e880fb5e4bb6a012035e3edd0586ee2817c2e24",
      "tree": "665101c2c559c26e2dff2c7eca2c747fb736b524",
      "parents": [
        "86c8749ede0c59e590de9267066932a26f1ce796"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:19 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:17 2011 +1100"
      },
      "message": "fs: use fast counters for vfs caches\n\npercpu_counter library generates quite nasty code, so unless you need\nto dynamically allocate counters or take fast approximate value, a\nsimple per cpu set of counters is much better.\n\nThe percpu_counter can never be made to work as well, because it has an\nindirection from pointer to percpu memory, and it can\u0027t use direct\nthis_cpu_inc interfaces because it doesn\u0027t use static PER_CPU data, so\ncode will always be worse.\n\nIn the fastpath, it is the difference between this:\n\n        incl %gs:nr_dentry      # nr_dentry\n\nand this:\n\n        movl    percpu_counter_batch(%rip), %edx        # percpu_counter_batch,\n        movl    $1, %esi        #,\n        movq    $nr_dentry, %rdi        #,\n        call    __percpu_counter_add    # (plus I clobber registers)\n\n__percpu_counter_add:\n        pushq   %rbp    #\n        movq    %rsp, %rbp      #,\n        subq    $32, %rsp       #,\n        movq    %rbx, -24(%rbp) #,\n        movq    %r12, -16(%rbp) #,\n        movq    %r13, -8(%rbp)  #,\n        movq    %rdi, %rbx      # fbc, fbc\n#APP\n# 216 \"/home/npiggin/usr/src/linux-2.6/arch/x86/include/asm/thread_info.h\" 1\n        movq %gs:kernel_stack,%rax      #, pfo_ret__\n# 0 \"\" 2\n#NO_APP\n        incl    -8124(%rax)     # \u003cvariable\u003e.preempt_count\n        movq    32(%rdi), %r12  # \u003cvariable\u003e.counters, tcp_ptr__\n#APP\n# 78 \"lib/percpu_counter.c\" 1\n        add %gs:this_cpu_off, %r12      # this_cpu_off, tcp_ptr__\n# 0 \"\" 2\n#NO_APP\n        movslq  (%r12),%r13     #* tcp_ptr__, tmp73\n        movslq  %edx,%rax       # batch, batch\n        addq    %rsi, %r13      # amount, count\n        cmpq    %rax, %r13      # batch, count\n        jge     .L27    #,\n        negl    %edx    # tmp76\n        movslq  %edx,%rdx       # tmp76, tmp77\n        cmpq    %rdx, %r13      # tmp77, count\n        jg      .L28    #,\n.L27:\n        movq    %rbx, %rdi      # fbc,\n        call    _raw_spin_lock  #\n        addq    %r13, 8(%rbx)   # count, \u003cvariable\u003e.count\n        movq    %rbx, %rdi      # fbc,\n        movl    $0, (%r12)      #,* tcp_ptr__\n        call    _raw_spin_unlock        #\n.L29:\n#APP\n# 216 \"/home/npiggin/usr/src/linux-2.6/arch/x86/include/asm/thread_info.h\" 1\n        movq %gs:kernel_stack,%rax      #, pfo_ret__\n# 0 \"\" 2\n#NO_APP\n        decl    -8124(%rax)     # \u003cvariable\u003e.preempt_count\n        movq    -8136(%rax), %rax       #, D.14625\n        testb   $8, %al #, D.14625\n        jne     .L32    #,\n.L31:\n        movq    -24(%rbp), %rbx #,\n        movq    -16(%rbp), %r12 #,\n        movq    -8(%rbp), %r13  #,\n        leave\n        ret\n        .p2align 4,,10\n        .p2align 3\n.L28:\n        movl    %r13d, (%r12)   # count,*\n        jmp     .L29    #\n.L32:\n        call    preempt_schedule        #\n        .p2align 4,,6\n        jmp     .L31    #\n        .size   __percpu_counter_add, .-__percpu_counter_add\n        .p2align 4,,15\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "86c8749ede0c59e590de9267066932a26f1ce796",
      "tree": "316517d7c03d9caf0577acc517532ed2bc1801cc",
      "parents": [
        "ccd35fb9f4da856b105ea0f1e0cab3702e8ae6ba"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:18 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:17 2011 +1100"
      },
      "message": "vfs: revert per-cpu nr_unused counters for dentry and inodes\n\nThe nr_unused counters count the number of objects on an LRU, and as such they\nare synchronized with LRU object insertion and removal and scanning, and\nprotected under the LRU lock.\n\nMaking it per-cpu does not actually get any concurrency improvements because of\nthis lock, and summing the counter is much slower, and\nincrementing/decrementing it costs more code size and is slower too.\n\nThese counters should stay per-LRU, which currently means global.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ccd35fb9f4da856b105ea0f1e0cab3702e8ae6ba",
      "tree": "acb71aa4ae7d1f1ed17bdd79033a6bad5e27186d",
      "parents": [
        "786a5e15b613a9cee4fc9139fc3113a5ab0fde79"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:17 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:16 2011 +1100"
      },
      "message": "kernel: kmem_ptr_validate considered harmful\n\nThis is a nasty and error prone API. It is no longer used, remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "786a5e15b613a9cee4fc9139fc3113a5ab0fde79",
      "tree": "0c0100945f74ad1d68b9b546e1929cfcb67e9095",
      "parents": [
        "d3a23e1678a5827c38ed8a465ad91d65e59fa911"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:16 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:16 2011 +1100"
      },
      "message": "fs: d_validate fixes\n\nd_validate has been broken for a long time.\n\nkmem_ptr_validate does not guarantee that a pointer can be dereferenced\nif it can go away at any time. Even rcu_read_lock doesn\u0027t help, because\nthe pointer might be queued in RCU callbacks but not executed yet.\n\nSo the parent cannot be checked, nor the name hashed. The dentry pointer\ncan not be touched until it can be verified under lock. Hashing simply\ncannot be used.\n\nInstead, verify the parent/child relationship by traversing parent\u0027s\nd_child list. It\u0027s slow, but only ncpfs and the destaged smbfs care\nabout it, at this point.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "d3a23e1678a5827c38ed8a465ad91d65e59fa911",
      "tree": "44363edff14c1796a634825f07decc2324d7e6e0",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Wed Jan 05 20:01:21 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Wed Jan 05 20:01:21 2011 +1100"
      },
      "message": "Revert \"fs: use RCU read side protection in d_validate\"\n\nThis reverts commit 3825bdb7ed920845961f32f364454bee5f469abb.\n\nYou cannot dget() a dentry without having a reference, or holding\na lock that guarantees it remains valid.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5",
      "tree": "3a974a2b2283d37dc1ef3cb5a154a86eb1562f30",
      "parents": [
        "65f42886e24be2197b1263f138eabf40c6774d00"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 04 16:50:19 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 04 16:50:19 2011 -0800"
      },
      "message": "Linux 2.6.37\n"
    },
    {
      "commit": "65f42886e24be2197b1263f138eabf40c6774d00",
      "tree": "c45ab3a3634a9a949f54b7ee4ca9295db5674e5e",
      "parents": [
        "8a87694ed159d7abd2c9ed657416696c05db2252",
        "9fc3bbb4a752f108cf096d96640f3b548bbbce6c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 04 13:55:49 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 04 13:55:49 2011 -0800"
      },
      "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  ipv4/route.c: respect prefsrc for local routes\n  bridge: stp: ensure mac header is set\n  bridge: fix br_multicast_ipv6_rcv for paged skbs\n  atl1: fix oops when changing tx/rx ring params\n  drivers/atm/atmtcp.c: add missing atm_dev_put\n  starfire: Fix dma_addr_t size test for MIPS\n  tg3: fix return value check in tg3_read_vpd()\n  Broadcom CNIC core network driver: fix mem leak on allocation failures in cnic_alloc_uio_rings()\n  ISDN, Gigaset: Fix memory leak in do_disconnect_req()\n  CAN: Use inode instead of kernel address for /proc file\n  skfp: testing the wrong variable in skfp_driver_init()\n  ppp: allow disabling multilink protocol ID compression\n  ehea: Avoid changing vlan flags\n  ueagle-atm: fix PHY signal initialization race\n"
    },
    {
      "commit": "9fc3bbb4a752f108cf096d96640f3b548bbbce6c",
      "tree": "ce1f8d7a53c2a93a42e64b4148587cff0132ba6d",
      "parents": [
        "e6f26129ebbb0071016e2526036f42036ccf30e1"
      ],
      "author": {
        "name": "Joel Sing",
        "email": "jsing@google.com",
        "time": "Mon Jan 03 20:24:20 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jan 04 11:35:12 2011 -0800"
      },
      "message": "ipv4/route.c: respect prefsrc for local routes\n\nThe preferred source address is currently ignored for local routes,\nwhich results in all local connections having a src address that is the\nsame as the local dst address. Fix this by respecting the preferred source\naddress when it is provided for local routes.\n\nThis bug can be demonstrated as follows:\n\n # ifconfig dummy0 192.168.0.1\n # ip route show table local | grep local.*dummy0\n local 192.168.0.1 dev dummy0  proto kernel  scope host  src 192.168.0.1\n # ip route change table local local 192.168.0.1 dev dummy0 \\\n     proto kernel scope host src 127.0.0.1\n # ip route show table local | grep local.*dummy0\n local 192.168.0.1 dev dummy0  proto kernel  scope host  src 127.0.0.1\n\nWe now establish a local connection and verify the source IP\naddress selection:\n\n # nc -l 192.168.0.1 3128 \u0026\n # nc 192.168.0.1 3128 \u0026\n # netstat -ant | grep 192.168.0.1:3128.*EST\n tcp        0      0 192.168.0.1:3128        192.168.0.1:33228 ESTABLISHED\n tcp        0      0 192.168.0.1:33228       192.168.0.1:3128  ESTABLISHED\n\nSigned-off-by: Joel Sing \u003cjsing@google.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "8a87694ed159d7abd2c9ed657416696c05db2252",
      "tree": "90c28dd15ad2386d454156f91ee25801ff97f0d2",
      "parents": [
        "989d873fc5b6a96695b97738dea8d9f02a60f8ab"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Jan 04 07:14:24 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 04 11:01:09 2011 -0800"
      },
      "message": "remove trim_fs method from Documentation/filesystems/Locking\n\nThe -\u003etrim_fs has been removed meanwhile, so remove it from the documentation\nas well.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReported-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "989d873fc5b6a96695b97738dea8d9f02a60f8ab",
      "tree": "4d6a866920d93fbe4316d9c7ee22e86161cd3c2f",
      "parents": [
        "d9a1abe4844e7591cd82e167a1a09e6546f6c45e",
        "04228460a3ded723b2da09141c76c45ddd712caf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 16:37:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 16:37:01 2011 -0800"
      },
      "message": "Merge master.kernel.org:/home/rmk/linux-2.6-arm\n\n* master.kernel.org:/home/rmk/linux-2.6-arm:\n  ARM: pxa: fix page table corruption on resume\n  ARM: it8152: add IT8152_LAST_IRQ definition to fix build error\n  ARM: pxa: PXA_ESERIES depends on FB_W100.\n  ARM: 6605/1: Add missing include \"asm/memory.h\"\n  ARM: 6540/1: Stop irqsoff trace on return to user\n  ARM: 6537/1: update Nomadik, U300 and Ux500 maintainers\n  ARM: 6536/1: Add missing SZ_{32,64,128}\n  ARM: fix cache-feroceon-l2 after stack based kmap_atomic()\n  ARM: fix cache-xsc3l2 after stack based kmap_atomic()\n  ARM: get rid of kmap_high_l1_vipt()\n  ARM: smp: avoid incrementing mm_users on CPU startup\n  ARM: pxa: PXA_ESERIES depends on FB_W100.\n"
    },
    {
      "commit": "d9a1abe4844e7591cd82e167a1a09e6546f6c45e",
      "tree": "6963e2792b9bdbf126e74b1da9bbfcba1acf5a6e",
      "parents": [
        "867c20265459d30a01b021a9c1e81fb4c5832aa9"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Jan 03 14:59:11 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 16:36:33 2011 -0800"
      },
      "message": "arch/mn10300/kernel/irq.c: fix build\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d25702\n\nReported-by: Martin Ettl \u003cettl.martin@gmx.de\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "867c20265459d30a01b021a9c1e81fb4c5832aa9",
      "tree": "7873555d6a0e100fb1faa90da6e6366a430c3403",
      "parents": [
        "03ed6a3aa600c48593c3984812fda2d5945ddb46"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jan 03 14:59:10 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 16:36:33 2011 -0800"
      },
      "message": "ima: fix add LSM rule bug\n\nIf security_filter_rule_init() doesn\u0027t return a rule, then not everything\nis as fine as the return code implies.\n\nThis bug only occurs when the LSM (eg. SELinux) is disabled at runtime.\n\nAdding an empty LSM rule causes ima_match_rules() to always succeed,\nignoring any remaining rules.\n\n default IMA TCB policy:\n  # PROC_SUPER_MAGIC\n  dont_measure fsmagic\u003d0x9fa0\n  # SYSFS_MAGIC\n  dont_measure fsmagic\u003d0x62656572\n  # DEBUGFS_MAGIC\n  dont_measure fsmagic\u003d0x64626720\n  # TMPFS_MAGIC\n  dont_measure fsmagic\u003d0x01021994\n  # SECURITYFS_MAGIC\n  dont_measure fsmagic\u003d0x73636673\n\n  \u003c LSM specific rule \u003e\n  dont_measure obj_type\u003dvar_log_t\n\n  measure func\u003dBPRM_CHECK\n  measure func\u003dFILE_MMAP mask\u003dMAY_EXEC\n  measure func\u003dFILE_CHECK mask\u003dMAY_READ uid\u003d0\n\nThus without the patch, with the boot parameters \u0027tcb selinux\u003d0\u0027, adding\nthe above \u0027dont_measure obj_type\u003dvar_log_t\u0027 rule to the default IMA TCB\nmeasurement policy, would result in nothing being measured.  The patch\nprevents the default TCB policy from being replaced.\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: David Safford \u003csafford@watson.ibm.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": "04228460a3ded723b2da09141c76c45ddd712caf",
      "tree": "db7b9143b150ead1e9fec10760a1d5ff4045a5e7",
      "parents": [
        "7c0ab43e6ab09d72dc8dbac2521b2f819ccc4026",
        "24c78557741395e038e83f25367cf2bfd7f582b8"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Mon Jan 03 22:55:21 2011 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Mon Jan 03 22:55:21 2011 +0000"
      },
      "message": "Merge branch \u0027fix\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6\n"
    },
    {
      "commit": "e6f26129ebbb0071016e2526036f42036ccf30e1",
      "tree": "ba75f3014c9251ceee17c69bd6602603337c6b2e",
      "parents": [
        "9d89081d698132b5f964aea88112f76492563ee9"
      ],
      "author": {
        "name": "Florian Westphal",
        "email": "fw@strlen.de",
        "time": "Mon Jan 03 04:16:28 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 03 12:09:33 2011 -0800"
      },
      "message": "bridge: stp: ensure mac header is set\n\ncommit bf9ae5386bca8836c16e69ab8fdbe46767d7452a\n(llc: use dev_hard_header) removed the\nskb_reset_mac_header call from llc_mac_hdr_init.\n\nThis seems fine itself, but br_send_bpdu() invokes ebtables LOCAL_OUT.\n\nWe oops in ebt_basic_match() because it assumes eth_hdr(skb) returns\na meaningful result.\n\nCc: acme@ghostprotocols.net\nReferences: https://bugzilla.kernel.org/show_bug.cgi?id\u003d24532\nSigned-off-by: Florian Westphal \u003cfw@strlen.de\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "03ed6a3aa600c48593c3984812fda2d5945ddb46",
      "tree": "03d1357411424514943deffadbb9f287288998bd",
      "parents": [
        "4c37a4b53de2d08c469a6e4304cf2a17178200aa",
        "a0a2b71bb750ffe9b3faa317cb6317f4ad109383"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:51:22 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:51:22 2011 -0800"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf: Fix callchain hit bad cast on ascii display\n  arch/x86/oprofile/op_model_amd.c: Perform initialisation on a single CPU\n  watchdog: Improve initialisation error message and documentation\n"
    },
    {
      "commit": "4c37a4b53de2d08c469a6e4304cf2a17178200aa",
      "tree": "6e69ca7a15b14c8acfaa61440d46655bd1060190",
      "parents": [
        "d45fa563a62c908d0e9a581d4f091fed6371ebd0",
        "8fd0bda511406ef0e9dcce9be055d7ab931e92ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:50:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:50:26 2011 -0800"
      },
      "message": "Merge branch \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6\n\n* \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6:\n  [media] em28xx: radio_fops should also use unlocked_ioctl\n  [media] wm8775: Revert changeset fcb9757333 to avoid a regression\n  [media] cx25840: Prevent device probe failure due to volume control ERANGE error\n"
    },
    {
      "commit": "d45fa563a62c908d0e9a581d4f091fed6371ebd0",
      "tree": "84b80c025132e7d4619709dd9134681c8b014fa2",
      "parents": [
        "a1cf11d8f673a3ad91012c5da96beed06ecefde1",
        "8f33d5277fada0291ea495f7fd44a3e7b7aa41d3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:48:54 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:48:54 2011 -0800"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:\n  dmaengine: provide dummy functions for DMA_ENGINE\u003dn\n  mv_xor: fix race in tasklet function\n"
    },
    {
      "commit": "a1cf11d8f673a3ad91012c5da96beed06ecefde1",
      "tree": "e729bb79ce66f2983d5d4b9afcf8d9a4c365c1c3",
      "parents": [
        "b518a64983cbf2ff31aed530898de2d80e4573d5"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Mon Jan 03 15:07:02 2011 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 03 11:48:11 2011 -0800"
      },
      "message": "name_to_dev_t() must not call __init code\n\nThe function can\u0027t be __init itself (being called from some sysfs\nhandler), and hence none of the functions it calls can be either.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9d89081d698132b5f964aea88112f76492563ee9",
      "tree": "55c1c41e407ea0c8bbbf6444a8cdb16a9da181d0",
      "parents": [
        "2f32c867219734b06abc980d4812f67b6d6fe517"
      ],
      "author": {
        "name": "Tomas Winkler",
        "email": "tomas.winkler@intel.com",
        "time": "Mon Jan 03 11:26:08 2011 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 03 11:26:34 2011 -0800"
      },
      "message": "bridge: fix br_multicast_ipv6_rcv for paged skbs\n\nuse pskb_may_pull to access ipv6 header correctly for paged skbs\nIt was omitted in the bridge code leading to crash in blind\n__skb_pull\n\nsince the skb is cloned undonditionally we also simplify the\nthe exit path\n\nthis fixes bug https://bugzilla.kernel.org/show_bug.cgi?id\u003d25202\n\nDec 15 14:36:40 User-PC hostapd: wlan0: STA 00:15:00:60:5d:34 IEEE 802.11: authenticated\nDec 15 14:36:40 User-PC hostapd: wlan0: STA 00:15:00:60:5d:34 IEEE 802.11: associated (aid 2)\nDec 15 14:36:40 User-PC hostapd: wlan0: STA 00:15:00:60:5d:34 RADIUS: starting accounting session 4D0608A3-00000005\nDec 15 14:36:41 User-PC kernel: [175576.120287] ------------[ cut here ]------------\nDec 15 14:36:41 User-PC kernel: [175576.120452] kernel BUG at include/linux/skbuff.h:1178!\nDec 15 14:36:41 User-PC kernel: [175576.120609] invalid opcode: 0000 [#1] SMP\nDec 15 14:36:41 User-PC kernel: [175576.120749] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/uevent\nDec 15 14:36:41 User-PC kernel: [175576.121035] Modules linked in: approvals binfmt_misc bridge stp llc parport_pc ppdev arc4 iwlagn snd_hda_codec_realtek iwlcore i915 snd_hda_intel mac80211 joydev snd_hda_codec snd_hwdep snd_pcm snd_seq_midi drm_kms_helper snd_rawmidi drm snd_seq_midi_event snd_seq snd_timer snd_seq_device cfg80211 eeepc_wmi usbhid psmouse intel_agp i2c_algo_bit intel_gtt uvcvideo agpgart videodev sparse_keymap snd shpchp v4l1_compat lp hid video serio_raw soundcore output snd_page_alloc ahci libahci atl1c\nDec 15 14:36:41 User-PC kernel: [175576.122712]\nDec 15 14:36:41 User-PC kernel: [175576.122769] Pid: 0, comm: kworker/0:0 Tainted: G        W   2.6.37-rc5-wl+ #3 1015PE/1016P\nDec 15 14:36:41 User-PC kernel: [175576.123012] EIP: 0060:[\u003cf83edd65\u003e] EFLAGS: 00010283 CPU: 1\nDec 15 14:36:41 User-PC kernel: [175576.123193] EIP is at br_multicast_rcv+0xc95/0xe1c [bridge]\nDec 15 14:36:41 User-PC kernel: [175576.123362] EAX: 0000001c EBX: f5626318 ECX: 00000000 EDX: 00000000\nDec 15 14:36:41 User-PC kernel: [175576.123550] ESI: ec512262 EDI: f5626180 EBP: f60b5ca0 ESP: f60b5bd8\nDec 15 14:36:41 User-PC kernel: [175576.123737]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068\nDec 15 14:36:41 User-PC kernel: [175576.123902] Process kworker/0:0 (pid: 0, ti\u003df60b4000 task\u003df60a8000 task.ti\u003df60b0000)\nDec 15 14:36:41 User-PC kernel: [175576.124137] Stack:\nDec 15 14:36:41 User-PC kernel: [175576.124181]  ec556500 f6d06800 f60b5be8 c01087d8 ec512262 00000030 00000024 f5626180\nDec 15 14:36:41 User-PC kernel: [175576.124181]  f572c200 ef463440 f5626300 3affffff f6d06dd0 e60766a4 000000c4 f6d06860\nDec 15 14:36:41 User-PC kernel: [175576.124181]  ffffffff ec55652c 00000001 f6d06844 f60b5c64 c0138264 c016e451 c013e47d\nDec 15 14:36:41 User-PC kernel: [175576.124181] Call Trace:\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc01087d8\u003e] ? sched_clock+0x8/0x10\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0138264\u003e] ? enqueue_entity+0x174/0x440\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc016e451\u003e] ? sched_clock_cpu+0x131/0x190\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc013e47d\u003e] ? select_task_rq_fair+0x2ad/0x730\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0524fc1\u003e] ? nf_iterate+0x71/0x90\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf83e4914\u003e] ? br_handle_frame_finish+0x184/0x220 [bridge]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf83e4790\u003e] ? br_handle_frame_finish+0x0/0x220 [bridge]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf83e46e9\u003e] ? br_handle_frame+0x189/0x230 [bridge]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf83e4790\u003e] ? br_handle_frame_finish+0x0/0x220 [bridge]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf83e4560\u003e] ? br_handle_frame+0x0/0x230 [bridge]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc04ff026\u003e] ? __netif_receive_skb+0x1b6/0x5b0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc04f7a30\u003e] ? skb_copy_bits+0x110/0x210\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0503a7f\u003e] ? netif_receive_skb+0x6f/0x80\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf82cb74c\u003e] ? ieee80211_deliver_skb+0x8c/0x1a0 [mac80211]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf82cc836\u003e] ? ieee80211_rx_handlers+0xeb6/0x1aa0 [mac80211]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc04ff1f0\u003e] ? __netif_receive_skb+0x380/0x5b0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc016e242\u003e] ? sched_clock_local+0xb2/0x190\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc012b688\u003e] ? default_spin_lock_flags+0x8/0x10\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc05d83df\u003e] ? _raw_spin_lock_irqsave+0x2f/0x50\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf82cd621\u003e] ? ieee80211_prepare_and_rx_handle+0x201/0xa90 [mac80211]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf82ce154\u003e] ? ieee80211_rx+0x2a4/0x830 [mac80211]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf815a8d6\u003e] ? iwl_update_stats+0xa6/0x2a0 [iwlcore]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf8499212\u003e] ? iwlagn_rx_reply_rx+0x292/0x3b0 [iwlagn]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc05d83df\u003e] ? _raw_spin_lock_irqsave+0x2f/0x50\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf8483697\u003e] ? iwl_rx_handle+0xe7/0x350 [iwlagn]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cf8486ab7\u003e] ? iwl_irq_tasklet+0xf7/0x5c0 [iwlagn]\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc01aece1\u003e] ? __rcu_process_callbacks+0x201/0x2d0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0150d05\u003e] ? tasklet_action+0xc5/0x100\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0150a07\u003e] ? __do_softirq+0x97/0x1d0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc05d910c\u003e] ? nmi_stack_correct+0x2f/0x34\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0150970\u003e] ? __do_softirq+0x0/0x1d0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  \u003cIRQ\u003e\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc01508f5\u003e] ? irq_exit+0x65/0x70\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc05df062\u003e] ? do_IRQ+0x52/0xc0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc01036b0\u003e] ? common_interrupt+0x30/0x38\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc03a1fc2\u003e] ? intel_idle+0xc2/0x160\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc04daebb\u003e] ? cpuidle_idle_call+0x6b/0x100\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc0101dea\u003e] ? cpu_idle+0x8a/0xf0\nDec 15 14:36:41 User-PC kernel: [175576.124181]  [\u003cc05d2702\u003e] ? start_secondary+0x1e8/0x1ee\n\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Tomas Winkler \u003ctomas.winkler@intel.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2f32c867219734b06abc980d4812f67b6d6fe517",
      "tree": "bada002a03498e5204c2706de19f635d9432bb2e",
      "parents": [
        "b9556f9a1abdc56a179ac7ba6053469373b6de0f"
      ],
      "author": {
        "name": "J. K. Cliburn",
        "email": "jcliburn@gmail.com",
        "time": "Sat Jan 01 05:02:12 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 03 11:04:49 2011 -0800"
      },
      "message": "atl1: fix oops when changing tx/rx ring params\n\nCommit 3f5a2a713aad28480d86b0add00c68484b54febc zeroes out the statistics\nmessage block (SMB) and coalescing message block (CMB) when adapter ring\nresources are freed.  This is desirable behavior, but, as a side effect,\nthe commit leads to an oops when atl1_set_ringparam() attempts to alter\nthe number of rx or tx elements in the ring buffer (by using ethtool\n-G, for example).  We don\u0027t want SMB or CMB to change during this\noperation.\n\nModify atl1_set_ringparam() to preserve SMB and CMB when changing ring\nparameters.\n\nCc: stable@kernel.org\nSigned-off-by: Jay Cliburn \u003cjcliburn@gmail.com\u003e\nReported-by: Tõnu Raitviir \u003cjussuf@linux.ee\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a0a2b71bb750ffe9b3faa317cb6317f4ad109383",
      "tree": "bda5b05eab82db67e4416682cee808ca422d980c",
      "parents": [
        "c7c25802b39c443b3745cfa973dc49a97a3491f8",
        "d425de5436a620de506f9e4119bf8daa1cb93718"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 03 19:59:24 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 03 19:59:24 2011 +0100"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into perf/urgent\n"
    },
    {
      "commit": "24c78557741395e038e83f25367cf2bfd7f582b8",
      "tree": "f66c6e716e935775308bf37d5717ece4470dc551",
      "parents": [
        "823a2df258627b80df2e75056b850424a8eb5fed"
      ],
      "author": {
        "name": "Aric D. Blumer",
        "email": "aric@sdgsystems.com",
        "time": "Wed Dec 29 11:18:29 2010 -0500"
      },
      "committer": {
        "name": "Eric Miao",
        "email": "eric.y.miao@gmail.com",
        "time": "Mon Jan 03 23:18:59 2011 +0800"
      },
      "message": "ARM: pxa: fix page table corruption on resume\n\nBefore this patch, the following error would sometimes occur after a\nresume on pxa3xx:\n\n    /path/to/mm/memory.c:144: bad pmd 8040542e.\n\nThe problem was that a temporary page table mapping was being improperly\nrestored.\n\nThe PXA3xx resume code creates a temporary mapping of resume_turn_on_mmu\nto avoid a prefetch abort.  The pxa3xx_resume_after_mmu code requires\nthat the r1 register holding the address of this mapping not be\nmodified, however, resume_turn_on_mmu does modify it. It is mostly\ncorrect in that r1 receives the base table address, but it may also\nget other bits in 13:0.  This results in pxa3xx_resume_after_mmu\nrestoring the original mapping to the wrong place, corrupting memory\nand leaving the temporary mapping in place.\n\nSigned-off-by: Matt Reimer \u003cmreimer@sdgsystems.com\u003e\nSigned-off-by: Eric Miao \u003ceric.y.miao@gmail.com\u003e\n"
    },
    {
      "commit": "823a2df258627b80df2e75056b850424a8eb5fed",
      "tree": "ad8b896ee3d99b91190290af2008a6e045805c7b",
      "parents": [
        "82427de2c7c39ee7bcaa4cb0260b4e9b9ab19eb8"
      ],
      "author": {
        "name": "Mike Rapoport",
        "email": "mike@compulab.co.il",
        "time": "Wed Dec 29 09:06:26 2010 +0200"
      },
      "committer": {
        "name": "Eric Miao",
        "email": "eric.y.miao@gmail.com",
        "time": "Mon Jan 03 23:18:32 2011 +0800"
      },
      "message": "ARM: it8152: add IT8152_LAST_IRQ definition to fix build error\n\nThe commit 6ac6b817f3f4c23c5febd960d8deb343e13af5f3 (ARM: pxa: encode\nIRQ number into .nr_irqs) removed definition of ITE_LAST_IRQ which\ncaused the following build error:\n\nCC      arch/arm/common/it8152.o\narch/arm/common/it8152.c: In function \u0027it8152_init_irq\u0027:\narch/arm/common/it8152.c:86: error: \u0027IT8152_LAST_IRQ\u0027 undeclared (first use in this function)\narch/arm/common/it8152.c:86: error: (Each undeclared identifier is reported only once\narch/arm/common/it8152.c:86: error: for each function it appears in.)\nmake[2]: *** [arch/arm/common/it8152.o] Error 1\n\nDefining the IT8152_LAST_IRQ in the arch/arm/include/hardware/it8152.c\nfixes the build.\n\nSigned-off-by: Mike Rapoport \u003cmike@compulab.co.il\u003e\nSigned-off-by: Eric Miao \u003ceric.y.miao@gmail.com\u003e\n"
    },
    {
      "commit": "82427de2c7c39ee7bcaa4cb0260b4e9b9ab19eb8",
      "tree": "07693e03d1e23579580d7ca8f1cee59ea32c18a0",
      "parents": [
        "387c31c7e5c9805b0aef8833d1731a5fe7bdea14"
      ],
      "author": {
        "name": "Lennert Buytenhek",
        "email": "buytenh@wantstofly.org",
        "time": "Wed Dec 15 07:20:16 2010 +0800"
      },
      "committer": {
        "name": "Eric Miao",
        "email": "eric.y.miao@gmail.com",
        "time": "Mon Jan 03 23:17:56 2011 +0800"
      },
      "message": "ARM: pxa: PXA_ESERIES depends on FB_W100.\n\nAs arch/arm/mach-pxa/eseries.c references w100fb_gpio_{read,write}()\ndirectly.\n\nSigned-off-by: Lennert Buytenhek \u003cbuytenh@secretlab.ca\u003e\nSigned-off-by: Eric Miao \u003ceric.y.miao@gmail.com\u003e\n"
    },
    {
      "commit": "d425de5436a620de506f9e4119bf8daa1cb93718",
      "tree": "25f1b576d37a0a6ff8ad5f89ff93ab875e4d1d78",
      "parents": [
        "551423748a4eba55f2eb0fc250d757986471f187"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jan 03 16:13:11 2011 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jan 03 16:13:11 2011 +0100"
      },
      "message": "perf: Fix callchain hit bad cast on ascii display\n\nipchain__fprintf_graph() casts the number of hits in a branch as an\nint, which means we lose its highests bits.\n\nThis results in meaningless number of callchain hits in perf.data\nthat have a high number of hits recorded, typically those that have\ncallchain branches hits appearing more than INT_MAX. This happens\neasily as those are pondered by the event period.\n\nReported-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\n"
    },
    {
      "commit": "c7c25802b39c443b3745cfa973dc49a97a3491f8",
      "tree": "c12d44f18788da6574d8df468861766b954095e8",
      "parents": [
        "551423748a4eba55f2eb0fc250d757986471f187"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jan 03 12:15:14 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 03 13:01:40 2011 +0100"
      },
      "message": "arch/x86/oprofile/op_model_amd.c: Perform initialisation on a single CPU\n\nDisable preemption in init_ibs(). The function only checks the\nibs capabilities and sets up pci devices (if necessary). It runs\nonly on one cpu but operates with the local APIC and some MSRs,\nthus it is better to disable preemption.\n\n[    7.034377] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/483\n[    7.034385] caller is setup_APIC_eilvt+0x155/0x180\n[    7.034389] Pid: 483, comm: modprobe Not tainted 2.6.37-rc1-20101110+ #1\n[    7.034392] Call Trace:\n[    7.034400]  [\u003cffffffff812a2b72\u003e] debug_smp_processor_id+0xd2/0xf0\n[    7.034404]  [\u003cffffffff8101e985\u003e] setup_APIC_eilvt+0x155/0x180\n[ ... ]\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d22812\n\nReported-by: \u003catswartz@gmail.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: oprofile-list@lists.sourceforge.net \u003coprofile-list@lists.sourceforge.net\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Dan Carpenter \u003cerror27@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: \u003cstable@kernel.org\u003e         [2.6.37.x]\nLKML-Reference: \u003c20110103111514.GM4739@erda.amd.com\u003e\n[ small cleanups ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8fd0bda511406ef0e9dcce9be055d7ab931e92ba",
      "tree": "73f1e12e51ece5d1eef6c5ee2bb49dafeaa1ce3b",
      "parents": [
        "46e67acd5d4cacda758e871eebd15cef4e2c2665"
      ],
      "author": {
        "name": "Hans Verkuil",
        "email": "hverkuil@xs4all.nl",
        "time": "Sat Dec 18 09:59:51 2010 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Jan 03 09:52:25 2011 -0200"
      },
      "message": "[media] em28xx: radio_fops should also use unlocked_ioctl\n\nem28xx uses core assisted locking, so it shouldn\u0027t use .ioctl.\nThe .ioctl callback was replaced by .unlocked_ioctl for video nodes,\nbut not for radio nodes. This is now corrected.\n\nSigned-off-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "46e67acd5d4cacda758e871eebd15cef4e2c2665",
      "tree": "80fc9c755da220725b26e76c522a0c9414b11abf",
      "parents": [
        "f23b7952d37c69c0caa6c8dfb85dbf2eb9e5fcaa"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Jan 03 09:09:56 2011 -0200"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Jan 03 09:09:56 2011 -0200"
      },
      "message": "[media] wm8775: Revert changeset fcb9757333 to avoid a regression\n\nIt seems that cx88 and ivtv use wm8775 on some different modes. The\npatch that added support for a board with wm8775 broke ivtv boards with\nthis device. As we\u0027re too close to release 2.6.37, let\u0027s just revert\nit.\n\nReported-by: Andy Walls \u003cawalls@md.metrocast.net\u003e\nReported-by: Eric Sharkey \u003ceric@lisaneric.org\u003e\nReported-by: Auric \u003cauric@aanet.com.au\u003e\nReported by: David Gesswein \u003cdjg@pdp8online.com\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "f23b7952d37c69c0caa6c8dfb85dbf2eb9e5fcaa",
      "tree": "813fda00f48aeafbd785d494d8c1ae8c660f6f5a",
      "parents": [
        "387c31c7e5c9805b0aef8833d1731a5fe7bdea14"
      ],
      "author": {
        "name": "Andy Walls",
        "email": "awalls@md.metrocast.net",
        "time": "Sun Dec 05 19:42:30 2010 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Jan 03 09:08:16 2011 -0200"
      },
      "message": "[media] cx25840: Prevent device probe failure due to volume control ERANGE error\n\nThis patch fixes a regression that crept into 2.6.36.\n\nThe volume control scale in the cx25840 driver has an unusual mapping\nfrom register values to v4l2 volume control values.  Enforce the mapping\nlimits, so that the default volume control setting does not fall out of\nbounds to prevent the cx25840 module device probe from failing.\n\nSigned-off-by: Andy Walls \u003cawalls@md.metrocast.net\u003e\nCc: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "8f33d5277fada0291ea495f7fd44a3e7b7aa41d3",
      "tree": "f94ab5a72d00cd7fb7c061ed68f1d8e5e1f85cde",
      "parents": [
        "8333f65ef094e47020cd01452b4637e7daf5a77f"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "g.liakhovetski@gmx.de",
        "time": "Wed Dec 22 14:46:46 2010 +0100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jan 03 01:41:40 2011 -0800"
      },
      "message": "dmaengine: provide dummy functions for DMA_ENGINE\u003dn\n\nThis lets drivers, optionally using the dmaengine, build with DMA_ENGINE\nunselected.\n\nSigned-off-by: Guennadi Liakhovetski \u003cg.liakhovetski@gmx.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "8333f65ef094e47020cd01452b4637e7daf5a77f",
      "tree": "1f41baeedeff9625d25e9c664d3bf762f3371855",
      "parents": [
        "59a609d9b59be9452f168fe228befea53d5962ff"
      ],
      "author": {
        "name": "Saeed Bishara",
        "email": "saeed@marvell.com",
        "time": "Tue Dec 21 16:53:39 2010 +0200"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jan 03 01:39:26 2011 -0800"
      },
      "message": "mv_xor: fix race in tasklet function\n\nuse mv_xor_slot_cleanup() instead of __mv_xor_slot_cleanup() as the former function\naquires the spin lock that needed to protect the drivers data.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Saeed Bishara \u003csaeed@marvell.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "7c0ab43e6ab09d72dc8dbac2521b2f819ccc4026",
      "tree": "aa0896fc8b07d85c0d85edbd695f71025b39fa5d",
      "parents": [
        "d13e5edd7284bedcf5952e1b6490e39ad843cb91"
      ],
      "author": {
        "name": "Axel Lin",
        "email": "axel.lin@gmail.com",
        "time": "Mon Jan 03 02:26:53 2011 +0100"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Mon Jan 03 08:56:08 2011 +0000"
      },
      "message": "ARM: 6605/1: Add missing include \"asm/memory.h\"\n\nThis patch fixes below build error by adding the missing asm/memory.h,\nwhich is needed for arch_is_coherent().\n\n$ make pxa3xx_defconfig; make\n  CC      init/do_mounts_rd.o\nIn file included from include/linux/list_bl.h:5,\n                 from include/linux/rculist_bl.h:7,\n                 from include/linux/dcache.h:7,\n                 from include/linux/fs.h:381,\n                 from init/do_mounts_rd.c:3:\ninclude/linux/bit_spinlock.h: In function \u0027bit_spin_unlock\u0027:\ninclude/linux/bit_spinlock.h:61: error: implicit declaration of function \u0027arch_is_coherent\u0027\nmake[1]: *** [init/do_mounts_rd.o] Error 1\nmake: *** [init] Error 2\n\nSigned-off-by: Axel Lin \u003caxel.lin@gmail.com\u003e\nAcked-by: Peter Huewe \u003cpeterhuewe@gmx.de\u003e\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "551423748a4eba55f2eb0fc250d757986471f187",
      "tree": "401f03f7e5a70de089ef83153ac98096929c6f09",
      "parents": [
        "b518a64983cbf2ff31aed530898de2d80e4573d5"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Sun Jan 02 23:02:42 2011 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 03 05:25:52 2011 +0100"
      },
      "message": "watchdog: Improve initialisation error message and documentation\n\nThe error message \u0027NMI watchdog failed to create perf event...\u0027\ndoes not make it clear that this is a fatal error for the\nwatchdog.  It also currently prints the error value as a\npointer, rather than extracting the error code with PTR_ERR().\nFix that.\n\nAdd a note to the description of the \u0027nowatchdog\u0027 kernel\nparameter to associate it with this message.\n\nReported-by: Cesare Leonardi \u003cceleonar@gmail.com\u003e\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nCc: 599368@bugs.debian.org\nCc: 608138@bugs.debian.org\nCc: Don Zickus \u003cdzickus@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: \u003cstable@kernel.org\u003e # .37.x and later\nLKML-Reference: \u003c1294009362.3167.126.camel@localhost\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b518a64983cbf2ff31aed530898de2d80e4573d5",
      "tree": "e0e1c67926e0af26fe3817f23fe3685cde2c4245",
      "parents": [
        "9109f4eb847b7c0be61ae25fb21b1ce2acc9c2d6"
      ],
      "author": {
        "name": "Maurus Cuelenaere",
        "email": "mcuelenaere@gmail.com",
        "time": "Sun Jan 02 14:48:16 2011 -0500"
      },
      "committer": {
        "name": "Guenter Roeck",
        "email": "guenter.roeck@ericsson.com",
        "time": "Sun Jan 02 15:31:11 2011 -0800"
      },
      "message": "hwmon: (s3c-hwmon) Fix compilation\n\nThe owner field was removed from struct attribute in\n6fd69dc578fa0b1bbc3aad70ae3af9a137211707, so don\u0027t assign it anymore.\n\nSigned-off-by: Maurus Cuelenaere \u003cmcuelenaere@gmail.com\u003e\nSigned-off-by: Guenter Roeck \u003cguenter.roeck@ericsson.com\u003e\n"
    },
    {
      "commit": "9109f4eb847b7c0be61ae25fb21b1ce2acc9c2d6",
      "tree": "386be3479f32302b13924c5893c28ae2cbfad6f3",
      "parents": [
        "a1a54303d1c58709a0c16402942d6dede2f69f43",
        "d0dfc6b74a0c6e9ee46b62713256e2b025244d3c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 02 10:44:21 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 02 10:44:21 2011 -0800"
      },
      "message": "Merge branch \u0027kvm-updates/2.6.37\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm\n\n* \u0027kvm-updates/2.6.37\u0027 of git://git.kernel.org/pub/scm/virt/kvm/kvm:\n  KVM: i8259: initialize isr_ack\n  KVM: MMU: Fix incorrect direct gfn for unpaged mode shadow\n"
    },
    {
      "commit": "a1a54303d1c58709a0c16402942d6dede2f69f43",
      "tree": "b04ae10433ed16098c1db9db5734bdc9a37ff2a2",
      "parents": [
        "d864b7b4d69d2fd5a3f129d27ad0bb4fc81cc32b",
        "ea78484bd508d582f543ff727c9a53a381c15895"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 02 10:43:51 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 02 10:43:51 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:\n  ALSA: hda: Use LPIB quirk for Dell Inspiron m101z/1120\n  sound: Prevent buffer overflow in OSS load_mixer_volumes\n  ASoC: codecs: wm8753: Fix register cache incoherency\n  ASoC: codecs: wm9090: Fix register cache incoherency\n  ASoC: codecs: wm8962: Fix register cache incoherency\n  ASoC: codecs: wm8955: Fix register cache incoherency\n  ASoC: codecs: wm8904: Fix register cache incoherency\n  ASoC: codecs: wm8741: Fix register cache incoherency\n  ASoC: codecs: wm8523: Fix register cache incoherency\n  ASoC: codecs: max98088: Fix register cache incoherency\n  ASoC: codecs: Add missing control_type initialization\n"
    },
    {
      "commit": "d864b7b4d69d2fd5a3f129d27ad0bb4fc81cc32b",
      "tree": "b1a0e05af5d691d8098614a40b57576716761f1d",
      "parents": [
        "3643e0e87c13c670a0fdcd0c34401b38b36ff021",
        "7ad1227818f09242cfe9bf1845fd24211f5f99bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 02 10:37:19 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 02 10:37:19 2011 -0800"
      },
      "message": "Merge branch \u0027rc-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6\n\n* \u0027rc-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:\n  kconfig: fix undesirable side effect of adding \"visible\" menu attribute\n"
    },
    {
      "commit": "ea78484bd508d582f543ff727c9a53a381c15895",
      "tree": "4c5499468a4276d88fc0976be2f23a3ba72b5694",
      "parents": [
        "e03fa055bc126e536c7f65862e08a9b143138ea9",
        "776065e36de1d5eb9e33ff908352fef4050ab38d"
      ],
      "author": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Sun Jan 02 11:01:55 2011 +0100"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Sun Jan 02 11:01:55 2011 +0100"
      },
      "message": "Merge branch \u0027fix/asoc\u0027 into for-linus\n"
    },
    {
      "commit": "d0dfc6b74a0c6e9ee46b62713256e2b025244d3c",
      "tree": "a065d54c18eaa687762e032dd46c28d4affff3b1",
      "parents": [
        "649497d1a3676020802ebba04a3d9bb31253adb5"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Fri Dec 31 10:52:15 2010 +0200"
      },
      "committer": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Sun Jan 02 11:52:48 2011 +0200"
      },
      "message": "KVM: i8259: initialize isr_ack\n\nisr_ack is never initialized.  So, until the first PIC reset, interrupts\nmay fail to be injected.  This can cause Windows XP to fail to boot, as\nreported in the fallout from the fix to\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d21962.\n\nReported-and-tested-by: Nicolas Prochazka \u003cprochazka.nicolas@gmail.com\u003e\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\n"
    }
  ],
  "next": "b9556f9a1abdc56a179ac7ba6053469373b6de0f"
}
