)]}'
{
  "log": [
    {
      "commit": "0c21e3aaf6ae85bee804a325aa29c325209180fd",
      "tree": "81c5d698e1c40cc8f473b21c5587a34598754a64",
      "parents": [
        "021db8e2bde53024a163fb4417a185de46fe77aa",
        "b2837fcf4994e699a4def002e26f274d95b387c1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:16:27 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:16:27 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/hfsplus\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/hch/hfsplus:\n  hfsplus: %L-to-%ll, macro correction, and remove unneeded braces\n  hfsplus: spaces/indentation clean-up\n  hfsplus: C99 comments clean-up\n  hfsplus: over 80 character lines clean-up\n  hfsplus: fix an artifact in ioctl flag checking\n  hfsplus: flush disk caches in sync and fsync\n  hfsplus: optimize fsync\n  hfsplus: split up inode flags\n  hfsplus: write up fsync for directories\n  hfsplus: simplify fsync\n  hfsplus: avoid useless work in hfsplus_sync_fs\n  hfsplus: make sure sync writes out all metadata\n  hfsplus: use raw bio access for partition tables\n  hfsplus: use raw bio access for the volume headers\n  hfsplus: always use hfsplus_sync_fs to write the volume header\n  hfsplus: silence a few debug printks\n  hfsplus: fix option parsing during remount\n\nFix up conflicts due to VFS changes in fs/hfsplus/{hfsplus_fs.h,unicode.c}\n"
    },
    {
      "commit": "72eb6a791459c87a0340318840bb3bd9252b627b",
      "tree": "3bfb8ad99f9c7e511f37f72d57b56a2cea06d753",
      "parents": [
        "23d69b09b78c4876e134f104a3814c30747c53f1",
        "55ee4ef30241a62b700f79517e6d5ef2ddbefa67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 17:02:58 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (30 commits)\n  gameport: use this_cpu_read instead of lookup\n  x86: udelay: Use this_cpu_read to avoid address calculation\n  x86: Use this_cpu_inc_return for nmi counter\n  x86: Replace uses of current_cpu_data with this_cpu ops\n  x86: Use this_cpu_ops to optimize code\n  vmstat: User per cpu atomics to avoid interrupt disable / enable\n  irq_work: Use per cpu atomics instead of regular atomics\n  cpuops: Use cmpxchg for xchg to avoid lock semantics\n  x86: this_cpu_cmpxchg and this_cpu_xchg operations\n  percpu: Generic this_cpu_cmpxchg() and this_cpu_xchg support\n  percpu,x86: relocate this_cpu_add_return() and friends\n  connector: Use this_cpu operations\n  xen: Use this_cpu_inc_return\n  taskstats: Use this_cpu_ops\n  random: Use this_cpu_inc_return\n  fs: Use this_cpu_inc_return in buffer.c\n  highmem: Use this_cpu_xx_return() operations\n  vmstat: Use this_cpu_inc_return for vm statistics\n  x86: Support for this_cpu_add, sub, dec, inc_return\n  percpu: Generic support for this_cpu_add, sub, dec, inc_return\n  ...\n\nFixed up conflicts: in arch/x86/kernel/{apic/nmi.c, apic/x2apic_uv_x.c, process.c}\nas per Tejun.\n"
    },
    {
      "commit": "23d69b09b78c4876e134f104a3814c30747c53f1",
      "tree": "40744de4f4126c21027ce537264524095e0e7979",
      "parents": [
        "e744070fd4ff9d3114277e52d77afa21579adce2",
        "569ff2de2e1c8ac67c8df3a7367d46d0d9460a35"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 16:58:04 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 16:58:04 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.38\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (33 commits)\n  usb: don\u0027t use flush_scheduled_work()\n  speedtch: don\u0027t abuse struct delayed_work\n  media/video: don\u0027t use flush_scheduled_work()\n  media/video: explicitly flush request_module work\n  ioc4: use static work_struct for ioc4_load_modules()\n  init: don\u0027t call flush_scheduled_work() from do_initcalls()\n  s390: don\u0027t use flush_scheduled_work()\n  rtc: don\u0027t use flush_scheduled_work()\n  mmc: update workqueue usages\n  mfd: update workqueue usages\n  dvb: don\u0027t use flush_scheduled_work()\n  leds-wm8350: don\u0027t use flush_scheduled_work()\n  mISDN: don\u0027t use flush_scheduled_work()\n  macintosh/ams: don\u0027t use flush_scheduled_work()\n  vmwgfx: don\u0027t use flush_scheduled_work()\n  tpm: don\u0027t use flush_scheduled_work()\n  sonypi: don\u0027t use flush_scheduled_work()\n  hvsi: don\u0027t use flush_scheduled_work()\n  xen: don\u0027t use flush_scheduled_work()\n  gdrom: don\u0027t use flush_scheduled_work()\n  ...\n\nFixed up trivial conflict in drivers/media/video/bt8xx/bttv-input.c\nas per Tejun.\n"
    },
    {
      "commit": "56b85f32d530d09d6805488ad00775d4e0e3baab",
      "tree": "e7fbe69e338ef775d3b2dd822aa915d259b4bc94",
      "parents": [
        "3e5b08cbbf78bedd316904ab0cf3b27119433ee5",
        "568389c257fa7d74ce36c2f78bad31965fded4cf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 14:39:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 14:39:20 2011 -0800"
      },
      "message": "Merge branch \u0027tty-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6\n\n* \u0027tty-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (36 commits)\n  serial: apbuart: Fixup apbuart_console_init()\n  TTY: Add tty ioctl to figure device node of the system console.\n  tty: add \u0027active\u0027 sysfs attribute to tty0 and console device\n  drivers: serial: apbuart: Handle OF failures gracefully\n  Serial: Avoid unbalanced IRQ wake disable during resume\n  tty: fix typos/errors in tty_driver.h comments\n  pch_uart : fix warnings for 64bit compile\n  8250: fix uninitialized FIFOs\n  ip2: fix compiler warning on ip2main_pci_tbl\n  specialix: fix compiler warning on specialix_pci_tbl\n  rocket: fix compiler warning on rocket_pci_ids\n  8250: add a UPIO_DWAPB32 for 32 bit accesses\n  8250: use container_of() instead of casting\n  serial: omap-serial: Add support for kernel debugger\n  serial: fix pch_uart kconfig \u0026 build\n  drivers: char: hvc: add arm JTAG DCC console support\n  RS485 documentation: add 16C950 UART description\n  serial: ifx6x60: fix memory leak\n  serial: ifx6x60: free IRQ on error\n  Serial: EG20T: add PCH_UART driver\n  ...\n\nFixed up conflicts in drivers/serial/apbuart.c with evil merge that\nmakes the code look fairly sane (unlike either side).\n"
    },
    {
      "commit": "b4a45f5fe8078bfc10837dbd5b98735058bc4698",
      "tree": "df6f13a27610a3ec7eb4a661448cd779a8f84c79",
      "parents": [
        "01539ba2a706ab7d35fc0667dff919ade7f87d63",
        "b3e19d924b6eaf2ca7d22cba99a517c5171007b6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin: (57 commits)\n  fs: scale mntget/mntput\n  fs: rename vfsmount counter helpers\n  fs: implement faster dentry memcmp\n  fs: prefetch inode data in dcache lookup\n  fs: improve scalability of pseudo filesystems\n  fs: dcache per-inode inode alias locking\n  fs: dcache per-bucket dcache hash locking\n  bit_spinlock: add required includes\n  kernel: add bl_list\n  xfs: provide simple rcu-walk ACL implementation\n  btrfs: provide simple rcu-walk ACL implementation\n  ext2,3,4: provide simple rcu-walk ACL implementation\n  fs: provide simple rcu-walk generic_check_acl implementation\n  fs: provide rcu-walk aware permission i_ops\n  fs: rcu-walk aware d_revalidate method\n  fs: cache optimise dentry and inode for rcu-walk\n  fs: dcache reduce branches in lookup path\n  fs: dcache remove d_mounted\n  fs: fs_struct use seqlock\n  fs: rcu-walk for path lookup\n  ...\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": "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": "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": "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": "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": "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": "9e9bc9736756f25d6c47b4eba0ebf25b20a6f153",
      "tree": "647240f479c5f23910c3e6194d1c35b6ba54d75e",
      "parents": [
        "3c0cb7c31c206aaedb967e44b98442bbeb17a6c4",
        "e3c92215198cb6aa00ad38db2780faa6b72e0a3f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 18:32:12 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 18:32:12 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: (255 commits)\n  [media] radio-aimslab.c: Fix gcc 4.5+ bug\n  [media] cx25821: Fix compilation breakage due to BKL dependency\n  [media] v4l2-compat-ioctl32: fix compile warning\n  [media] zoran: fix compiler warning\n  [media] tda18218: fix compile warning\n  [media] ngene: fix compile warning\n  [media] DVB: IR support for TechnoTrend CT-3650\n  [media] cx23885, cimax2.c: Fix case of two CAM insertion irq\n  [media] ir-nec-decoder: fix repeat key issue\n  [media] staging: se401 depends on USB\n  [media] staging: usbvideo/vicam depends on USB\n  [media] soc_camera: Add the ability to bind regulators to soc_camedra devices\n  [media] V4L2: Add a v4l2-subdev (soc-camera) driver for OmniVision OV2640 sensor\n  [media] v4l: soc-camera: switch to .unlocked_ioctl\n  [media] v4l: ov772x: simplify pointer dereference\n  [media] ov9640: fix OmniVision OV9640 sensor driver\u0027s priv data retrieving\n  [media] ov9640: use macro to request OmniVision OV9640 sensor private data\n  [media] ivtv-i2c: Fix two warnings\n  [media] staging/lirc: Update lirc TODO files\n  [media] cx88: Remove the obsolete i2c_adapter.id field\n  ...\n"
    },
    {
      "commit": "3c0cb7c31c206aaedb967e44b98442bbeb17a6c4",
      "tree": "3ecba45d7ffae4fba4a5aafaef4af5b0b1105bde",
      "parents": [
        "f70f5b9dc74ca7d0a64c4ead3fb28da09dc1b234",
        "404a02cbd2ae8bf256a2fa1169bdfe86bb5ebb34"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 16:50:35 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 16:50:35 2011 -0800"
      },
      "message": "Merge branch \u0027devel\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm\n\n* \u0027devel\u0027 of master.kernel.org:/home/rmk/linux-2.6-arm: (416 commits)\n  ARM: DMA: add support for DMA debugging\n  ARM: PL011: add DMA burst threshold support for ST variants\n  ARM: PL011: Add support for transmit DMA\n  ARM: PL011: Ensure IRQs are disabled in UART interrupt handler\n  ARM: PL011: Separate hardware FIFO size from TTY FIFO size\n  ARM: PL011: Allow better handling of vendor data\n  ARM: PL011: Ensure error flags are clear at startup\n  ARM: PL011: include revision number in boot-time port printk\n  ARM: vexpress: add sched_clock() for Versatile Express\n  ARM i.MX53: Make MX53 EVK bootable\n  ARM i.MX53: Some bug fix about MX53 MSL code\n  ARM: 6607/1: sa1100: Update platform device registration\n  ARM: 6606/1: sa1100: Fix platform device registration\n  ARM i.MX51: rename IPU irqs\n  ARM i.MX51: Add ipu clock support\n  ARM: imx/mx27_3ds: Add PMIC support\n  ARM: DMA: Replace page_to_dma()/dma_to_page() with pfn_to_dma()/dma_to_pfn()\n  mx51: fix usb clock support\n  MX51: Add support for usb host 2\n  arch/arm/plat-mxc/ehci.c: fix errors/typos\n  ...\n"
    },
    {
      "commit": "65b2074f84be2287e020839e93b4cdaaf60eb37c",
      "tree": "d020c3c37fa5b112ee531b324214236bef9feec6",
      "parents": [
        "28d9bfc37c861aa9c8386dff1ac7e9a10e5c5162",
        "6bf4123760a5aece6e4829ce90b70b6ffd751d65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 10:23:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 10:23:33 2011 -0800"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (30 commits)\n  sched: Change wait_for_completion_*_timeout() to return a signed long\n  sched, autogroup: Fix reference leak\n  sched, autogroup: Fix potential access to freed memory\n  sched: Remove redundant CONFIG_CGROUP_SCHED ifdef\n  sched: Fix interactivity bug by charging unaccounted run-time on entity re-weight\n  sched: Move periodic share updates to entity_tick()\n  printk: Use this_cpu_{read|write} api on printk_pending\n  sched: Make pushable_tasks CONFIG_SMP dependant\n  sched: Add \u0027autogroup\u0027 scheduling feature: automated per session task groups\n  sched: Fix unregister_fair_sched_group()\n  sched: Remove unused argument dest_cpu to migrate_task()\n  mutexes, sched: Introduce arch_mutex_cpu_relax()\n  sched: Add some clock info to sched_debug\n  cpu: Remove incorrect BUG_ON\n  cpu: Remove unused variable\n  sched: Fix UP build breakage\n  sched: Make task dump print all 15 chars of proc comm\n  sched: Update tg-\u003eshares after cpu.shares write\n  sched: Allow update_cfs_load() to update global load\n  sched: Implement demand based update_cfs_load()\n  ...\n"
    },
    {
      "commit": "b08b27213384d1bd6eda04a2b6f788b4cdee0f34",
      "tree": "8e6514091c468456738d106fdaef0f1e4c7dcbd4",
      "parents": [
        "8484baaa5065b460e5eb18ee721d8417251f7897",
        "846f40455276617275284a4b76b89311b4aed0b9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 10:01:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 06 10:01:23 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw:\n  GFS2: Don\u0027t flush delete workqueue when releasing the transaction lock\n  GFS2: fsck.gfs2 reported statfs error after gfs2_grow\n  GFS2: Merge glock state fields into a bitfield\n  GFS2: Fix uninitialised error value in previous patch\n  GFS2: fix recursive locking during rindex truncates\n  GFS2: reread rindex when necessary to grow rindex\n  GFS2: Remove duplicate #defines from glock.h\n  GFS2: Clean up of gdlm_lock function\n  GFS2: Allow gfs2 to update quota usage values through the quotactl interface\n  GFS2: fs/gfs2/glock.h: Add __attribute__((format(printf,2,3)) to gfs2_print_dbg\n  GFS2: fs/gfs2/glock.c: Use printf extension %pV\n  GFS2: Clean up duplicated setattr code\n  GFS2: Remove unreachable calls to vmtruncate\n  GFS2: fs/gfs2/glock.c: Convert sprintf_symbol to %pS\n  GFS2: Change two WQ_RESCUERs into WQ_MEM_RECLAIM\n"
    },
    {
      "commit": "31edf274f9aff1ccd39934a0b2fce38f4405c656",
      "tree": "fdc7bc445307ccb9648ca1a71375947c8ed59722",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5",
        "ed60453fa8f8fc3d034dfdf10371a99cc6905626",
        "ac61d143ffe2a6db4d4bcf47c21a5159d6a1b644",
        "28257f7fdee0facc3b7f934e82c2485f27120d41",
        "b23065313297e750edd57ab6edfd36224826724e",
        "50005a8deb38e5e6456ebd94e57adb321d4589de",
        "cf562b4a550b3cd9d602a05bc27aaaaa376947b4",
        "3d09fbcd26851ffb2c40cec411b8e56db02520d1",
        "8a9618f5dfca35edb0d7ab6374ff586e2e9e989b"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Wed Jan 05 18:08:10 2011 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Wed Jan 05 18:08:10 2011 +0000"
      },
      "message": "Merge branches \u0027ftrace\u0027, \u0027gic\u0027, \u0027io\u0027, \u0027kexec\u0027, \u0027mod\u0027, \u0027sa11x0\u0027, \u0027sh\u0027 and \u0027versatile\u0027 into devel\n"
    },
    {
      "commit": "27066fd484a32c80630136aa2b91c980f3198f9d",
      "tree": "78ddabdedbfd7525d13ecd62a745525843f1d0e8",
      "parents": [
        "101e5f77bf35679809586e250b6c62193d2ed179",
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 05 14:14:42 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 05 14:14:46 2011 +0100"
      },
      "message": "Merge commit \u0027v2.6.37\u0027 into sched/core\n\nMerge reason: Merge the final .37 tree.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "88ae7624a6fe890e5a8ca57b25420f66e1389f8b",
      "tree": "cfdb6188e0234cf3d819984790f909f5c6e1e102",
      "parents": [
        "58c66df3e38ffb1d59cc5162bb9e07c859288034"
      ],
      "author": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Mon Dec 27 07:47:54 2010 -0300"
      },
      "committer": {
        "name": "Mauro Carvalho Chehab",
        "email": "mchehab@redhat.com",
        "time": "Wed Dec 29 08:17:11 2010 -0200"
      },
      "message": "[media] V4L1 removal: Remove linux/videodev.h\n\nThere\u0027s no sense on keeping it on 2.6.38, as nobody is using it\nanymore, at the kernel tree, and installing it at the userspace\nAPI.\n\nAs two deprecated drivers still need it, move it to their internal\ndirectories.\n\nReviewed-by: Hans Verkuil \u003chverkuil@xs4all.nl\u003e\nSigned-off-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\n"
    },
    {
      "commit": "5d8e4bddc635dd61ab8b3bcb75c59934e9c1e19f",
      "tree": "cfb5bc7a3f089117e9bdeda19b76e309c02efaba",
      "parents": [
        "f094cfc6c382cec7b2c77dd7798576684153acbb"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 24 15:59:06 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 24 15:59:06 2010 +0100"
      },
      "message": "ncpfs: don\u0027t use flush_scheduled_work()\n\nflush_scheduled_work() is deprecated and scheduled to be removed.\nDirectly flush the used works on stop instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Petr Vandrovec \u003cpetr@vandrovec.name\u003e\n"
    },
    {
      "commit": "9b00a8182987e8b7028d97c2bee3319ef383b57a",
      "tree": "d1b933db966352eb247e0712cab7e9594e93e3eb",
      "parents": [
        "7f6b0db9f63ba423d989e29f6318fe7e68760421"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 24 15:59:06 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 24 15:59:06 2010 +0100"
      },
      "message": "ocfs2: don\u0027t use flush_scheduled_work()\n\nflush_scheduled_work() is deprecated and scheduled to be removed.\n\n* cancel_delayed_work() + flush_schedule_work() -\u003e\n  cancel_delayed_work_sync().\n\n* flush qs-\u003eqs_work directly on exit instead.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "eda4b716ea1f2a647a39cebae66b3fae4c4b80e4",
      "tree": "ab4318b72be4635c1213aa0def631e1169307660",
      "parents": [
        "55fb78a3a80348d87b2e3d79f61f8a9252dd86f5",
        "7d8f98769e7f4bc29c38789daeb416c6a7d7c241"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 23 16:36:48 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 23 16:36:48 2010 -0800"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:\n  ocfs2: Fix system inodes cache overflow.\n  ocfs2: Hold ip_lock when set/clear flags for indexed dir.\n  ocfs2: Adjust masklog flag values\n  Ocfs2: Teach \u0027coherency\u003dfull\u0027 O_DIRECT writes to correctly up_read i_alloc_sem.\n  ocfs2/dlm: Migrate lockres with no locks if it has a reference\n"
    },
    {
      "commit": "55fb78a3a80348d87b2e3d79f61f8a9252dd86f5",
      "tree": "7f5ee9be42840f7c5a6045a481187e59679e41f6",
      "parents": [
        "08861c713c1314d5b7329a290b5d53ad711112c3",
        "8a7411a24350bac141271755c66f40c56b0535ae"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 23 16:25:31 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 23 16:25:31 2010 -0800"
      },
      "message": "Merge branch \u0027linus-hot-fix\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027linus-hot-fix\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: fix on-line resizing regression\n"
    },
    {
      "commit": "8a7411a24350bac141271755c66f40c56b0535ae",
      "tree": "ed77dcde1fe4122f291c6fda3def7e776fa8bdf8",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 20 22:30:36 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Dec 23 15:00:54 2010 -0500"
      },
      "message": "ext4: fix on-line resizing regression\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d25352\n\nThis regression was caused by commit a31437b85: \"ext4: use\nsb_issue_zeroout in setup_new_group_blocks\", by accidentally dropping\nthe code which reserved the block group descriptor and inode table\nblocks.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f06328d7721ad3852c45eb2a10a0c8f9439b5f33",
      "tree": "739a5e8e3c0a38dccc18e9155add4ec9a528c8d1",
      "parents": [
        "eabb26cacdec33ca6f6fcaee762b57c2205169ca"
      ],
      "author": {
        "name": "Prasad Joshi",
        "email": "prasadjoshi124@gmail.com",
        "time": "Tue Dec 21 17:24:20 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:33 2010 -0800"
      },
      "message": "logfs: fix \"Kernel BUG at readwrite.c:1193\"\n\nThis happens when __logfs_create() tries to write a new inode to the disk\nwhich is full.\n\n__logfs_create() associates the transaction pointer with inode.  During\nthe logfs_write_inode() function call chain this transaction pointer is\nmoved from inode to page-\u003eprivate using function move_inode_to_page\n(do_write_inode() -\u003e inode_to_page() -\u003e move_inode_to_page)\n\nWhen the write inode fails, the transaction is aborted and iput is called\non the failed inode.  During delete_inode the same transaction pointer\nassociated with the page is getting used.  Thus causing kernel BUG.\n\nThe patch checks for error in write_inode() and restores the page-\u003eprivate\nto NULL.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d20162\n\nSigned-off-by: Prasad Joshi \u003cprasadjoshi124@gmail.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: Florian Mickler \u003cflorian@mickler.org\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Maciej Rutecki \u003cmaciej.rutecki@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eabb26cacdec33ca6f6fcaee762b57c2205169ca",
      "tree": "aa6975de08a6843d7d23f741644b2b3fca2980b4",
      "parents": [
        "7a2d19bced51af31d2c9ff55219400ed0a6c012f"
      ],
      "author": {
        "name": "Prasad Joshi",
        "email": "prasadjoshi124@gmail.com",
        "time": "Tue Dec 21 17:24:19 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:33 2010 -0800"
      },
      "message": "logfs: fix deadlock in logfs_get_wblocks, hold and wait on super-\u003es_write_mutex\n\ndo_logfs_journal_wl_pass() should use GFP_NOFS for memory allocation GC\ncode calls btree_insert32 with GFP_KERNEL while holding a mutex\nsuper-\u003es_write_mutex.\n\nThe same mutex is used in address_space_operations-\u003ewritepage(), and a\ncall to writepage() could be triggered as a result of memory allocation\nin btree_insert32, causing a deadlock.\n\nAddresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d20342\n\nSigned-off-by: Prasad Joshi \u003cprasadjoshi124@gmail.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: Florian Mickler \u003cflorian@mickler.org\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Maciej Rutecki \u003cmaciej.rutecki@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d8f98769e7f4bc29c38789daeb416c6a7d7c241",
      "tree": "2b39ff7878cc4d4f8736a64764fffbfaf63aa474",
      "parents": [
        "8ac33dc86d37ca76d282aa112d4f2794a731064e"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Wed Dec 22 17:50:30 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Wed Dec 22 02:35:36 2010 -0800"
      },
      "message": "ocfs2: Fix system inodes cache overflow.\n\nWhen we store system inodes cache in ocfs2_super,\nwe use a array for global system inodes. But unfortunately,\nthe range is calculated wrongly which makes it overflow and\npollute ocfs2_super-\u003elocal_system_inodes.\nThis patch fix it by setting the range properly.\n\nThe corresponding bug is ossbug1303.\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1303\n\nCc: stable@kernel.org\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "9d5004fcf6e4e8caa9efbc25c9f85059b165329c",
      "tree": "7f1b53d5487ffabb7be6e1f5b5b964448651b5bc",
      "parents": [
        "453434cf3fdcd3954bb52460e37d4945a0913d3e",
        "361cf40519a491f68b28ad90225e4611c4bf8e12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 21:32:20 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 21:32:20 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: handle partial result from get_user_pages\n  ceph: mark user pages dirty on direct-io reads\n  ceph: fix null pointer dereference in ceph_init_dentry for nfs reexport\n  ceph: fix direct-io on non-page-aligned buffers\n  ceph: fix msgr_init error path\n"
    },
    {
      "commit": "3cb50ddf97a0a1ca4c68bc12fa1e727a6b45fbf2",
      "tree": "d0b6c48e52bcccdd67c0d440a7ac7629404394fd",
      "parents": [
        "b8da46d3d55807037b58f14621a0949f18053bde"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Mon Dec 20 15:53:18 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:09:57 2010 -0800"
      },
      "message": "Fix btrfs b0rkage\n\nBuggered-in: 76dda93c6ae2 (\"Btrfs: add snapshot/subvolume destroy\nioctl\")\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca680888d5d0d03862ec311a83c6a1c7a1e00a01",
      "tree": "bc2a1777f1d715f947fa77940ebce5c43029b37b",
      "parents": [
        "40dc11ffb35e8c4e8fa71092048e0f8de9db758c",
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Dec 19 16:35:08 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Dec 19 16:35:14 2010 +0100"
      },
      "message": "Merge commit \u0027v2.6.37-rc6\u0027 into sched/core\n\nMerge reason: Update to the latest -rc.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b6aa5901c7a2bd90d0b6b9866300d2648b2568f3",
      "tree": "1161ed9dbacb7ace73c5d48fc9acd1db0d7815d5",
      "parents": [
        "92cf765237e2787eb168096305c448caf25ac7f8"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Wed Dec 15 20:45:41 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:54:40 2010 -0800"
      },
      "message": "ceph: mark user pages dirty on direct-io reads\n\nFor read operation, we have to set the argument _write_ of get_user_pages\nto 1 since we will write data to pages. Also, we need to SetPageDirty before\nreleasing these pages.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "92cf765237e2787eb168096305c448caf25ac7f8",
      "tree": "089f6d5a0f979ca858295cbf616ee2e85a62680f",
      "parents": [
        "ab226e21ad34f6ef52e00d2ab399d2364b4cdfee"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:53:41 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 17 09:53:48 2010 -0800"
      },
      "message": "ceph: fix null pointer dereference in ceph_init_dentry for nfs reexport\n\nThe fh_to_dentry etc. methods use ceph_init_dentry(), which assumes that\nd_parent is defined.  It isn\u0027t for those callers, so check!\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee1be8626355e6a1f3f8c44e2351ff2661c5998d",
      "tree": "cc7d20969444eb5e3c0541991014ef4fc5332185",
      "parents": [
        "cfb824349556904b319464139be5c75fce983b0d"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Dec 06 11:40:05 2010 -0600"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:18:05 2010 +0100"
      },
      "message": "fs: Use this_cpu_inc_return in buffer.c\n\n__this_cpu_inc can create a single instruction with the same effect\nas the _get_cpu_var(..)++ construct in buffer.c.\n\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "275c8b93288ef0c2281e414e069ea8ed4bad03f7",
      "tree": "df906ef901d7719d66944921c7436f5db718dc2f",
      "parents": [
        "909ea96468096b07fbb41aaf69be060d92bd9271",
        "8f1d97c79eb65de1d05799d6b81d79cd94169114"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:16:46 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:16:46 2010 +0100"
      },
      "message": "Merge branch \u0027this_cpu_ops\u0027 into for-2.6.38\n"
    },
    {
      "commit": "c7b92516a9c68fa5403879225a5a19974a801ef6",
      "tree": "1f72ebd85bca40806024ac6b8f5caab068b7c15d",
      "parents": [
        "5309665dcc1143d659d82568da8d00f0e08a58f9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux.com",
        "time": "Mon Dec 06 11:16:28 2010 -0600"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Dec 17 15:07:19 2010 +0100"
      },
      "message": "fs: Use this_cpu_xx operations in buffer.c\n\nOptimize various per cpu area operations through these new percpu\noperations.  These operations avoid address calculations through the\nuse of segment prefixes and multiple memory references through RMW\ninstructions etc.\n\nReduces code size:\n\nBefore:\n\nchristoph@linux-2.6$ size fs/buffer.o\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n  19169\t     80\t     28\t  19277\t   4b4d\tfs/buffer.o\n\nAfter:\n\nchristoph@linux-2.6$ size fs/buffer.o\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n  19138\t     80\t     28\t  19246\t   4b2e\tfs/buffer.o\n\nV3-\u003eV4:\n\t- Move the use of this_cpu_inc_return into a later patch so that\n\t  this one can go in without percpu infrastructure changes.\n\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "b7b8de087384cc1954a8cd075af3f9e5977caa2e",
      "tree": "e362fe2c886c610caa9bd45fead9c4ae4789529e",
      "parents": [
        "fbc92a3455577ab17615cbcb91826399061bd789"
      ],
      "author": {
        "name": "Werner Fink",
        "email": "werner@suse.de",
        "time": "Fri Dec 03 12:48:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Dec 16 16:18:28 2010 -0800"
      },
      "message": "TTY: Add tty ioctl to figure device node of the system console.\n\nThis has been in the SuSE kernels for a very long time.\n\nSigned-off-by: Werner Fink \u003cwerner@suse.de\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "a3383e8372c0c11238f9bb9777929bfc3a2d320a",
      "tree": "1eb117842e70b17e8b7e96a955cd0ef6f0f40732",
      "parents": [
        "68a4ec9c03461e94a9577cf499069621bb074833",
        "7d13162332f2b67a941d18cee20f1c0413e020de"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 16 15:45:49 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 16 15:45:49 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify:\n  fanotify: fill in the metadata_len field on struct fanotify_event_metadata\n  fanotify: split version into version and metadata_len\n  fanotify: Dont try to open a file descriptor for the overflow event\n  fanotify: Introduce FAN_NOFD\n  fanotify: do not leak user reference on allocation failure\n  inotify: stop kernel memory leak on file creation failure\n  fanotify: on group destroy allow all waiters to bypass permission check\n  fanotify: Dont allow a mask of 0 if setting or removing a mark\n  fanotify: correct broken ref counting in case adding a mark failed\n  fanotify: if set by user unset FMODE_NONOTIFY before fsnotify_perm() is called\n  fanotify: remove packed from access response message\n  fanotify: deny permissions when no event was sent\n"
    },
    {
      "commit": "b2837fcf4994e699a4def002e26f274d95b387c1",
      "tree": "fcb2f4e91b11746972e9f1abd9e4b70e7573286c",
      "parents": [
        "20b7643d8ee44254fc972d42655bace81e7ab50a"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "alexo@tuxera.com",
        "time": "Thu Dec 16 18:08:41 2010 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@tuxera.com",
        "time": "Thu Dec 16 18:08:46 2010 +0100"
      },
      "message": "hfsplus: %L-to-%ll, macro correction, and remove unneeded braces\n\nClean-up based on checkpatch.pl report against unnecessary braces\n(`{\u0027 and `}\u0027), non-standard format option %Lu (%llu recommended)\nas well as one trailing statement in a macro definition which\nshould have been on the next line.\n\nSigned-off-by: Anton Salikhmetov \u003calexo@tuxera.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@tuxera.com\u003e\n"
    },
    {
      "commit": "20b7643d8ee44254fc972d42655bace81e7ab50a",
      "tree": "a6642fdd127abc31a173d032249cbd319d7ecae9",
      "parents": [
        "21f2296a598c4089e0a9bdf54634269ac913a693"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "alexo@tuxera.com",
        "time": "Thu Dec 16 18:08:40 2010 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@tuxera.com",
        "time": "Thu Dec 16 18:08:46 2010 +0100"
      },
      "message": "hfsplus: spaces/indentation clean-up\n\nFix incorrect spaces and indentation reported by checkpatch.pl.\n\nSigned-off-by: Anton Salikhmetov \u003calexo@tuxera.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@tuxera.com\u003e\n"
    },
    {
      "commit": "21f2296a598c4089e0a9bdf54634269ac913a693",
      "tree": "f55214d1b9b0627f1a9f7951a57183e76458d079",
      "parents": [
        "2753cc281c9a0e8a0a45ee2b8110866a9fe63bdd"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "alexo@tuxera.com",
        "time": "Thu Dec 16 18:08:39 2010 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@tuxera.com",
        "time": "Thu Dec 16 18:08:46 2010 +0100"
      },
      "message": "hfsplus: C99 comments clean-up\n\nMatch coding style restriction against C99 comments where\ncheckpatch.pl reported errors about their usage.\n\nSigned-off-by: Anton Salikhmetov \u003calexo@tuxera.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@tuxera.com\u003e\n"
    },
    {
      "commit": "2753cc281c9a0e8a0a45ee2b8110866a9fe63bdd",
      "tree": "d28794ef990637cfcd734a8b467f119e6d69dac1",
      "parents": [
        "596276c3571e2108f4b336be545ece2eacf3da59"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "alexo@tuxera.com",
        "time": "Thu Dec 16 18:08:38 2010 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@tuxera.com",
        "time": "Thu Dec 16 18:08:45 2010 +0100"
      },
      "message": "hfsplus: over 80 character lines clean-up\n\nMatch coding style line length limitation where checkpatch.pl\nreported over-80-character-line warnings.\n\nSigned-off-by: Anton Salikhmetov \u003calexo@tuxera.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@tuxera.com\u003e\n"
    },
    {
      "commit": "596276c3571e2108f4b336be545ece2eacf3da59",
      "tree": "c00fcd0e01cf12a5edfe8e87ba2f39fcd07c90a5",
      "parents": [
        "34a2d313c51f47cae50ccb89f4196462665f2c48"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "alexo@tuxera.com",
        "time": "Thu Dec 16 14:44:51 2010 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@tuxera.com",
        "time": "Thu Dec 16 18:08:43 2010 +0100"
      },
      "message": "hfsplus: fix an artifact in ioctl flag checking\n\nFix a flag checking artifact in hfsplus_ioctl_getflags() routine\nfound while doing clean-up against assignments inside `if\u0027s.\n\nSigned-off-by: Anton Salikhmetov \u003calexo@tuxera.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@tuxera.com\u003e\n"
    },
    {
      "commit": "846f40455276617275284a4b76b89311b4aed0b9",
      "tree": "c8bd64c7e87554e79ab5f37d9c857c8efe91d4cc",
      "parents": [
        "bcd7278d8a423a255e45f4d10afe564328f1885f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 16 15:18:48 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 16 15:18:48 2010 +0000"
      },
      "message": "GFS2: Don\u0027t flush delete workqueue when releasing the transaction lock\n\nThere is no requirement to flush the delete workqueue before a\ngfs2 filesystem is suspended. The workqueue\u0027s work will just\nbe suspended along with the rest of the tasks on the filesystem.\n\nThe resolves a deadlock situation where the transaction lock\u0027s\ndemotion code was trying to flush the delete workqueue while at\nthe same time, the workqueue was waiting for the transaction\nlock.\n\nThe delete workqueue is flushed by gfs2_make_fs_ro() already, so\nthat umount/remount are correctly protected anyway.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8ac33dc86d37ca76d282aa112d4f2794a731064e",
      "tree": "1631d3643087ebb52da9eb8ec084e7191ab20e75",
      "parents": [
        "41b41a26d4d6e4e3ad877d02377844ab9552dc16"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Wed Dec 15 16:30:00 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Dec 16 00:36:15 2010 -0800"
      },
      "message": "ocfs2: Hold ip_lock when set/clear flags for indexed dir.\n\nWhen we set/clear the dyn_features for an inode we hold the ip_lock.\nSo do it when we set/clear OCFS2_INDEXED_DIR_FL also.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "41b41a26d4d6e4e3ad877d02377844ab9552dc16",
      "tree": "aa548b86e18c1765e6153123187e65d45be76d06",
      "parents": [
        "39c99f12f15c8bf8257985d9b2a2548a03d18c00"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Thu Dec 09 18:20:38 2010 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Dec 16 00:36:11 2010 -0800"
      },
      "message": "ocfs2: Adjust masklog flag values\n\nTwo masklogs had the same flag value.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "947b10ae0aeda89fc066a7470fdba55f72b0b8fc",
      "tree": "93934dcf6b7709ed40e861d3b586f2c3f37f4151",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Dec 16 09:57:57 2010 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Thu Dec 16 14:35:18 2010 +0900"
      },
      "message": "nilfs2: fix regression of garbage collection ioctl\n\nOn 2.6.37-rc1, garbage collection ioctl of nilfs was broken due to the\ncommit 263d90cefc7d82a0 (\"nilfs2: remove own inode hash used for GC\"),\nand leading to filesystem corruption.\n\nThe patch doesn\u0027t queue gc-inodes for log writer if they are reused\nthrough the vfs inode cache.  Here, gc-inode is the inode which\nbuffers blocks to be relocated on GC.  That patch queues gc-inodes in\nnilfs_init_gcinode() function, but this function is not called when\nthey don\u0027t have I_NEW flag.  Thus, some of live blocks are wrongly\noverrode without being moved to new logs.\n\nThis resolves the problem by moving the gc-inode queueing to an outer\nfunction to ensure it\u0027s done right.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "ab226e21ad34f6ef52e00d2ab399d2364b4cdfee",
      "tree": "95b9683b601a0602d9f813f7e6786e9a0e6da118",
      "parents": [
        "d96c9043d1588f04c7f467167f653c07d83232d5"
      ],
      "author": {
        "name": "Henry C Chang",
        "email": "henry_c_chang@tcloudcomputing.com",
        "time": "Wed Dec 15 20:41:54 2010 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 15 20:46:16 2010 -0800"
      },
      "message": "ceph: fix direct-io on non-page-aligned buffers\n\nThe user buffer may be 512-byte aligned, not page-aligned.  We were\nassuming the buffer was page-aligned and only accounting for\nnon-page-aligned io offsets.\n\nSigned-off-by: Henry C Chang \u003chenry_c_chang@tcloudcomputing.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a4851d8f7d6351a395d36ae8fdcf41745a832d76",
      "tree": "e1d62324316e36eea0146cb9714378edc77f458d",
      "parents": [
        "667c78afaec0ac500908e191e8f236e9578d7b1f",
        "6d5c3aa84b3e431f2d0fc39c73c867d1a4dd8cff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 15 12:41:17 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 15 12:41:17 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: fix typo which broke \u0027..\u0027 detection in ext4_find_entry()\n  ext4: Turn off multiple page-io submission by default\n"
    },
    {
      "commit": "462e635e5b73ba9a4c03913b77138cd57ce4b050",
      "tree": "6ff0e84eecc6252d41d7c08730018c0149e7227f",
      "parents": [
        "0fcdcfbbc98f70f559e4b36773a69972489a6d8f"
      ],
      "author": {
        "name": "Tavis Ormandy",
        "email": "taviso@cmpxchg8b.com",
        "time": "Thu Dec 09 15:29:42 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 15 12:30:36 2010 -0800"
      },
      "message": "install_special_mapping skips security_file_mmap check.\n\nThe install_special_mapping routine (used, for example, to setup the\nvdso) skips the security check before insert_vm_struct, allowing a local\nattacker to bypass the mmap_min_addr security restriction by limiting\nthe available pages for special mappings.\n\nbprm_mm_init() also skips the check, and although I don\u0027t think this can\nbe used to bypass any restrictions, I don\u0027t see any reason not to have\nthe security check.\n\n  $ uname -m\n  x86_64\n  $ cat /proc/sys/vm/mmap_min_addr\n  65536\n  $ cat install_special_mapping.s\n  section .bss\n      resb BSS_SIZE\n  section .text\n      global _start\n      _start:\n          mov     eax, __NR_pause\n          int     0x80\n  $ nasm -D__NR_pause\u003d29 -DBSS_SIZE\u003d0xfffed000 -f elf -o install_special_mapping.o install_special_mapping.s\n  $ ld -m elf_i386 -Ttext\u003d0x10000 -Tbss\u003d0x11000 -o install_special_mapping install_special_mapping.o\n  $ ./install_special_mapping \u0026\n  [1] 14303\n  $ cat /proc/14303/maps\n  0000f000-00010000 r-xp 00000000 00:00 0                                  [vdso]\n  00010000-00011000 r-xp 00001000 00:19 2453665                            /home/taviso/install_special_mapping\n  00011000-ffffe000 rwxp 00000000 00:00 0                                  [stack]\n\nIt\u0027s worth noting that Red Hat are shipping with mmap_min_addr set to\n4096.\n\nSigned-off-by: Tavis Ormandy \u003ctaviso@google.com\u003e\nAcked-by: Kees Cook \u003ckees@ubuntu.com\u003e\nAcked-by: Robert Swiecki \u003cswiecki@google.com\u003e\n[ Changed to not drop the error code - akpm ]\nReviewed-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d13162332f2b67a941d18cee20f1c0413e020de",
      "tree": "a9e40f802579e750fbf75e025e9cee7c760ca558",
      "parents": [
        "62731fa0c893515dc6cbc3e0a2879a92793c735f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Dec 07 15:27:57 2010 -0500"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed Dec 15 13:58:18 2010 -0500"
      },
      "message": "fanotify: fill in the metadata_len field on struct fanotify_event_metadata\n\nThe fanotify_event_metadata now has a field which is supposed to\nindicate the length of the metadata portion of the event.  Fill in that\nfield as well.\n\nBased-in-part-on-patch-by: Alexey Zaytsev \u003calexey.zaytsev@gmail.com\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "afe2c511fb2d75f1515081ff1be15bd79cfe722d",
      "tree": "28aa74e9e0c654a95bf3306101e10ac1d16919d1",
      "parents": [
        "2d64672ed38721b7a3815009d79bfb90a1f34a17"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Dec 14 16:21:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Dec 15 10:56:11 2010 +0100"
      },
      "message": "workqueue: convert cancel_rearming_delayed_work[queue]() users to cancel_delayed_work_sync()\n\ncancel_rearming_delayed_work[queue]() has been superceded by\ncancel_delayed_work_sync() quite some time ago.  Convert all the\nin-kernel users.  The conversions are completely equivalent and\ntrivial.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: netdev@vger.kernel.org\nCc: Anton Vorontsov \u003ccbou@mail.ru\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: xfs-masters@oss.sgi.com\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: netfilter-devel@vger.kernel.org\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: linux-nfs@vger.kernel.org\n"
    },
    {
      "commit": "6d5c3aa84b3e431f2d0fc39c73c867d1a4dd8cff",
      "tree": "d03a2ddc636597d96e9333dd79bae22314564e67",
      "parents": [
        "1449032be17abb69116dbc393f67ceb8bd034f92"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@nokia.com",
        "time": "Tue Dec 14 21:45:31 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 21:45:31 2010 -0500"
      },
      "message": "ext4: fix typo which broke \u0027..\u0027 detection in ext4_find_entry()\n\nThere should be a check for the NUL character instead of \u00270\u0027.\n\nFortunately the only thing that cares about this is NFS serving, which\nis why we didn\u0027t notice this in the merge window testing.\n\nReported-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@nokia.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1449032be17abb69116dbc393f67ceb8bd034f92",
      "tree": "f62757457241c2fdc14105afc12cb2718f7a2e68",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 15:27:50 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 15:27:50 2010 -0500"
      },
      "message": "ext4: Turn off multiple page-io submission by default\n\nJon Nelson has found a test case which causes postgresql to fail with\nthe error:\n\npsql:t.sql:4: ERROR: invalid page header in block 38269 of relation base/16384/16581\n\nUnder memory pressure, it looks like part of a file can end up getting\nreplaced by zero\u0027s.  Until we can figure out the cause, we\u0027ll roll\nback the change and use block_write_full_page() instead of\next4_bio_write_page().  The new, more efficient writing function can\nbe used via the mount option mblk_io_submit, so we can test and fix\nthe new page I/O code.\n\nTo reproduce the problem, install postgres 8.4 or 9.0, and pin enough\nmemory such that the system just at the end of triggering writeback\nbefore running the following sql script:\n\nbegin;\ncreate temporary table foo as select x as a, ARRAY[x] as b FROM\ngenerate_series(1, 10000000 ) AS x;\ncreate index foo_a_idx on foo (a);\ncreate index foo_b_idx on foo USING GIN (b);\nrollback;\n\nIf the temporary table is created on a hard drive partition which is\nencrypted using dm_crypt, then under memory pressure, approximately\n30-40% of the time, pgsql will issue the above failure.\n\nThis patch should fix this problem, and the problem will come back if\nthe file system is mounted with the mblk_io_submit mount option.\n\nReported-by: Jon Nelson \u003cjnelson@jamponi.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5111711d3ed8f4f1012cac3ec3f2b463b549fbfd",
      "tree": "dc44d88bc66d3e7ec4d1c9180d6d4289fe7c5901",
      "parents": [
        "e13cf63f2bbd38721af557f0205da994ea068427",
        "c1ac3ffcd0bc7e9617f62be8c7043d53ab84deac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:09:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:09:05 2010 -0800"
      },
      "message": "Merge branch \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.37\u0027 of git://linux-nfs.org/~bfields/linux:\n  nfsd: Fix possible BUG_ON firing in set_change_info\n  sunrpc: prevent use-after-free on clearing XPT_BUSY\n"
    },
    {
      "commit": "e13cf63f2bbd38721af557f0205da994ea068427",
      "tree": "26d0d779fadd58814eea18ab2b16370a8565c837",
      "parents": [
        "073f21ae1319348f4f8630003b7901e3be254327",
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: prevent RAID level downgrades when space is low\n  Btrfs: account for missing devices in RAID allocation profiles\n  Btrfs: EIO when we fail to read tree roots\n  Btrfs: fix compiler warnings\n  Btrfs: Make async snapshot ioctl more generic\n  Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n  Btrfs: Fix a crash when mounting a subvolume\n  Btrfs: fix sync subvol/snapshot creation\n  Btrfs: Fix page leak in compressed writeback path\n  Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n  Btrfs: fixup return code for btrfs_del_orphan_item\n  Btrfs: do not do fast caching if we are allocating blocks for tree_root\n  Btrfs: deal with space cache errors better\n  Btrfs: fix use after free in O_DIRECT\n"
    },
    {
      "commit": "073f21ae1319348f4f8630003b7901e3be254327",
      "tree": "2895f1b2c2aa0d2df792aee8afc8e4d4e691fe5c",
      "parents": [
        "497b5b13c9e946651991e0296374a15d38590ce1",
        "7572777eef78ebdee1ecb7c258c0ef94d35bad16"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:07:39 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:07:39 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: verify ioctl retries\n  fuse: fix ioctl when server is 32bit\n"
    }
  ],
  "next": "497b5b13c9e946651991e0296374a15d38590ce1"
}
