)]}'
{
  "log": [
    {
      "commit": "1d2c6cfd40b2dece3bb958cbbc405a2c1536ab75",
      "tree": "52ab33b148548083ae0456857791a8d410c83a31",
      "parents": [
        "27b3a5c51b50a234fb4a21146841e6723b5934ce"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 20 04:11:30 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 20 18:25:02 2009 +0100"
      },
      "message": "kill-the-bkl/reiserfs: turn GFP_ATOMIC flag to GFP_NOFS in reiserfs_get_block()\n\nGFP_ATOMIC was used in reiserfs_get_block to not lose the Bkl so that\nnobody can modify the tree in the middle of its work. Now that we\nkicked out the bkl, we can use a more friendly flag. We use GFP_NOFS\nhere because we already hold the reiserfs lock.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "27b3a5c51b50a234fb4a21146841e6723b5934ce",
      "tree": "41b1df81b0b40b0115c77f835b3791db7c13c1f5",
      "parents": [
        "205cb37b89ab37db553907e5ac17962eec561804"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:34:31 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:34:31 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_0()\n\nWe had a watchdog in _get_block_create_0() that jumped to a fixup retry\npath in case the bkl got relaxed while calling kmap().\nThis is not necessary anymore since we now have a reiserfs lock that is\nnot implicitly relaxed while sleeping.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "205cb37b89ab37db553907e5ac17962eec561804",
      "tree": "1ba8dcbef0112fbd0d77d28a317c950b11c19563",
      "parents": [
        "ac78a07893d24d95ff5f39d0433c25210f224f07"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:22:17 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:28:12 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: definitely drop the bkl from reiserfs_ioctl()\n\nThe reiserfs ioctl path doesn\u0027t need the big kernel lock anymore , now\nthat the filesystem synchronizes through its own lock.\n\nWe can then turn reiserfs_ioctl() into an unlocked_ioctl callback.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ac78a07893d24d95ff5f39d0433c25210f224f07",
      "tree": "ac48d2a828ef6daa62d5f5373cc14ba658b2a945",
      "parents": [
        "48f6ba5e691948caba2e7bc362153fb28e4f1e09"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:08:43 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 14 23:27:57 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: always lock the ioctl path\n\nReiserfs uses the ioctl callback for its file operations, which means\nthat its ioctl path is still locked by the bkl, this was synchronizing\nwith the rest of the filsystem operations. We have changed that by\nlocking it with the new reiserfs lock but we do that only from the\ncompat_ioctl callback.\n\nFix that by locking reiserfs_ioctl() everytime.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "48f6ba5e691948caba2e7bc362153fb28e4f1e09",
      "tree": "318e755ec8c3664b1276a5a87f455b8dc37c3862",
      "parents": [
        "193be0ee17dd7ea309ddab1093da17e5924d7f36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Oct 05 16:31:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Oct 05 16:31:37 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix reiserfs lock to cpu_add_remove_lock dependency\n\nWhile creating the reiserfs workqueue during the journal\ninitialization, we are holding the reiserfs lock, but\ncreate_workqueue() also holds the cpu_add_remove_lock, creating\nthen the following dependency:\n\n- reiserfs lock -\u003e cpu_add_remove_lock\n\nBut we also have the following existing dependencies:\n\n- mm-\u003emmap_sem -\u003e reiserfs lock\n- cpu_add_remove_lock -\u003e cpu_hotplug.lock -\u003e slub_lock -\u003e sysfs_mutex\n\nThe merged dependency chain then becomes:\n\n- mm-\u003emmap_sem -\u003e reiserfs lock -\u003e cpu_add_remove_lock -\u003e\n\tcpu_hotplug.lock -\u003e slub_lock -\u003e sysfs_mutex\n\nBut when we fill a dir entry in sysfs_readir(), we are holding the\nsysfs_mutex and we also might fault while copying the directory entry\nto the user, leading to the following dependency:\n\n- sysfs_mutex -\u003e mm-\u003emmap_sem\n\nThe end result is then a lock inversion between sysfs_mutex and\nmm-\u003emmap_sem, as reported in the following lockdep warning:\n\n[ INFO: possible circular locking dependency detected ]\n2.6.31-07095-g25a3912 #4\n-------------------------------------------------------\nudevadm/790 is trying to acquire lock:\n (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc1098942\u003e] might_fault+0x72/0xc0\n\nbut task is already holding lock:\n (sysfs_mutex){+.+.+.}, at: [\u003cc110813c\u003e] sysfs_readdir+0x7c/0x260\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #5 (sysfs_mutex){+.+.+.}:\n      [...]\n\n-\u003e #4 (slub_lock){+++++.}:\n      [...]\n\n-\u003e #3 (cpu_hotplug.lock){+.+.+.}:\n      [...]\n\n-\u003e #2 (cpu_add_remove_lock){+.+.+.}:\n      [...]\n\n-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n      [...]\n\n-\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n      [...]\n\nThis can be fixed by relaxing the reiserfs lock while creating the\nworkqueue.\nThis is fine to relax the lock here, we just keep it around to pass\nthrough reiserfs lock checks and for paranoid reasons.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "193be0ee17dd7ea309ddab1093da17e5924d7f36",
      "tree": "d57d6a5162311b9f4513f485aca89fe5b992e31a",
      "parents": [
        "80503185989b2dd84170bb842e23d3fd45ebdf40"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 17 05:31:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 17 05:31:37 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: Fix induced mm-\u003emmap_sem to sysfs_mutex dependency\n\nAlexander Beregalov reported the following warning:\n\n\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t[ INFO: possible circular locking dependency detected ]\n\t2.6.31-03149-gdcc030a #1\n\t-------------------------------------------------------\n\tudevadm/716 is trying to acquire lock:\n\t (\u0026mm-\u003emmap_sem){++++++}, at: [\u003cc107249a\u003e] might_fault+0x4a/0xa0\n\n\tbut task is already holding lock:\n\t (sysfs_mutex){+.+.+.}, at: [\u003cc10cb9aa\u003e] sysfs_readdir+0x5a/0x200\n\n\twhich lock already depends on the new lock.\n\n\tthe existing dependency chain (in reverse order) is:\n\n\t-\u003e #3 (sysfs_mutex){+.+.+.}:\n\t       [...]\n\n\t-\u003e #2 (\u0026bdev-\u003ebd_mutex){+.+.+.}:\n\t       [...]\n\n\t-\u003e #1 (\u0026REISERFS_SB(s)-\u003elock){+.+.+.}:\n\t       [...]\n\n\t-\u003e #0 (\u0026mm-\u003emmap_sem){++++++}:\n\t       [...]\n\nOn reiserfs mount path, we take the reiserfs lock and while\ninitializing the journal, we open the device, taking the\nbdev-\u003ebd_mutex. Then rescan_partition() may signal the change\nto sysfs.\n\nWe have then the following dependency:\n\n\treiserfs_lock -\u003e bd_mutex -\u003e sysfs_mutex\n\nLater, while entering reiserfs_readpage() after a pagefault in an\nmmaped reiserfs file, we are holding the mm-\u003emmap_sem, and we are going\nto take the reiserfs lock too.\nWe have then the following dependency:\n\n\tmm-\u003emmap_sem -\u003e reiserfs_lock\n\nwhich, expanded with the previous dependency gives us:\n\n\tmm-\u003emmap_sem -\u003e reiserfs_lock -\u003e bd_mutex -\u003e sysfs_mutex\n\nNow while entering the sysfs readdir path, we are holding the\nsysfs_mutex. And when we copy a directory entry to the user buffer, we\nmight fault and then take the mm-\u003emmap_sem lock. Which leads to the\ncircular locking dependency reported.\n\nWe can fix that by relaxing the reiserfs lock during the call to\njournal_init_dev(), which is the place where we open the mounted\ndevice.\n\nThis is fine to relax the lock here because we are in the begining of\nthe reiserfs mount path and there is nothing to protect at this time,\nthe journal is not intialized.\nWe just keep this lock around for paranoid reasons.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "80503185989b2dd84170bb842e23d3fd45ebdf40",
      "tree": "5b1a862071199421ba0427137067b8ed14a0c843",
      "parents": [
        "7e94277050e31aa4204060f03953bba72598cf7d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 04:18:06 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:30 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: panic in case of lock imbalance\n\nUntil now, trying to unlock the reiserfs write lock whereas the current\ntask doesn\u0027t hold it lead to a simple warning.\nWe should actually warn and panic in this case to avoid the user datas\nto reach an unstable state.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "7e94277050e31aa4204060f03953bba72598cf7d",
      "tree": "7a53cd463e76c0ed5e72345152755b5318ad430b",
      "parents": [
        "b10ab4c337a600456ed2d9daea0331016f7cdeeb"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 03:38:12 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:29 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix recursive reiserfs write lock in reiserfs_commit_write()\n\nreiserfs_commit_write() is always called with the write lock held.\nThus the current calls to reiserfs_write_lock() in this function are\nacquiring the lock recursively.\nWe can safely drop them.\n\nThis also solves further assumptions for this lock to be really\nreleased while calling reiserfs_write_unlock().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "b10ab4c337a600456ed2d9daea0331016f7cdeeb",
      "tree": "6e85b1faea80835b5dcab78bf66d51b529711ada",
      "parents": [
        "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:44:21 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:27 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix recursive reiserfs lock in reiserfs_mkdir()\n\nreiserfs_mkdir() acquires the reiserfs lock, assuming it has been called\nfrom the dir inodes callbacks, without the lock held.\n\nBut it can also be called from other internal sites such as\nreiserfs_xattr_init() which already holds the lock. This recursive\nlocking leads to further wrong assumptions. For example, later calls\nto reiserfs_mutex_lock_safe() won\u0027t actually unlock the reiserfs lock\nthe time we acquire a given mutex, creating unexpected lock inversions.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "ae635c0bbd6c10aa62bf5149c6f41add59fbf4d2",
      "tree": "a8f3ed7ca8452fba1cb153bdb0e2ec98ea5219e1",
      "parents": [
        "08f14fc8963e585e65b71212ce8050607b9b6c36"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 25 02:24:45 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:26 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: fix \"reiserfs lock\" / \"inode mutex\" lock inversion dependency\n\nreiserfs_xattr_init is called with the reiserfs write lock held, but\nif the \".reiserfs_priv\" entry is not created, we take the superblock\nroot directory inode mutex until .reiserfs_priv is created.\n\nThis creates a lock dependency inversion against other sites such as\nreiserfs_file_release() which takes an inode mutex and the reiserfs\nlock after.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Laurent Riffard \u003claurent.riffard@free.fr\u003e\n"
    },
    {
      "commit": "08f14fc8963e585e65b71212ce8050607b9b6c36",
      "tree": "04d808f71193df2a90d485fcc0e2604bd8fe8d93",
      "parents": [
        "c72e05756b900b3be24cd73a16de52bab80984c0"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 19:10:38 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:25 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: move the concurrent tree accesses checks per superblock\n\nWhen do_balance() balances the tree, a trick is performed to\nprovide the ability for other tree writers/readers to check whether\ndo_balance() is executing concurrently (requires CONFIG_REISERFS_CHECK).\n\nThis is done to protect concurrent accesses to the tree. The trick\nis the following:\n\nWhen do_balance is called, a unique global variable called cur_tb\ntakes a pointer to the current tree to be rebalanced.\nOnce do_balance finishes its work, cur_tb takes the NULL value.\n\nThen, concurrent tree readers/writers just have to check the value\nof cur_tb to ensure do_balance isn\u0027t executing concurrently.\nIf it is, then it proves that schedule() occured on do_balance(),\nwhich then relaxed the bkl that protected the tree.\n\nNow that the bkl has be turned into a mutex, this check is still\nfine even though do_balance() becomes preemptible: the write lock\nwill not be automatically released on schedule(), so the tree is\nstill protected.\n\nBut this is only fine if we have a single reiserfs mountpoint.\nIndeed, because the bkl is a global lock, it didn\u0027t allowed\nconcurrent executions between a tree reader/writer in a mount point\nand a do_balance() on another tree from another mountpoint.\n\nSo assuming all these readers/writers weren\u0027t supposed to be\nreentrant, the current check now sometimes detect false positives with\nthe current per-superblock mutex which allows this reentrancy.\n\nThis patch keeps the concurrent tree accesses check but moves it\nper superblock, so that only trees from a same mount point are\nchecked to be not accessed concurrently.\n\n[ Impact: fix spurious panic while running several reiserfs mount-points ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "c72e05756b900b3be24cd73a16de52bab80984c0",
      "tree": "4fc35ad9efc1a6a9ca14baa3612e551fb4da793e",
      "parents": [
        "2ac626955ed62ee8596f00581f959cc86e6198d1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 16 18:12:08 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:24 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: acquire the inode mutex safely\n\nWhile searching a pathname, an inode mutex can be acquired\nin do_lookup() which calls reiserfs_lookup() which in turn\nacquires the write lock.\n\nOn the other side reiserfs_fill_super() can acquire the write_lock\nand then call reiserfs_lookup_privroot() which can acquire an\ninode mutex (the root of the mount point).\n\nSo we theoretically risk an AB - BA lock inversion that could lead\nto a deadlock.\n\nAs for other lock dependencies found since the bkl to mutex\nconversion, the fix is to use reiserfs_mutex_lock_safe() which\ndrops the lock dependency to the write lock.\n\n[ Impact: fix a possible deadlock with reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "2ac626955ed62ee8596f00581f959cc86e6198d1",
      "tree": "a5bd28e558b889ad7c026199f6032b2ff33f9103",
      "parents": [
        "c63e3c0b2498adec921b06c670d12c8c74b85538"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 14 02:56:39 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:22 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: unlock only when needed in search_by_key\n\nsearch_by_key() is the site which most requires the lock.\nThis is mostly because it is a very central function and also\nbecause it releases/reaqcuires the write lock at least once each\ntime it is called.\n\nSuch release/reacquire creates a lot of contention in this place and\nalso opens more the window which let another thread changing the tree.\nWhen it happens, the current path searching over the tree must be\nretried from the beggining (the root) which is a wasteful and\ntime consuming recovery.\n\nThis patch factorizes two release/reacquire sequences:\n\n- reading leaf nodes blocks\n- reading current block\n\nThe latter immediately follows the former.\n\nThe whole sequence is safe as a single unlocked section because\nwe check just after if the tree has changed during these operations.\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "c63e3c0b2498adec921b06c670d12c8c74b85538",
      "tree": "27ca06415b5fdd51e369361ea8aa8f8e8e1ac741",
      "parents": [
        "d6f5b0aa08078c3dabe377d5b1a6077e9c9352d3"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 20:01:09 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:21 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: use mutex_lock in reiserfs_mutex_lock_safe\n\nreiserfs_mutex_lock_safe() is a hack to avoid any dependency between\nan internal reiserfs mutex and the write lock, it has been proposed\nto follow the old bkl logic.\n\nThe code does the following:\n\nwhile (!mutex_trylock(m)) {\n\treiserfs_write_unlock(s);\n\tschedule();\n\treiserfs_write_lock(s);\n}\n\nIt then imitate the implicit behaviour of the lock when it was\na Bkl and hadn\u0027t such dependency:\n\nmutex_lock(m) {\n\tif (fastpath)\n\t\tlet\u0027s go\n\telse {\n\t\twait_for_mutex() {\n\t\t\tschedule() {\n\t\t\t\tunlock_kernel()\n\t\t\t\treacquire_lock_kernel()\n\t\t\t}\n\t\t}\n\t}\n}\n\nThe problem is that by using such explicit schedule(), we don\u0027t\nbenefit of the adaptive mutex spinning on owner.\n\nThe logic in use now is:\n\nreiserfs_write_unlock(s);\nmutex_lock(m); // -\u003e possible adaptive spinning\nreiserfs_write_lock(s);\n\n[ Impact: restore the use of adaptive spinning mutexes in reiserfs ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d6f5b0aa08078c3dabe377d5b1a6077e9c9352d3",
      "tree": "b5d6bd99e007c57a6cd4953368202d99a41141cd",
      "parents": [
        "09eb47a7c52ad535aafca889e0b936c445c375ce"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 14:53:52 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:20 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: factorize the locking in reiserfs_write_end()\n\nreiserfs_write_end() is a hot path in reiserfs.\nWe have two wasteful write lock lock/release inside that can be gathered\nwithout changing the code logic.\n\nThis patch factorizes them out in a single protected section, reducing the\nnumber of contentions inside.\n\n[ Impact: reduce lock contention in a reiserfs hotpath ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "09eb47a7c52ad535aafca889e0b936c445c375ce",
      "tree": "81ebee49cb84f29e0aa3d884f6ed9c23ab044218",
      "parents": [
        "b1c839bb2d8d6f1f6bf48f5c657752b4963f88f8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 14:21:33 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:19 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: reduce number of contentions in search_by_key()\n\nsearch_by_key() is a central function in reiserfs which searches\nthe patch in the fs tree from the root to a node given its key.\n\nIt is the function that is most requesting the write lock\nbecause it\u0027s a path very often used.\n\nAlso we forget to release the lock while reading the next tree node,\nmaking us holding the lock in a wasteful way.\n\nThen we release the lock while reading the current node and its childs,\nall-in-one. It should be safe because we have a reference to these\nblocks and even if we read a block that will be concurrently changed,\nwe have an fs_changed check later that will make us retry the path from\nthe root.\n\n[ Impact: release the write lock while unused in a hot path ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "b1c839bb2d8d6f1f6bf48f5c657752b4963f88f8",
      "tree": "7396e1e56cfe544248d0e21374ab10f4edf6de3a",
      "parents": [
        "26931309a47747fd31b2ef029c29d47794c2d93d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 08 01:05:06 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:17 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: don\u0027t hold the write recursively in reiserfs_lookup()\n\nThe write lock can be acquired recursively in reiserfs_lookup(). But we may\nwant to *really* release the lock before possible rescheduling from a\nreiserfs_lookup() callee.\n\nHence we want to only acquire the lock once (ie: not recursively).\n\n[ Impact: prevent from possible false unreleased write lock on sleeping ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "26931309a47747fd31b2ef029c29d47794c2d93d",
      "tree": "85b3ba9ee14c6d90243e4590af60e7ef3e72c5ff",
      "parents": [
        "d663af807d8bb226394cb7e02f4665f6141a8140"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 07 23:48:44 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:16 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: lock only once on reiserfs_get_block()\n\nreiserfs_get_block() is one of these sites where the write lock might\nbe acquired recursively.\n\nIt\u0027s a particular problem because this function is called very often.\nIt\u0027s a hot spot which needs to reschedule() periodically while converting\ndirect items to indirect ones because it can take some time.\n\nThen if we are applying the write lock release/reacquire pattern on\nschedule() here, it may not produce the desired effect since we may have\nlocked in more than one depth.\n\nThe solution is to use reiserfs_write_lock_once() which won\u0027t try\nto reacquire the lock recursively. Then the lock will be *really*\nreleased before schedule().\n\nAlso, we only release the lock if TIF_NEED_RESCHED is set to not\ncreate wasteful numerous contentions.\n\n[ Impact: fix a too long holded lock case in reiserfs_get_block() ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d663af807d8bb226394cb7e02f4665f6141a8140",
      "tree": "56516a97cad01d589bb3da930459bfcd82c5d9d0",
      "parents": [
        "e43d3f21c502dec786f2885a75e25859f18d6ffa"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 07 23:25:29 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:15 2009 +0200"
      },
      "message": "kill-the-bkl/reiserfs: conditionaly release the write lock on fs_changed()\n\nThe goal of fs_changed() is to check whether the tree changed during a\nschedule(). This is a BKL legacy.\n\nA recent patch added an explicit unconditional release/reacquire of the\nwrite lock around the cond_resched() called inside fs_changed.\n\nBut it\u0027s wasteful to unconditionally do that, we are creating superfluous\nlock contention in !TIF_NEED_RESCHED case.\n\nThis patch manage that by calling reiserfs_cond_resched() from fs_changed()\nwhich only releases the lock if we are going to reschedule.\n\n[ Impact: inject less lock contention and tree job retries ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e43d3f21c502dec786f2885a75e25859f18d6ffa",
      "tree": "5a1bc7a8f997da264bb4fbefc1279896e2530261",
      "parents": [
        "6e3647acb4f200add1d8e0203514f7ac925ae463"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu May 07 22:51:20 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:14 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: add reiserfs_cond_resched()\n\nUsually, when we call cond_resched(), we want the write lock\nto be released and then reacquired once we return from scheduling.\nNot only does it follow the previous bkl based locking scheme, but\nit also let other waiters to get the lock.\n\nBut if we aren\u0027t going to reschedule(), such as in !TIF_NEED_RESCHED\ncase, it\u0027s useless to release the lock. Worse, if we release and reacquire\nthe lock whereas it is not needed, we create useless contentions. Also\nif someone takes the lock while we are modifying or reading the tree,\nthere are good chances we\u0027ll have to retry our operation, eg if the\nblock we were seeeking has moved.\n\nSo this patch introduces a helper which only unlock the write lock\nif we are going to schedule.\n\n[ Impact: prepare to inject less lock contention and less tree operation attempts ]\n\nReported-by: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "6e3647acb4f200add1d8e0203514f7ac925ae463",
      "tree": "95a779d1f59c04ca58956a49340b88497b476f13",
      "parents": [
        "4c5eface5d0e4eb7f77be346193c2850e7e3b983"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 02:27:39 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:13 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock on flush_commit_list()\n\nflush_commit_list() uses ll_rw_block() to commit the pending log blocks.\nll_rw_block() might sleep, and the bkl was released at this point. Then\nwe can also relax the write lock at this point.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "4c5eface5d0e4eb7f77be346193c2850e7e3b983",
      "tree": "f827eb485149bc52974a41a8d0b5f1d553953fb5",
      "parents": [
        "148d3504c1d9f964cf14fafc46d2b7d1f0bed2b1"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 01:44:57 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:11 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock inside reiserfs_read_bitmap_block()\n\nreiserfs_read_bitmap_block() uses sb_bread() to read the bitmap block. This\nhelper might sleep.\n\nThen, when the bkl was used, it was released at this point. We can then\nrelax the write lock too here.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "148d3504c1d9f964cf14fafc46d2b7d1f0bed2b1",
      "tree": "6b17f1361099e8b579d10e892a8d919eae037354",
      "parents": [
        "5e69e3a4492ea5abfd2e8ddc575448becf28e4d9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri May 01 01:10:52 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:10 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock inside get_neighbors()\n\nget_neighbors() is used to get the left and/or right blocks\nagainst a given one in order to balance a tree.\n\nsb_bread() is used to read the buffer of these neighors blocks and\nwhile it waits for this operation, it might sleep.\n\nThe bkl was released at this point, and then we can also release\nthe write lock before calling sb_bread().\n\nThis is safe because if the filesystem is changed after this\nlock release, the function returns REPEAT_SEARCH (aka SCHEDULE_OCCURRED\nin the function header comments) in order to repeat the neighbhor\nresearch.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "5e69e3a4492ea5abfd2e8ddc575448becf28e4d9",
      "tree": "85cad0034222ceef31241e7c0e406bc76aca0186",
      "parents": [
        "e6950a4da33fa84ef4402d29e2331cd5e5df9cb8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 23:36:33 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:09 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release write lock while rescheduling on prepare_for_delete_or_cut()\n\nprepare_for_delete_or_cut() can process several types of items, including\nindirect items, ie: items which contain no file data but pointers to\nunformatted nodes scattering the datas of a file.\n\nIn this case it has to zero out these pointers to block numbers of\nunformatted nodes and release the bitmap from these block numbers.\n\nIt can take some time, so a rescheduling() is performed between each\nblock processed. We can safely release the write lock while\nrescheduling(), like the bkl did, because the code checks just after\nif the item has moved after sleeping.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "e6950a4da33fa84ef4402d29e2331cd5e5df9cb8",
      "tree": "05650bb6b4fc7c148253dd3c7c4222c2783f84d3",
      "parents": [
        "f32049dc244f4d394c8faa161b4f13cb8c4f5c8c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 23:04:32 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:08 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release the write lock before rescheduling on do_journal_end()\n\nWhen do_journal_end() copies data to the journal blocks buffers in memory,\nit reschedules if needed between each block copied and dirtyfied.\n\nWe can also release the write lock at this rescheduling stage,\nlike did the bkl implicitly.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "f32049dc244f4d394c8faa161b4f13cb8c4f5c8c",
      "tree": "74f5837c9f6ebe3fa11107b914d7803dc0a5e7f6",
      "parents": [
        "dc8f6d8936eb244eea452af689df5ee19e635206"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 30 22:05:25 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:06 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: release write lock on fs_changed()\n\nfs_changed() is a macro used by reiserfs to check whether its tree has been\nrebalanced. It has been designed to check parallel changes on the tree after\ncalling a sleeping function, which released the Bkl.\n\nfs_changed() also calls cond_resched(), so that if rescheduling is needed,\nwe are in the best place to do that, since we check if the tree has changed\njust after (because of the bkl release on schedule()).\n\nEven if we are not anymore using the Bkl, we still want to release the lock\nwhile we reschedule, so that other waiters for the lock can acquire it safely,\nbecause of the following __fs_changed() check.\n\n[ Impact: release the reiserfs write lock when it is not needed ]\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "dc8f6d8936eb244eea452af689df5ee19e635206",
      "tree": "c93624678a2d2821c78048f6f7db19889eac5b3a",
      "parents": [
        "22c963addcf426bef97a43f6e601f985f8082ed5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:25 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:04 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: only acquire the write lock once in reiserfs_dirty_inode\n\nImpact: fix a deadlock\n\nreiserfs_dirty_inode() is the super_operations::dirty_inode() callback\nof reiserfs. It can be called from different contexts where the write\nlock can be already held.\n\nBut this function also grab the write lock (possibly recursively).\nSubsequent release of the lock before sleep will actually not release\nthe lock if the caller of mark_inode_dirty() (which in turn calls\nreiserfs_dirty_inode()) already owns the lock.\n\nA typical case:\n\nreiserfs_write_end() {\n\tacquire_write_lock()\n\tmark_inode_dirty() {\n\t\treiserfs_dirty_inode() {\n\t\t\treacquire_write_lock() {\n\t\t\t\tjournal_begin() {\n\t\t\t\t\tdo_journal_begin_r() {\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * fail to release, still\n\t\t\t\t\t\t * one depth of lock\n\t\t\t\t\t\t */\n\t\t\t\t\t\trelease_write_lock()\n\t\t\t\t\t\treiserfs_wait_on_write_block() {\n\t\t\t\t\t\t\twait_event()\n\nThe event is usually provided by something which needs the write lock but\nit hasn\u0027t been released.\n\nWe use reiserfs_write_lock_once() here to ensure we only grab the\nwrite lock in one level.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-4-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "22c963addcf426bef97a43f6e601f985f8082ed5",
      "tree": "f71ae95fd1eee899c446ebb03a3cc02fe24daf3c",
      "parents": [
        "daf88c898312a22b5385655bc6e0b064eaa2efba"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:24 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:03 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: lock only once in reiserfs_truncate_file\n\nImpact: fix a deadlock\n\nreiserfs_truncate_file() can be called from multiple context where\nthe write lock can be already hold or not.\n\nThis function also acquire (possibly recursively) the write\nlock. Subsequent releases before sleeping will not actually release\nthe lock because we may be in more than one lock depth degree.\n\nA typical case is:\n\nreiserfs_file_release {\n\tacquire_the_lock()\n\treiserfs_truncate_file()\n\t\treacquire_the_lock()\n\t\tjournal_begin() {\n\t\t\tdo_journal_begin_r() {\n\t\t\t\treiserfs_wait_on_write_block() {\n\t\t\t\t\t/*\n\t\t\t\t\t * Not released because still one\n\t\t\t\t\t * depth owned\n\t\t\t\t\t */\n\t\t\t\t\trelease_lock()\n\t\t\t\t\twait_for_event()\n\nAt this stage the event never happen because the one which provides\nit needs the write lock.\n\nWe use reiserfs_write_lock_once() here to ensure that we don\u0027t acquire the\nwrite lock recursively.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-3-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "daf88c898312a22b5385655bc6e0b064eaa2efba",
      "tree": "016c432fc26c174d5aee3647e54f2aafb690dceb",
      "parents": [
        "a412f9efdd6424bf4bf28c8e8c92060b5e975482"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 05:34:23 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:02 2009 +0200"
      },
      "message": "kill-the-BKL/reiserfs: provide a tool to lock only once the write lock\n\nSometimes we don\u0027t want to recursively hold the per superblock write\nlock because we want to be sure it is actually released when we come\nto sleep.\n\nThis patch introduces the necessary tools for that.\n\nreiserfs_write_lock_once() does the same job than reiserfs_write_lock()\nexcept that it won\u0027t try to acquire recursively the lock if the current\ntask already owns it. Also the lock_depth before the call of this function\nis returned.\n\nreiserfs_write_unlock_once() unlock only if reiserfs_write_lock_once()\nreturned a depth equal to -1, ie: only if it actually locked.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nLKML-Reference: \u003c1239680065-25013-2-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a412f9efdd6424bf4bf28c8e8c92060b5e975482",
      "tree": "b290d38a85c4b675af426dbd8593768bc5339fa1",
      "parents": [
        "8ebc423238341b52912c7295b045a32477b33f09"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 14 00:10:35 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:18:01 2009 +0200"
      },
      "message": "reiserfs, kill-the-BKL: fix unsafe j_flush_mutex lock\n\nImpact: fix a deadlock\n\nThe j_flush_mutex is acquired safely in journal.c:\nif we can\u0027t take it, we free the reiserfs per superblock lock\nand wait a bit.\n\nBut we have a remaining place in kupdate_transactions() where\nj_flush_mutex is still acquired traditionnaly. Thus the following\nscenario (warned by lockdep) can happen:\n\nA\t\t\t\t\t\tB\n\nmutex_lock(\u0026write_lock)\t\t\tmutex_lock(\u0026write_lock)\n\tmutex_lock(\u0026j_flush_mutex)\tmutex_lock(\u0026j_flush_mutex) //block\n\tmutex_unlock(\u0026write_lock)\n\tsleep...\n\tmutex_lock(\u0026write_lock) //deadlock\n\nFix this by using reiserfs_mutex_lock_safe() in kupdate_transactions().\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nLKML-Reference: \u003c1239660635-12940-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8ebc423238341b52912c7295b045a32477b33f09",
      "tree": "39677401de0df98c09ca888c87d85033b6fe93c9",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 07 04:19:49 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Sep 14 07:17:59 2009 +0200"
      },
      "message": "reiserfs: kill-the-BKL\n\nThis patch is an attempt to remove the Bkl based locking scheme from\nreiserfs and is intended.\n\nIt is a bit inspired from an old attempt by Peter Zijlstra:\n\n   http://lkml.indiana.edu/hypermail/linux/kernel/0704.2/2174.html\n\nThe bkl is heavily used in this filesystem to prevent from\nconcurrent write accesses on the filesystem.\n\nReiserfs makes a deep use of the specific properties of the Bkl:\n\n- It can be acqquired recursively by a same task\n- It is released on the schedule() calls and reacquired when schedule() returns\n\nThe two properties above are a roadmap for the reiserfs write locking so it\u0027s\nvery hard to simply replace it with a common mutex.\n\n- We need a recursive-able locking unless we want to restructure several blocks\n  of the code.\n- We need to identify the sites where the bkl was implictly relaxed\n  (schedule, wait, sync, etc...) so that we can in turn release and\n  reacquire our new lock explicitly.\n  Such implicit releases of the lock are often required to let other\n  resources producer/consumer do their job or we can suffer unexpected\n  starvations or deadlocks.\n\nSo the new lock that replaces the bkl here is a per superblock mutex with a\nspecific property: it can be acquired recursively by a same task, like the\nbkl.\n\nFor such purpose, we integrate a lock owner and a lock depth field on the\nsuperblock information structure.\n\nThe first axis on this patch is to turn reiserfs_write_(un)lock() function\ninto a wrapper to manage this mutex. Also some explicit calls to\nlock_kernel() have been converted to reiserfs_write_lock() helpers.\n\nThe second axis is to find the important blocking sites (schedule...(),\nwait_on_buffer(), sync_dirty_buffer(), etc...) and then apply an explicit\nrelease of the write lock on these locations before blocking. Then we can\nsafely wait for those who can give us resources or those who need some.\nTypically this is a fight between the current writer, the reiserfs workqueue\n(aka the async commiter) and the pdflush threads.\n\nThe third axis is a consequence of the second. The write lock is usually\non top of a lock dependency chain which can include the journal lock, the\nflush lock or the commit lock. So it\u0027s dangerous to release and trying to\nreacquire the write lock while we still hold other locks.\n\nThis is fine with the bkl:\n\n      T1                       T2\n\nlock_kernel()\n    mutex_lock(A)\n    unlock_kernel()\n    // do something\n                            lock_kernel()\n                                mutex_lock(A) -\u003e already locked by T1\n                                schedule() (and then unlock_kernel())\n    lock_kernel()\n    mutex_unlock(A)\n    ....\n\nThis is not fine with a mutex:\n\n      T1                       T2\n\nmutex_lock(write)\n    mutex_lock(A)\n    mutex_unlock(write)\n    // do something\n                           mutex_lock(write)\n                              mutex_lock(A) -\u003e already locked by T1\n                              schedule()\n\n    mutex_lock(write) -\u003e already locked by T2\n    deadlock\n\nThe solution in this patch is to provide a helper which releases the write\nlock and sleep a bit if we can\u0027t lock a mutex that depend on it. It\u0027s another\nsimulation of the bkl behaviour.\n\nThe last axis is to locate the fs callbacks that are called with the bkl held,\naccording to Documentation/filesystem/Locking.\n\nThose are:\n\n- reiserfs_remount\n- reiserfs_fill_super\n- reiserfs_put_super\n\nReiserfs didn\u0027t need to explicitly lock because of the context of these callbacks.\nBut now we must take care of that with the new locking.\n\nAfter this patch, reiserfs suffers from a slight performance regression (for now).\nOn UP, a high volume write with dd reports an average of 27 MB/s instead\nof 30 MB/s without the patch applied.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Bron Gondwana \u003cbrong@fastmail.fm\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nLKML-Reference: \u003c1239070789-13354-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "74fca6a42863ffacaf7ba6f1936a9f228950f657",
      "tree": "5caecfdd9edab50789483eb96009e9faf5f1b241",
      "parents": [
        "7135a71b19be1faf48b7148d77844d03bc0717d6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 09 15:13:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 09 15:13:59 2009 -0700"
      },
      "message": "Linux 2.6.31\n"
    },
    {
      "commit": "7135a71b19be1faf48b7148d77844d03bc0717d6",
      "tree": "f1bed8d00c77c90423adc98559247459089c39f5",
      "parents": [
        "e6890f6f3dc2d9024a08b1a149d9bd5208eea350"
      ],
      "author": {
        "name": "Ed Cashin",
        "email": "ecashin@coraid.com",
        "time": "Wed Sep 09 14:10:18 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 09 14:10:18 2009 +0200"
      },
      "message": "aoe: allocate unused request_queue for sysfs\n\nAndy Whitcroft reported an oops in aoe triggered by use of an\nincorrectly initialised request_queue object:\n\n  [ 2645.959090] kobject \u0027\u003cNULL\u003e\u0027 (ffff880059ca22c0): tried to add\n\t\tan uninitialized object, something is seriously wrong.\n  [ 2645.959104] Pid: 6, comm: events/0 Not tainted 2.6.31-5-generic #24-Ubuntu\n  [ 2645.959107] Call Trace:\n  [ 2645.959139] [\u003cffffffff8126ca2f\u003e] kobject_add+0x5f/0x70\n  [ 2645.959151] [\u003cffffffff8125b4ab\u003e] blk_register_queue+0x8b/0xf0\n  [ 2645.959155] [\u003cffffffff8126043f\u003e] add_disk+0x8f/0x160\n  [ 2645.959161] [\u003cffffffffa01673c4\u003e] aoeblk_gdalloc+0x164/0x1c0 [aoe]\n\nThe request queue of an aoe device is not used but can be allocated in\ncode that does not sleep.\n\nBruno bisected this regression down to\n\n  cd43e26f071524647e660706b784ebcbefbd2e44\n\n  block: Expose stacked device queues in sysfs\n\n\"This seems to generate /sys/block/$device/queue and its contents for\n everyone who is using queues, not just for those queues that have a\n non-NULL queue-\u003erequest_fn.\"\n\nAddresses http://bugs.launchpad.net/bugs/410198\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d13942\n\nNote that embedding a queue inside another object has always been\nan illegal construct, since the queues are reference counted and\nmust persist until the last reference is dropped. So aoe was\nalways buggy in this respect (Jens).\n\nSigned-off-by: Ed Cashin \u003cecashin@coraid.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Bruno Premont \u003cbonbons@linux-vserver.org\u003e\nCc: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e6890f6f3dc2d9024a08b1a149d9bd5208eea350",
      "tree": "8829fbb9f165ff37a37181bdf5cbbe92622bb5e6",
      "parents": [
        "7c8460db30dfd085ef3837c8fb02ecf2e718b983"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 17:09:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 17:09:24 2009 -0700"
      },
      "message": "i915: disable interrupts before tearing down GEM state\n\nReinette Chatre reports a frozen system (with blinking keyboard LEDs)\nwhen switching from graphics mode to the text console, or when\nsuspending (which does the same thing). With netconsole, the oops\nturned out to be\n\n\tBUG: unable to handle kernel NULL pointer dereference at 0000000000000084\n\tIP: [\u003cffffffffa03ecaab\u003e] i915_driver_irq_handler+0x26b/0xd20 [i915]\n\nand it\u0027s due to the i915_gem.c code doing drm_irq_uninstall() after\nhaving done i915_gem_idle(). And the i915_gem_idle() path will do\n\n  i915_gem_idle() -\u003e\n    i915_gem_cleanup_ringbuffer() -\u003e\n      i915_gem_cleanup_hws() -\u003e\n        dev_priv-\u003ehw_status_page \u003d NULL;\n\nbut if an i915 interrupt comes in after this stage, it may want to\naccess that hw_status_page, and gets the above NULL pointer dereference.\n\nAnd since the NULL pointer dereference happens from within an interrupt,\nand with the screen still in graphics mode, the common end result is\nsimply a silently hung machine.\n\nFix it by simply uninstalling the irq handler before idling rather than\nafter. Fixes\n\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d13819\n\nReported-and-tested-by: Reinette Chatre \u003creinette.chatre@intel.com\u003e\nAcked-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c8460db30dfd085ef3837c8fb02ecf2e718b983",
      "tree": "41e501901dc47cde4fc2c61477a6e9b63b286971",
      "parents": [
        "3ff323f89075624b6891e7c428edb8e8a35be13c"
      ],
      "author": {
        "name": "Zhenyu Wang",
        "email": "zhenyuw@linux.intel.com",
        "time": "Tue Sep 08 14:52:25 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 10:16:20 2009 -0700"
      },
      "message": "drm/i915: fix mask bits setting\n\neDP is exclusive connector too, and add missing crtc_mask\nsetting for TV.\n\nThis fixes\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14139\n\nSigned-off-by: Zhenyu Wang \u003czhenyuw@linux.intel.com\u003e\nReported-and-tested-by: Carlos R. Mafra \u003ccrmafra2@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ff323f89075624b6891e7c428edb8e8a35be13c",
      "tree": "24cbade6cffecfe334fd7d385b8731f7d999bfaf",
      "parents": [
        "755ae761c5519929a97567d61a379b87352c337c",
        "a54775c8758a754186bc6adbfc518b1e9f8f1e4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:42:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:42:25 2009 -0700"
      },
      "message": "Merge branch \u0027drm-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:\n  drm/radeon/kms: add LTE/GTE discard + rv515 two sided stencil register.\n"
    },
    {
      "commit": "755ae761c5519929a97567d61a379b87352c337c",
      "tree": "6942ac77009d3cab1acf6e6bea8cc339368423a9",
      "parents": [
        "4886b5b485ec78fe4a16fedaccfab39bdf55410f",
        "acd0c935178649f72c44ec49ca83bee35ce1f79e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:41:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:41:15 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:\n  IMA: update ima_counts_put\n"
    },
    {
      "commit": "4886b5b485ec78fe4a16fedaccfab39bdf55410f",
      "tree": "3946e0e444311245db5248bac6658e9b8082f269",
      "parents": [
        "cbeb2864b162f4298111196c8ce8ce492577cdee",
        "d9d8e0418ffd3d189345c435861e254c17ae06e5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:24 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  gianfar: Fix build.\n"
    },
    {
      "commit": "cbeb2864b162f4298111196c8ce8ce492577cdee",
      "tree": "0ddc68c3c1231a38955d7fca71a28cfc43eb0996",
      "parents": [
        "f69fb9c39868463f6b0b8306824341bd5610250b",
        "c9a2bfd1f08973115c2fc3da9372e0e81ac42a19"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:15 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:\n  pcmcia: add CNF-CDROM-ID for ide\n"
    },
    {
      "commit": "f69fb9c39868463f6b0b8306824341bd5610250b",
      "tree": "7ab396e5185772342bdf8a50e6dfb56ff0cd1f64",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db",
        "07fb6111e7af5fac6b6076e2658d0e32b67f713b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:38:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:38:30 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel:\n  agp/intel: support for new chip variant of IGDNG mobile\n  drm/i915: Unref old_obj on get_fence_reg() error path\n  drm/i915: increase default latency constant (v2 w/comment)\n"
    },
    {
      "commit": "a54775c8758a754186bc6adbfc518b1e9f8f1e4e",
      "tree": "bc351c6ae28e059132b66f8149a8a9d1b2be088a",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Sep 07 15:26:19 2009 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Sep 07 15:26:19 2009 +1000"
      },
      "message": "drm/radeon/kms: add LTE/GTE discard + rv515 two sided stencil register.\n\nThis adds some rv350+ register for LTE/GTE discard,\nand enables the rv515 two sided stencil register.\nIt also disables the DEPTHXY_OFFSET register which\ncan be used to workaround the CS checker.\nMoves rs690 to proper place in rs600 and uses correct\ntable on rs600.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "acd0c935178649f72c44ec49ca83bee35ce1f79e",
      "tree": "c0cb2f8fbbaa54567785b5430e5be8c8b51f5724",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Fri Sep 04 13:08:46 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Sep 07 11:54:58 2009 +1000"
      },
      "message": "IMA: update ima_counts_put\n\n- As ima_counts_put() may be called after the inode has been freed,\nverify that the inode is not NULL, before dereferencing it.\n\n- Maintain the IMA file counters in may_open() properly, decrementing\nany counter increments on subsequent errors.\n\nReported-by: Ciprian Docan \u003cdocan@eden.rutgers.edu\u003e\nReported-by: J.R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "d9d8e0418ffd3d189345c435861e254c17ae06e5",
      "tree": "ee97d40fa4ccfd3c802e6844b3d38097ff7a6c7a",
      "parents": [
        "16ebb5e0b36ceadc8186f71d68b0c4fa4b6e781b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 06 01:41:02 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 06 01:41:24 2009 -0700"
      },
      "message": "gianfar: Fix build.\n\nReported by Michael Guntsche \u003cmike@it-loops.com\u003e\n\n--------------------\nCommit\n38bddf04bcfe661fbdab94888c3b72c32f6873b3 gianfar: gfar_remove needs to call unregister_netdev()\n\nbreaks the build of the gianfar driver because \"dev\" is undefined in\nthis function. To quickly test rc9 I changed this to priv-\u003endev but I do\nnot know if this is the correct one.\n--------------------\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e07cccf4046978df10f2e13fe2b99b2f9b3a65db",
      "tree": "086f3d6b72cb6b70ba451c78b8147231d54219c3",
      "parents": [
        "f815c335d21f9965f8dbe142fd168aaba1baf98e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 16:38:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 16:38:12 2009 -0700"
      },
      "message": "Linux 2.6.31-rc9\n"
    },
    {
      "commit": "f815c335d21f9965f8dbe142fd168aaba1baf98e",
      "tree": "4e9a65b7810de10141595125cc65f2b0e7533dfc",
      "parents": [
        "74a01180db4bbfd61304ae0ba1f60af55ffc803d",
        "baed6b82d9f160184c1c14cdb4accb08f3eb6b87"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:59:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:59:00 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:\n  firewire: sbp2: fix freeing of unallocated memory\n  firewire: ohci: fix Ricoh R5C832, video reception\n  firewire: ohci: fix Agere FW643 and multiple cameras\n  firewire: core: fix crash in iso resource management\n"
    },
    {
      "commit": "74a01180db4bbfd61304ae0ba1f60af55ffc803d",
      "tree": "2f61aac8deb306a164f04a7d2753fbd723c906fc",
      "parents": [
        "5136a6c0fd5b26bbf39ad761cf7a4fc563ad83a3"
      ],
      "author": {
        "name": "Roderick Colenbrander",
        "email": "thunderbird2k@gmail.com",
        "time": "Thu Sep 03 09:57:23 2009 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:58:07 2009 -0700"
      },
      "message": "powerpc: Fix i8259 interrupt driver kernel crash on ML510\n\nThis patch fixes a null pointer exception caused by removal of\n\u0027ack()\u0027 for level interrupts in the Xilinx interrupt driver.  A recent\nchange to the xilinx interrupt controller removed the ack hook for\nlevel irqs.\n\nSigned-off-by: Roderick Colenbrander \u003cthunderbird2k@gmail.com\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5136a6c0fd5b26bbf39ad761cf7a4fc563ad83a3",
      "tree": "7c905238cb2c5c9cd959cd652010b0eaf5f91db3",
      "parents": [
        "e505a8d5f96a84f3043ce0c4eaee8f045996896c",
        "bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:57:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:57:04 2009 -0700"
      },
      "message": "Merge git://git.infradead.org/~dwmw2/mtd-2.6.31\n\n* git://git.infradead.org/~dwmw2/mtd-2.6.31:\n  JFFS2: add missing verify buffer allocation/deallocation\n  mtd: nftl: fix offset alignments\n  mtd: nftl: write support is broken\n  mtd: m25p80: fix null pointer dereference bug\n"
    },
    {
      "commit": "e505a8d5f96a84f3043ce0c4eaee8f045996896c",
      "tree": "622b5b817b9434b114d7015dbd3d8c83198fe350",
      "parents": [
        "b71b7dc09abaeb4417c37b96a898096286b65e3c",
        "c295fc05789653ef24f296299df7c5f92fe74dce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:56:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:56:13 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: Allow changing max_sectors_kb above the default 512\n"
    },
    {
      "commit": "b71b7dc09abaeb4417c37b96a898096286b65e3c",
      "tree": "548585e8e26281f9602d61e04bf4d2c1f4078b5a",
      "parents": [
        "59430c2f437767094298f30dd02ca038da0df755",
        "92653453c3015c083b9fe0ad48261c6b2267d482"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:55:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:55:30 2009 -0700"
      },
      "message": "Merge branch \u0027fix/oxygen\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027fix/oxygen\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:\n  sound: oxygen: handle cards with missing EEPROM\n  sound: oxygen: fix MCLK rate for 192 kHz playback\n"
    },
    {
      "commit": "59430c2f437767094298f30dd02ca038da0df755",
      "tree": "3c79740e3580e403df02daafba26fa6e67552c16",
      "parents": [
        "e9ee3a54a164c249a0a576c403eba367a6d97be5",
        "16ebb5e0b36ceadc8186f71d68b0c4fa4b6e781b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:52:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:52:41 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  tc: Fix unitialized kernel memory leak\n  pkt_sched: Revert tasklet_hrtimer changes.\n  net: sk_free() should be allowed right after sk_alloc()\n  gianfar: gfar_remove needs to call unregister_netdev()\n  ipw2200: firmware DMA loading rework\n"
    },
    {
      "commit": "e9ee3a54a164c249a0a576c403eba367a6d97be5",
      "tree": "bd1200f8d3c7481aa152cbb277fb79e181bb34fd",
      "parents": [
        "3bb314f01c189f0c48c0946424955c6d8ddce3d8",
        "0c7d400fafaeab6014504a6a6249f01bac7f7db4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:45 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:\n  crypto: skcipher - Fix skcipher_dequeue_givcrypt NULL test\n"
    },
    {
      "commit": "3bb314f01c189f0c48c0946424955c6d8ddce3d8",
      "tree": "d0de7369247689f009c2e0f3fb3bd121555efce1",
      "parents": [
        "535e0c1726bec699a8f0f5b86fe7d399546b2555",
        "ce6c3997c2fce74d12e6d8887a1d8cdf024fa850"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:24 2009 -0700"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:\n  [CPUFREQ] Re-enable cpufreq suspend and resume code\n"
    },
    {
      "commit": "535e0c1726bec699a8f0f5b86fe7d399546b2555",
      "tree": "9aa71d6908e4255b5a864cdae14ef164dea66665",
      "parents": [
        "0edfa2b1b5a5e1475e76dd3c792447687d966de4",
        "5afe18d2f58812f3924edbd215464e5e3e8545e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:50:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:50:53 2009 -0700"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:\n  [IA64] fix csum_ipv6_magic()\n  [IA64] Fix warning in dma-mapping.c\n"
    },
    {
      "commit": "0edfa2b1b5a5e1475e76dd3c792447687d966de4",
      "tree": "a811a6955bb0fffc883e59eb261206b132e9e6dc",
      "parents": [
        "5a09adf13067609d8ab9fcae11dc99fd0084e35c",
        "3725867dccfb83e4b0cff64e916a04258f300591"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:25:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:25:14 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: actually enable the swapext compat handler\n"
    },
    {
      "commit": "5a09adf13067609d8ab9fcae11dc99fd0084e35c",
      "tree": "be2908bf2a8a20e9bebb4a064611ca5c2e2977f9",
      "parents": [
        "931f70350e9c298887c78e852d179ef7efcce304",
        "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:24:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:24:33 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:\n  nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n"
    },
    {
      "commit": "931f70350e9c298887c78e852d179ef7efcce304",
      "tree": "7d909970a9ac85c3a7b6c460330591f26bdb1dcd",
      "parents": [
        "e305fc5ecd6420fadec5a8108852081fa2b89a17",
        "04a13c7c632e1fe04a5f6e6c83565d2559e37598"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:22:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:22:00 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: don\u0027t assume existence of cpu0\n"
    },
    {
      "commit": "e305fc5ecd6420fadec5a8108852081fa2b89a17",
      "tree": "0f80db8fba1b7d285814f7a16046ae84f6909147",
      "parents": [
        "154f807e55977de75b1c12197c13ae14c28397b3",
        "d76b1590e06a63a3d8697168cd0aabf1c4b3cb3a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:57:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:57:53 2009 -0700"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: Fix kmem_cache_destroy() with SLAB_DESTROY_BY_RCU\n"
    },
    {
      "commit": "154f807e55977de75b1c12197c13ae14c28397b3",
      "tree": "5ff5a220e4d3080275ce4921e28ef02f374ed5f7",
      "parents": [
        "9b6a3df372f0318bb0ffe37ac5f4610fb9bdb44d",
        "ae0b7448e91353ea5f821601a055aca6b58042cd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:51:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:51:07 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:\n  dm snapshot: fix on disk chunk size validation\n  dm exception store: split set_chunk_size\n  dm snapshot: fix header corruption race on invalidation\n  dm snapshot: refactor zero_disk_area to use chunk_io\n  dm log: userspace add luid to distinguish between concurrent log instances\n  dm raid1: do not allow log_failure variable to unset after being set\n  dm log: remove incorrect field from userspace table output\n  dm log: fix userspace status output\n  dm stripe: expose correct io hints\n  dm table: add more context to terse warning messages\n  dm table: fix queue_limit checking device iterator\n  dm snapshot: implement iterate devices\n  dm multipath: fix oops when request based io fails when no paths\n"
    },
    {
      "commit": "9b6a3df372f0318bb0ffe37ac5f4610fb9bdb44d",
      "tree": "88b76c84a21927acffd02f556764c4be33258bce",
      "parents": [
        "d3acd16cda3a1cbaff7c579c0e054f0ece613d14",
        "6faf17f6f1ffc586d16efc2f9fa2083a7785ee74"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:50:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:50:46 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:\n  PCI SR-IOV: correct broken resource alignment calculations\n"
    },
    {
      "commit": "d3acd16cda3a1cbaff7c579c0e054f0ece613d14",
      "tree": "2467a3fcf23e54ca68545427feb4e2d19f083b75",
      "parents": [
        "93697a3cabd3605c434a9b915c0272ad800b3f97",
        "bd4352cadfacb9084c97c853b025fac010266c26"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:49:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:49:06 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:\n  sparc64: Fix bootup with mcount in some configs.\n  sparc64: Kill spurious NMI watchdog triggers by increasing limit to 30 seconds.\n"
    },
    {
      "commit": "93697a3cabd3605c434a9b915c0272ad800b3f97",
      "tree": "dc26826f10979e02efbd2c6a87b326b770284b18",
      "parents": [
        "63995344721be45b3fb3b76488b1b0a8c95def26",
        "a3df6f7d3090e611bcc774cd2cba45ae016d37e1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:48:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:48:37 2009 -0700"
      },
      "message": "Merge branch \u0027perfcounters-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perfcounters-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf_counter/powerpc: Fix cache event codes for POWER7\n  perf_counter: Fix /0 bug in swcounters\n  perf_counters: Increase paranoia level\n"
    },
    {
      "commit": "63995344721be45b3fb3b76488b1b0a8c95def26",
      "tree": "a28385324c992c75bd7895fcfd3e374b5214aa53",
      "parents": [
        "9de6886ec6e37f45807266a702bb7621498395ad",
        "2bcaa6a4238094c5695d5b1943078388d82d3004"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:41:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:41:29 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:\n  Input: atkbd - add Compaq Presario R4000-series repeat quirk\n  Input: i8042 - add Acer Aspire 5536 to the nomux list\n"
    },
    {
      "commit": "9de6886ec6e37f45807266a702bb7621498395ad",
      "tree": "39402a2d467a856d0f956015a7ad0772719bf1b6",
      "parents": [
        "ac7ac9f2b9bfd9b68a1571d27e4c8bebb4788914"
      ],
      "author": {
        "name": "Nicolas Pitre",
        "email": "nico@cam.org",
        "time": "Sat Sep 05 00:25:37 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:41:08 2009 -0700"
      },
      "message": "ext2: fix unbalanced kmap()/kunmap()\n\nIn ext2_rename(), dir_page is acquired through ext2_dotdot().  It is\nthen released through ext2_set_link() but only if old_dir !\u003d new_dir.\nFailing that, the pkmap reference count is never decremented and the\npage remains pinned forever.  Repeat that a couple times with highmem\npages and all pkmap slots get exhausted, and every further kmap() calls\nend up stalling on the pkmap_map_wait queue at which point the whole\nsystem comes to a halt.\n\nSigned-off-by: Nicolas Pitre \u003cnico@marvell.com\u003e\nAcked-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac7ac9f2b9bfd9b68a1571d27e4c8bebb4788914",
      "tree": "02aa160e02f7f1f4a65a7f478e9a92c0b7ad0088",
      "parents": [
        "ac89a9174decf343de049a06fad75681f71890eb",
        "8379e7c46cc48f51197dd663fc6676f47f2a1e71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:38:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:38:37 2009 -0700"
      },
      "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: ocfs2_write_begin_nolock() should handle len\u003d0\n  ocfs2: invalidate dentry if its dentry_lock isn\u0027t initialized.\n"
    },
    {
      "commit": "ac89a9174decf343de049a06fad75681f71890eb",
      "tree": "c2fa9e7deef47b2cbc6bf4523e068a0265b105ac",
      "parents": [
        "37f81fa1f63ad38e16125526bb2769ae0ea8d332"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:27:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:27:10 2009 -0700"
      },
      "message": "pty: don\u0027t limit the writes to \u0027pty_space()\u0027 inside \u0027pty_write()\u0027\n\nThe whole write-room thing is something that is up to the _caller_ to\nworry about, not the pty layer itself.  The total buffer space will\nstill be limited by the buffering routines themselves, so there is no\nadvantage or need in having pty_write() artificially limit the size\nsomehow.\n\nAnd what happened was that the caller (the n_tty line discipline, in\nthis case) may have verified that there is room for 2 bytes to be\nwritten (for NL -\u003e CRNL expansion), and it used to then do those writes\nas two single-byte writes.  And if the first byte written (CR) then\ncaused a new tty buffer to be allocated, pty_space() may have returned\nzero when trying to write the second byte (LF), and then incorrectly\nfailed the write - leading to a lost newline character.\n\nThis should finally fix\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14015\n\nReported-by: Mikael Pettersson \u003cmikpe@it.uu.se\u003e\nAcked-by: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "37f81fa1f63ad38e16125526bb2769ae0ea8d332",
      "tree": "116ee462263777d2cd12b578b60ffe04a8a5b38c",
      "parents": [
        "a2a8474c3fff88d8dd52d05cb450563fb26fd26c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 12:46:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 12:46:07 2009 -0700"
      },
      "message": "n_tty: do O_ONLCR translation as a single write\n\nWhen translating CR to CRNL in the n_tty line discipline, we did it as\ntwo tty_put_char() calls.  Which works, but is stupid, and has caused\nproblems before too with bad interactions with the write_room() logic.\nThe generic USB serial driver had that problem, for example.\n\nNow the pty layer had similar issues after being moved to the generic\ntty buffering code (in commit d945cb9cce20ac7143c2de8d88b187f62db99bdc:\n\"pty: Rework the pty layer to use the normal buffering logic\").\n\nSo stop doing the silly separate two writes, and do it as a single write\ninstead.  That\u0027s what the n_tty layer already does for the space\nexpansion of tabs (XTABS), and it means that we\u0027ll now always have just\na single write for the CRNL to match the single \u0027tty_write_room()\u0027 test,\nwhich hopefully means that the next time somebody screws up buffering,\nit won\u0027t cause weeks of debugging.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2a8474c3fff88d8dd52d05cb450563fb26fd26c",
      "tree": "455415da039a77627f47ed19318bb9c8aa17de4d",
      "parents": [
        "dd5d241ea955006122d76af88af87de73fec25b4"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 05 11:17:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "exec: do not sleep in TASK_TRACED under -\u003ecred_guard_mutex\n\nTom Horsley reports that his debugger hangs when it tries to read\n/proc/pid_of_tracee/maps, this happens since\n\n\t\"mm_for_maps: take -\u003ecred_guard_mutex to fix the race with exec\"\n\t04b836cbf19e885f8366bccb2e4b0474346c02d\n\ncommit in 2.6.31.\n\nBut the root of the problem lies in the fact that do_execve() path calls\ntracehook_report_exec() which can stop if the tracer sets PT_TRACE_EXEC.\n\nThe tracee must not sleep in TASK_TRACED holding this mutex.  Even if we\nremove -\u003ecred_guard_mutex from mm_for_maps() and proc_pid_attr_write(),\nanother task doing PTRACE_ATTACH should not hang until it is killed or the\ntracee resumes.\n\nWith this patch do_execve() does not use -\u003ecred_guard_mutex directly and\nwe do not hold it throughout, instead:\n\n\t- introduce prepare_bprm_creds() helper, it locks the mutex\n\t  and calls prepare_exec_creds() to initialize bprm-\u003ecred.\n\n\t- install_exec_creds() drops the mutex after commit_creds(),\n\t  and thus before tracehook_report_exec()-\u003eptrace_stop().\n\n\t  or, if exec fails,\n\n\t  free_bprm() drops this mutex when bprm-\u003ecred !\u003d NULL which\n\t  indicates install_exec_creds() was not called.\n\nReported-by: Tom Horsley \u003ctom.horsley@att.net\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd5d241ea955006122d76af88af87de73fec25b4",
      "tree": "2ca12406f407d476b1ba473dc376d1e621a383f6",
      "parents": [
        "a190887b58c32d19c2eee007c5eb8faa970a69ba"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Sat Sep 05 11:17:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "page-allocator: always change pageblock ownership when anti-fragmentation is disabled\n\nOn low-memory systems, anti-fragmentation gets disabled as fragmentation\ncannot be avoided on a sufficiently large boundary to be worthwhile.  Once\ndisabled, there is a period of time when all the pageblocks are marked\nMOVABLE and the expectation is that they get marked UNMOVABLE at each call\nto __rmqueue_fallback().\n\nHowever, when MAX_ORDER is large the pageblocks do not change ownership\nbecause the normal criteria are not met.  This has the effect of\nprematurely breaking up too many large contiguous blocks.  This is most\nserious on NOMMU systems which depend on high-order allocations to boot.\nThis patch causes pageblocks to change ownership on every fallback when\nanti-fragmentation is disabled.  This prevents the large blocks being\nprematurely broken up.\n\nThis is a fix to commit 49255c619fbd482d704289b5eb2795f8e3b7ff2e [page\nallocator: move check for disabled anti-fragmentation out of fastpath] and\nthe problem affects 2.6.31-rc8.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a190887b58c32d19c2eee007c5eb8faa970a69ba",
      "tree": "deff588d04f3e42662484b0281e1beceb3cf9f4e",
      "parents": [
        "4e49627b9bc29a14b393c480e8c979e3bc922ef7"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 05 11:17:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "nommu: fix error handling in do_mmap_pgoff()\n\nFix the error handling in do_mmap_pgoff().  If do_mmap_shared_file() or\ndo_mmap_private() fail, we jump to the error_put_region label at which\npoint we cann __put_nommu_region() on the region - but we haven\u0027t yet\nadded the region to the tree, and so __put_nommu_region() may BUG\nbecause the region tree is empty or it may corrupt the region tree.\n\nTo get around this, we can afford to add the region to the region tree\nbefore calling do_mmap_shared_file() or do_mmap_private() as we keep\nnommu_region_sem write-locked, so no-one can race with us by seeing a\ntransient region.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e49627b9bc29a14b393c480e8c979e3bc922ef7",
      "tree": "209b69da65abbbffb7abeaea60f17d46f38485fe",
      "parents": [
        "37d0892c5a94e208cf863e3b7bac014edee4346d"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Sep 05 11:17:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 11:30:42 2009 -0700"
      },
      "message": "workqueues: introduce __cancel_delayed_work()\n\ncancel_delayed_work() has to use del_timer_sync() to guarantee the timer\nfunction is not running after return.  But most users doesn\u0027t actually\nneed this, and del_timer_sync() has problems: it is not useable from\ninterrupt, and it depends on every lock which could be taken from irq.\n\nIntroduce __cancel_delayed_work() which calls del_timer() instead.\n\nThe immediate reason for this patch is\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d13757\nbut hopefully this helper makes sense anyway.\n\nAs for 13757 bug, actually we need requeue_delayed_work(), but its\nsemantics are not yet clear.\n\nMerge this patch early to resolves cross-tree interdependencies between\ninput and infiniband.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Dmitry Torokhov \u003cdmitry.torokhov@gmail.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "baed6b82d9f160184c1c14cdb4accb08f3eb6b87",
      "tree": "eaeee0797d802462447d5aefbb09ddbdefa69986",
      "parents": [
        "4fe0badd5882c64dc2dcd8893f9b85db63339736"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Thu Sep 03 23:07:35 2009 +0200"
      },
      "committer": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sat Sep 05 15:59:34 2009 +0200"
      },
      "message": "firewire: sbp2: fix freeing of unallocated memory\n\nIf a target writes invalid status (typically status of a command that\nalready timed out), firewire-sbp2 attempts to put away an ORB that\ndoesn\u0027t exist.  https://bugzilla.redhat.com/show_bug.cgi?id\u003d519772\n\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\n"
    },
    {
      "commit": "4fe0badd5882c64dc2dcd8893f9b85db63339736",
      "tree": "d84d7773171be1a0a4cfacd646e0b7e2754a8089",
      "parents": [
        "fc383796a8cc5df0a0c8633a16dd2e9528a16a63"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Fri Aug 28 13:26:03 2009 +0200"
      },
      "committer": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sat Sep 05 15:59:34 2009 +0200"
      },
      "message": "firewire: ohci: fix Ricoh R5C832, video reception\n\nIn dual-buffer DMA mode, no video frames are ever received from R5C832\nby libdc1394.  Fallback to packet-per-buffer DMA works reliably.\nhttp://thread.gmane.org/gmane.linux.kernel.firewire.devel/13393/focus\u003d13476\n\nReported-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\n"
    },
    {
      "commit": "fc383796a8cc5df0a0c8633a16dd2e9528a16a63",
      "tree": "92a231d28de6d396246a1136099d896a37be2332",
      "parents": [
        "1821bc19d54009b6f5e6462dd79074d728080839"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Fri Aug 28 13:25:15 2009 +0200"
      },
      "committer": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sat Sep 05 15:59:34 2009 +0200"
      },
      "message": "firewire: ohci: fix Agere FW643 and multiple cameras\n\nAn Agere FW643 OHCI 1.1 card works fine for video reception from one\ncamera but fails early if receiving from two cameras.  After a short\nwhile, no IR IRQ events occur and the context control register does not\nreact anymore.  This happens regardless whether both IR DMA contexts are\ndual-buffer or one is dual-buffer and the other packet-per-buffer.\n\nThis can be worked around by disabling dual buffer DMA mode entirely.\nhttp://sourceforge.net/mailarchive/message.php?msg_name\u003d4A7C0594.2020208%40gmail.com\n(Reported by Samuel Audet.)\n\nIn another report (by Jonathan Cameron), an FW643 works OK with two\ncameras in dual buffer mode.  Whether this is due to different chip\nrevisions or different usage patterns (different video formats) is not\nyet clear.  However, as far as the current capabilities of\nfirewire-core\u0027s isochronous I/O interface are concerned, simply\nswitching off dual-buffer on non-working and working FW643s alike is not\na problem in practice.  We only need to revisit this issue if we are\ngoing to enhance the interface, e.g. so that applications can explicitly\nchoose modes.\n\nReported-by: Samuel Audet \u003csamuel.audet@gmail.com\u003e\nReported-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\n"
    },
    {
      "commit": "1821bc19d54009b6f5e6462dd79074d728080839",
      "tree": "27c11feb1f613d719ab8d1beff2639ecd3b31dc7",
      "parents": [
        "ebbb16bffa646f853899ef3fdc0ac7abab888703"
      ],
      "author": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sat Sep 05 13:23:49 2009 +0200"
      },
      "committer": {
        "name": "Stefan Richter",
        "email": "stefanr@s5r6.in-berlin.de",
        "time": "Sat Sep 05 15:59:34 2009 +0200"
      },
      "message": "firewire: core: fix crash in iso resource management\n\nThis fixes a regression due to post 2.6.30 commit \"firewire: core: do\nnot DMA-map stack addresses\" 6fdc03709433ccc2005f0f593ae9d9dd04f7b485.\n\nAs David Moore noted, a previously correct sizeof() expression became\nwrong since the commit changed its argument from an array to a pointer.\nThis resulted in an oops in ohci_cancel_packet in the shared workqueue\nthread\u0027s context when an isochronous resource was to be freed.\n\nReported-by: Jonathan Cameron \u003cjic23@cam.ac.uk\u003e\nSigned-off-by: Stefan Richter \u003cstefanr@s5r6.in-berlin.de\u003e\n"
    },
    {
      "commit": "8379e7c46cc48f51197dd663fc6676f47f2a1e71",
      "tree": "ee6ae04dd7014bfe311ea0f48a0aea734a96c2ed",
      "parents": [
        "a1b08e75dff3dc18a88444803753e667bb1d126e"
      ],
      "author": {
        "name": "Sunil Mushran",
        "email": "sunil.mushran@oracle.com",
        "time": "Fri Sep 04 11:12:01 2009 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 04 14:28:31 2009 -0700"
      },
      "message": "ocfs2: ocfs2_write_begin_nolock() should handle len\u003d0\n\nBug introduced by mainline commit e7432675f8ca868a4af365759a8d4c3779a3d922\nThe bug causes ocfs2_write_begin_nolock() to oops when len\u003d0.\n\nSigned-off-by: Sunil Mushran \u003csunil.mushran@oracle.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "ae0b7448e91353ea5f821601a055aca6b58042cd",
      "tree": "a5c5d0532c808fb1eb2c01414edfcd2d0c039a7e",
      "parents": [
        "2defcc3fb4661e7351cb2ac48d843efc4c64db13"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:43 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:43 2009 +0100"
      },
      "message": "dm snapshot: fix on disk chunk size validation\n\nFix some problems seen in the chunk size processing when activating a\npre-existing snapshot.\n\nFor a new snapshot, the chunk size can either be supplied by the creator\nor a default value can be used.  For an existing snapshot, the\nchunk size in the snapshot header on disk should always be used.\n\nIf someone attempts to load an existing snapshot and has the \u0027default\nchunk size\u0027 option set, the kernel uses its default value even when it\nis incorrect for the snapshot being loaded.  This patch ensures the\ncorrect on-disk value is always used.\n\nSecondly, when the code does use the chunk size stored on the disk it is\nprudent to revalidate it, so the code can exit cleanly if it got\ncorrupted as happened in\nhttps://bugzilla.redhat.com/show_bug.cgi?id\u003d461506 .\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2defcc3fb4661e7351cb2ac48d843efc4c64db13",
      "tree": "18be3f5f6c38f8b8b535f05e6004090cd9143af6",
      "parents": [
        "61578dcd3fafe6babd72e8db32110cc0b630a432"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:41 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:41 2009 +0100"
      },
      "message": "dm exception store: split set_chunk_size\n\nBreak the function set_chunk_size to two functions in preparation for\nthe fix in the following patch.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "61578dcd3fafe6babd72e8db32110cc0b630a432",
      "tree": "8e5bb9e66ec43666dd5079cc9203fc56c233b469",
      "parents": [
        "02d2fd31defce6ff77146ad0fef4f19006055d86"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:39 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:39 2009 +0100"
      },
      "message": "dm snapshot: fix header corruption race on invalidation\n\nIf a persistent snapshot fills up, a race can corrupt the on-disk header\nwhich causes a crash on any future attempt to activate the snapshot\n(typically while booting).  This patch fixes the race.\n\nWhen the snapshot overflows, __invalidate_snapshot is called, which calls\nsnapshot store method drop_snapshot. It goes to persistent_drop_snapshot that\ncalls write_header. write_header constructs the new header in the \"area\"\nlocation.\n\nConcurrently, an existing kcopyd job may finish, call copy_callback\nand commit_exception method, that goes to persistent_commit_exception.\npersistent_commit_exception doesn\u0027t do locking, relying on the fact that\ncallbacks are single-threaded, but it can race with snapshot invalidation and\noverwrite the header that is just being written while the snapshot is being\ninvalidated.\n\nThe result of this race is a corrupted header being written that can\nlead to a crash on further reactivation (if chunk_size is zero in the\ncorrupted header).\n\nThe fix is to use separate memory areas for each.\n\nSee the bug: https://bugzilla.redhat.com/show_bug.cgi?id\u003d461506\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "02d2fd31defce6ff77146ad0fef4f19006055d86",
      "tree": "de8103e62595fbc1efcd39ff83bf146018e5180b",
      "parents": [
        "7ec23d50949d5062b5b749638dd9380ed75e58e5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:37 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:37 2009 +0100"
      },
      "message": "dm snapshot: refactor zero_disk_area to use chunk_io\n\nRefactor chunk_io to prepare for the fix in the following patch.\n\nPass an area pointer to chunk_io and simplify zero_disk_area to use\nchunk_io.  No functional change.\n\nCc: stable@kernel.org\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7ec23d50949d5062b5b749638dd9380ed75e58e5",
      "tree": "28183b6468683cf28abd63b9c322b9f31bcddc5e",
      "parents": [
        "d2b698644c97cb033261536a4f2010924a00eac9"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:34 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:34 2009 +0100"
      },
      "message": "dm log: userspace add luid to distinguish between concurrent log instances\n\nDevice-mapper userspace logs (like the clustered log) are\nidentified by a universally unique identifier (UUID).  This\nidentifier is used to associate requests from the kernel to\na specific log in userspace.  The UUID must be unique everywhere,\nsince multiple machines may use this identifier when communicating\nabout a particular log, as is the case for cluster logs.\n\nSometimes, device-mapper/LVM may re-use a UUID.  This is the\ncase during pvmoves, when moving from one segment of an LV\nto another, or when resizing a mirror, etc.  In these cases,\na new log is created with the same UUID and loaded in the\n\"inactive\" slot.  When a device-mapper \"resume\" is issued,\nthe \"live\" table is deactivated and the new \"inactive\" table\nbecomes \"live\".  (The \"inactive\" table can also be removed\nvia a device-mapper \u0027clear\u0027 command.)\n\nThe above two issues were colliding.  More than one log was being\ncreated with the same UUID, and there was no way to distinguish\nbetween them.  So, sometimes the wrong log would be swapped\nout during the exchange.\n\nThe solution is to create a locally unique identifier,\n\u0027luid\u0027, to go along with the UUID.  This new identifier is used\nto determine exactly which log is being referenced by the kernel\nwhen the log exchange is made.  The identifier is not\nuniversally safe, but it does not need to be, since\ncreate/destroy/suspend/resume operations are bound to a specific\nmachine; and these are the operations that make up the exchange.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d2b698644c97cb033261536a4f2010924a00eac9",
      "tree": "32192650a01c913a85953c0a756fca06320fef46",
      "parents": [
        "b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:32 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:32 2009 +0100"
      },
      "message": "dm raid1: do not allow log_failure variable to unset after being set\n\nThis patch fixes a bug which was triggering a case where the primary leg\ncould not be changed on failure even when the mirror was in-sync.\n\nThe case involves the failure of the primary device along with\nthe transient failure of the log device.  The problem is that\nbios can be put on the \u0027failures\u0027 list (due to log failure)\nbefore \u0027fail_mirror\u0027 is called due to the primary device failure.\nNormally, this is fine, but if the log device failure is transient,\na subsequent iteration of the work thread, \u0027do_mirror\u0027, will\nreset \u0027log_failure\u0027.  The \u0027do_failures\u0027 function then resets\nthe \u0027in_sync\u0027 variable when processing bios on the failures list.\nThe \u0027in_sync\u0027 variable is what is used to determine if the\nprimary device can be switched in the event of a failure.  Since\nthis has been reset, the primary device is incorrectly assumed\nto be not switchable.\n\nThe case has been seen in the cluster mirror context, where one\nmachine realizes the log device is dead before the other machines.\nAs the responsibilities of the server migrate from one node to\nanother (because the mirror is being reconfigured due to the failure),\nthe new server may think for a moment that the log device is fine -\nthus resetting the \u0027log_failure\u0027 variable.\n\nIn any case, it is inappropiate for us to reset the \u0027log_failure\u0027\nvariable.  The above bug simply illustrates that it can actually\nhurt us.\n\nCc: stable@kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b8313b6da7e2e7c7f47d93d8561969a3ff9ba0ea",
      "tree": "c605b02cb6ad5c4b68d4066eca4aac6c4747e839",
      "parents": [
        "4142a969175302bc843d1505133488bfdbfa4732"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:30 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:30 2009 +0100"
      },
      "message": "dm log: remove incorrect field from userspace table output\n\nThe output of \u0027dmsetup table\u0027 includes an internal field that should not\nbe there.  This patch removes it.  To make the fix simpler, we first\nreorder a constructor argument\n\nThe \u0027device size\u0027 argument is generated internally.  Currently it is\nplaced as the last space-separated word of the constructor string.\nHowever, we need to use a version of the string without this word, so we\nmove it to the beginning instead so it is trivial to skip past it.\n\nWe keep a copy of the arguments passed to userspace for creating a log,\njust in case we need to resend them.  These are the same arguments that\nare desired in the STATUSTYPE_TABLE request, except for one.  When\ncreating the userspace log, the userspace daemon must know the size of\nthe mirror, so that is added to the arguments given in the constructor\ntable.  We were printing this extra argument out as well, which is a\nmistake.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4142a969175302bc843d1505133488bfdbfa4732",
      "tree": "737cce5d0dc543dacefd7bc2fa27fc43b118318a",
      "parents": [
        "40bea431274c247425e7f5970d796ff7b37a2b22"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Sep 04 20:40:28 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:28 2009 +0100"
      },
      "message": "dm log: fix userspace status output\n\nFix \u0027dmsetup table\u0027 output.\n\nThere is a missing \u0027 \u0027 at the end of the string causing two\nwords to run together.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "40bea431274c247425e7f5970d796ff7b37a2b22",
      "tree": "cc9791861c01605d2dca28d3eac9182c301a832c",
      "parents": [
        "a963a956225eb0f8c4d3537f428153c30adf54b8"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:25 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:25 2009 +0100"
      },
      "message": "dm stripe: expose correct io hints\n\nSet sensible I/O hints for striped DM devices in the topology\ninfrastructure added for 2.6.31 for userspace tools to\nobtain via sysfs.\n\nAdd .io_hints to \u0027struct target_type\u0027 to allow the I/O hints portion\n(io_min and io_opt) of the \u0027struct queue_limits\u0027 to be set by each\ntarget and implement this for dm-stripe.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a963a956225eb0f8c4d3537f428153c30adf54b8",
      "tree": "d4204f64aaf23b7a1615f4f293358eca5125c748",
      "parents": [
        "f6a1ed10864b7540fa758bbccf3433fe17070329"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:24 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:24 2009 +0100"
      },
      "message": "dm table: add more context to terse warning messages\n\nA couple of recent warning messages make it difficult for the reader to\ndetermine exactly what is wrong.  This patch adds more information to\nthose messages.\n\nThe messages were added by these commits:\n  5dea271b6d87bd1d79a59c1d5baac2596a841c37 (\"dm table: pass correct dev area size\nto device_area_is_valid\")\n  ea9df47cc92573b159ef3b4fda516c32cba9c4fd (\"dm table: fix blk_stack_limits arg\nto use bytes not sectors\")\n\nThe patch also corrects references to logical_block_size in printk format\nstrings from %hu to %u.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f6a1ed10864b7540fa758bbccf3433fe17070329",
      "tree": "e0b8f1c02f0527e0870dee2977f311695856f8a5",
      "parents": [
        "8811f46c1f9386fc7017150de9d52359e5b1826e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Sep 04 20:40:22 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:22 2009 +0100"
      },
      "message": "dm table: fix queue_limit checking device iterator\n\nThe logic to check for valid device areas is inverted relative to proper\nuse with iterate_devices.\n\nThe iterate_devices method calls its callback for every underlying\ndevice in the target.  If any callback returns non-zero, iterate_devices\nexits immediately.  But the callback device_area_is_valid() returns 0 on\nerror and 1 on success.  The overall effect without is that an error is\nissued only if every device is invalid.\n\nThis patch renames device_area_is_valid to device_area_is_invalid and\ninverts the logic so that one invalid device is sufficient to raise\nan error.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8811f46c1f9386fc7017150de9d52359e5b1826e",
      "tree": "d7ff12ec29d2911801e81b50440f160d58b0f9a8",
      "parents": [
        "a77e28c7e1dc1a6a035c7627d4a88ecf3ea09aea"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Fri Sep 04 20:40:19 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:19 2009 +0100"
      },
      "message": "dm snapshot: implement iterate devices\n\nImplement the .iterate_devices for the origin and snapshot targets.\ndm-snapshot\u0027s lack of .iterate_devices resulted in the inability to\nproperly establish queue_limits for both targets.\n\nWith 4K sector drives: an unfortunate side-effect of not establishing\nproper limits in either targets\u0027 DM device was that IO to the devices\nwould fail even though both had been created without error.\n\nCommit af4874e03ed82f050d5872d8c39ce64bf16b5c38 (\"dm target:s introduce\niterate devices fn\") in 2.6.31-rc1 should have implemented .iterate_devices\nfor dm-snap.c\u0027s origin and snapshot targets.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a77e28c7e1dc1a6a035c7627d4a88ecf3ea09aea",
      "tree": "0d481ef49120eda629409cbac9dbe63ba472f873",
      "parents": [
        "37d0892c5a94e208cf863e3b7bac014edee4346d"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Sep 04 20:40:16 2009 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Sep 04 20:40:16 2009 +0100"
      },
      "message": "dm multipath: fix oops when request based io fails when no paths\n\nThe patch posted at http://marc.info/?l\u003ddm-devel\u0026m\u003d124539787228784\u0026w\u003d2\nwhich was merged into cec47e3d4a861e1d942b3a580d0bbef2700d2bb2 (\"dm:\nprepare for request based option\") introduced a regression in\nrequest-based dm.\n\nIf map_request() calls dm_kill_unmapped_request() to complete a cloned\nbio without dispatching it, clone-\u003ebio is still set when\ndm_end_request() is called and the BUG_ON(clone-\u003ebio) is incorrect.\n\nThe patch fixes this bug by freeing bio in dm_end_request() if the clone\nhas bio.  I\u0027ve redone my tests to cover all I/O paths and confirmed\nthere\u0027s no other regression.\n\nHere is the oops I hit in request-based dm when I do I/O to a multipath\ndevice which doesn\u0027t have any active path nor queue_if_no_path setting:\n\n------------[ cut here ]------------\nkernel BUG at /root/2.6.31-rc4.rqdm/drivers/md/dm.c:828!\ninvalid opcode: 0000 [#1] SMP\nlast sysfs file: /sys/devices/system/cpu/cpu3/cache/index2/shared_cpu_map\nCPU 1\nModules linked in: autofs4 sunrpc cpufreq_ondemand acpi_cpufreq dm_mirror dm_region_hash dm_log dm_service_time dm_multipath scsi_dh dm_mod video output sbs sbshc battery ac sg sr_mod e1000e button cdrom serio_raw rtc_cmos rtc_core rtc_lib piix lpfc scsi_transport_fc ata_piix libata megaraid_sas sd_mod scsi_mod crc_t10dif ext3 jbd uhci_hcd ohci_hcd ehci_hcd [last unloaded: microcode]\nPid: 7, comm: ksoftirqd/1 Not tainted 2.6.31-rc4.rqdm #1 Express5800/120Lj [N8100-1417]\nRIP: 0010:[\u003cffffffffa023629d\u003e]  [\u003cffffffffa023629d\u003e] dm_softirq_done+0xbd/0x100 [dm_mod]\nRSP: 0018:ffff8800280a1f08  EFLAGS: 00010282\nRAX: ffffffffa02544e0 RBX: ffff8802aa1111d0 RCX: ffff8802aa1111e0\nRDX: ffff8802ab913e70 RSI: 0000000000000000 RDI: ffff8802ab913e70\nRBP: ffff8800280a1f28 R08: ffffc90005457040 R09: 0000000000000000\nR10: 0000000000000001 R11: 0000000000000000 R12: 00000000fffffffb\nR13: ffff8802ab913e88 R14: ffff8802ab9c1438 R15: 0000000000000100\nFS:  0000000000000000(0000) GS:ffff88002809e000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b\nCR2: 0000003d54a98640 CR3: 000000029f0a1000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess ksoftirqd/1 (pid: 7, threadinfo ffff8802ae50e000, task ffff8802ae4f8040)\nStack:\n ffff8800280a1f38 0000000000000020 ffffffff814f30a0 0000000000000004\n\u003c0\u003e ffff8800280a1f58 ffffffff8116b245 ffff8800280a1f38 ffff8800280a1f38\n\u003c0\u003e ffff8800280a1f58 0000000000000001 ffff8800280a1fa8 ffffffff810477bc\nCall Trace:\n \u003cIRQ\u003e\n [\u003cffffffff8116b245\u003e] blk_done_softirq+0x75/0x90\n [\u003cffffffff810477bc\u003e] __do_softirq+0xcc/0x210\n [\u003cffffffff81047170\u003e] ? ksoftirqd+0x0/0x110\n [\u003cffffffff8100ce7c\u003e] call_softirq+0x1c/0x50\n \u003cEOI\u003e\n [\u003cffffffff8100e785\u003e] do_softirq+0x65/0xa0\n [\u003cffffffff81047170\u003e] ? ksoftirqd+0x0/0x110\n [\u003cffffffff810471e0\u003e] ksoftirqd+0x70/0x110\n [\u003cffffffff81059559\u003e] kthread+0x99/0xb0\n [\u003cffffffff8100cd7a\u003e] child_rip+0xa/0x20\n [\u003cffffffff8100c73c\u003e] ? restore_args+0x0/0x30\n [\u003cffffffff810594c0\u003e] ? kthread+0x0/0xb0\n [\u003cffffffff8100cd70\u003e] ? child_rip+0x0/0x20\nCode: 44 89 e6 48 89 df e8 23 fb f2 e0 be 01 00 00 00 4c 89 f7 e8 f6 fd ff ff 5b 41 5c 41 5d 41 5e c9 c3 4c 89 ef e8 85 fe ff ff eb ed \u003c0f\u003e 0b eb fe 41 8b 85 dc 00 00 00 48 83 bb 10 01 00 00 00 89 83\nRIP  [\u003cffffffffa023629d\u003e] dm_softirq_done+0xbd/0x100 [dm_mod]\n RSP \u003cffff8800280a1f08\u003e\n---[ end trace 16af0a1d8542da55 ]---\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "bd4352cadfacb9084c97c853b025fac010266c26",
      "tree": "ef54f0801dce4822df71cca587421446ad259ebd",
      "parents": [
        "e6617c6ec28a17cf2f90262b835ec05b9b861400"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 04 03:38:54 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Sep 04 03:39:45 2009 -0700"
      },
      "message": "sparc64: Fix bootup with mcount in some configs.\n\nFunctions invoked early when booting up a cpu can\u0027t use\ntracing because mcount requires a valid \u0027current_thread_info()\u0027\nand TLB mappings to be setup.\n\nThe code path of sun4v_register_mondo_queues --\u003e register_one_mondo\nis one such case.  sun4v_register_mondo_queues already has the\nnecessary \u0027notrace\u0027 annotation, but register_one_mondo does not.\n\nNormally register_one_mondo is inlined so the bug doesn\u0027t trigger,\nbut with some config/compiler combinations, it won\u0027t be so we\nmust properly mark it notrace.\n\nWhile we\u0027re here, add \u0027notrace\u0027 annoations to prom_printf and\nprom_halt so that early error handling won\u0027t have the same problem.\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nReported-by: Leif Sawyer \u003clsawyer@gci.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "2bcaa6a4238094c5695d5b1943078388d82d3004",
      "tree": "510e4616e4a4a83ba177a6779a50b79007c832d1",
      "parents": [
        "ced909ff048c9950e211783417f3c01361f3be28"
      ],
      "author": {
        "name": "Dave Andrews",
        "email": "jetdog330@hotmail.com",
        "time": "Thu Sep 03 17:21:27 2009 -0700"
      },
      "committer": {
        "name": "Dmitry Torokhov",
        "email": "dmitry.torokhov@gmail.com",
        "time": "Thu Sep 03 20:41:44 2009 -0700"
      },
      "message": "Input: atkbd - add Compaq Presario R4000-series repeat quirk\n\nCompaq Presario R4000-series laptops are not sending a \"volume up button\nrelease\" and \"volume down button release\" signal in the PS/2 protocol for\natkbd. The URL below has some of confirmed reports:\n\nhttps://bugs.launchpad.net/ubuntu/+source/linux/+bug/385477\n\nSigned-off-by: Dave Andrews \u003cjetdog330@hotmail.com\u003e\nSigned-off-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\n"
    },
    {
      "commit": "d76b1590e06a63a3d8697168cd0aabf1c4b3cb3a",
      "tree": "276a0323e0b25192fdb837475b816db3b3052cad",
      "parents": [
        "326ba5010a5429a5a528b268b36a5900d4ab0eba"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Sep 03 22:38:59 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Sep 03 22:38:59 2009 +0300"
      },
      "message": "slub: Fix kmem_cache_destroy() with SLAB_DESTROY_BY_RCU\n\nkmem_cache_destroy() should call rcu_barrier() *after* kmem_cache_close() and\n*before* sysfs_slab_remove() or risk rcu_free_slab() being called after\nkmem_cache is deleted (kfreed).\n\nrmmod nf_conntrack can crash the machine because it has to kmem_cache_destroy()\na SLAB_DESTROY_BY_RCU enabled cache.\n\nCc: \u003cstable@kernel.org\u003e\nReported-by: Zdenek Kabelac \u003czdenek.kabelac@gmail.com\u003e\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51",
      "tree": "c0794baebf16ecbbedbe79daaba80281fdad1e03",
      "parents": [
        "16f05c2b68520f94e365f9d347a7076f4ff00ad5"
      ],
      "author": {
        "name": "Massimo Cirillo",
        "email": "maxcir@gmail.com",
        "time": "Thu Aug 27 10:44:09 2009 +0200"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Thu Sep 03 15:01:34 2009 +0100"
      },
      "message": "JFFS2: add missing verify buffer allocation/deallocation\n\nThe function jffs2_nor_wbuf_flash_setup() doesn\u0027t allocate the verify buffer\nif CONFIG_JFFS2_FS_WBUF_VERIFY is defined, so causing a kernel panic when\nthat macro is enabled and the verify function is called. Similarly the\njffs2_nor_wbuf_flash_cleanup() must free the buffer if\nCONFIG_JFFS2_FS_WBUF_VERIFY is enabled.\nThe following patch fixes the problem.\nThe following patch applies to 2.6.30 kernel.\n\nSigned-off-by: Massimo Cirillo \u003cmaxcir@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "16f05c2b68520f94e365f9d347a7076f4ff00ad5",
      "tree": "ca06a5950392f6619c92fdb3431729a40096744e",
      "parents": [
        "4149ed1aa944ab864024982a2e568d17eccff504"
      ],
      "author": {
        "name": "Dimitri Gorokhovik",
        "email": "dimitri.gorokhovik@free.fr",
        "time": "Thu Sep 03 14:04:22 2009 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Thu Sep 03 14:59:16 2009 +0100"
      },
      "message": "mtd: nftl: fix offset alignments\n\nArithmetic conversion in the mask computation makes the upper word\nof the second argument passed down to mtd-\u003eread_oob(), be always 0\n(assuming \u0027offs\u0027 being a 64-bit signed long long type, and\n\u0027mtd-\u003ewritesize\u0027 being a 32-bit unsigned int type).\n\nThis patch applies over the other one adding masking in nftl_write,\n\"nftl: write support is broken\".\n\nSigned-off-by: Dimitri Gorokhovik \u003cdimitri.gorokhovik@free.fr\u003e\nCc: Tim Gardner \u003ctim.gardner@canonical.com\u003e\nCc: Scott James Remnant \u003cscott@canonical.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "4149ed1aa944ab864024982a2e568d17eccff504",
      "tree": "c6edeeefe922c68609e0458f423b9c1566751021",
      "parents": [
        "edcb3b14863e1a6aa1923eeaa81125a00cf51a80"
      ],
      "author": {
        "name": "Dimitri Gorokhovik",
        "email": "dimitri.gorokhovik@free.fr",
        "time": "Thu Sep 03 14:59:13 2009 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Thu Sep 03 14:59:13 2009 +0100"
      },
      "message": "mtd: nftl: write support is broken\n\nWrite support is broken in NFTL. Fix it.\n\nSigned-off-by: \u003cdimitri.gorokhovik@free.fr\u003e\nCc: Tim Gardner \u003ctim.gardner@canonical.com\u003e\nCc: Scott James Remnant \u003cscott@canonical.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "edcb3b14863e1a6aa1923eeaa81125a00cf51a80",
      "tree": "0ced8f34894d08904c9a3fffee40b4051bfa6ad4",
      "parents": [
        "37d0892c5a94e208cf863e3b7bac014edee4346d"
      ],
      "author": {
        "name": "Anton Vorontsov",
        "email": "avorontsov@ru.mvista.com",
        "time": "Thu Aug 06 15:18:37 2009 -0700"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Thu Sep 03 13:58:02 2009 +0100"
      },
      "message": "mtd: m25p80: fix null pointer dereference bug\n\nThis patch fixes the following oops, observed with MTD_PARTITIONS\u003dn:\n\nm25p80 spi32766.0: m25p80 (1024 Kbytes)\nUnable to handle kernel paging request for data at address 0x00000008\nFaulting instruction address: 0xc03a54b0\nOops: Kernel access of bad area, sig: 11 [#1]\nModules linked in:\nNIP: c03a54b0 LR: c03a5494 CTR: c01e98b8\nREGS: ef82bb60 TRAP: 0300   Not tainted  (2.6.31-rc4-00167-g4733fd3)\nMSR: 00029000 \u003cEE,ME,CE\u003e  CR: 24022022  XER: 20000000\nDEAR: 00000008, ESR: 00000000\nTASK \u003d ef82c000[1] \u0027swapper\u0027 THREAD: ef82a000\nGPR00: 00000000 ef82bc10 ef82c000 0000002e 00001eb8 ffffffff c01e9824 00000036\nGPR08: c054ed40 c0542a08 00001eb8 00004000 22022022 1001a1a0 3ff8fd00 00000000\nGPR16: 00000000 00000001 00000000 00000000 ef82bddc c0530000 efbef500 ef8356d0\nGPR24: 00000000 ef8356d0 00000000 efbf7a00 c0530ec4 ffffffed efbf5300 c0541f98\nNIP [c03a54b0] m25p_probe+0x22c/0x354\nLR [c03a5494] m25p_probe+0x210/0x354\nCall Trace:\n[ef82bc10] [c03a5494] m25p_probe+0x210/0x354 (unreliable)\n[ef82bca0] [c024e37c] spi_drv_probe+0x2c/0x3c\n[ef82bcb0] [c01f1afc] driver_probe_device+0xa4/0x178\n[ef82bcd0] [c01f06e8] bus_for_each_drv+0x6c/0xa8\n[ef82bd00] [c01f1a34] device_attach+0x84/0xa8\n...\n\nSigned-off-by: Anton Vorontsov \u003cavorontsov@ru.mvista.com\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "e6617c6ec28a17cf2f90262b835ec05b9b861400",
      "tree": "550d509cca4413f472a6997751357f26aa2e680a",
      "parents": [
        "d8ed1d43e17898761c7221014a15a4c7501d2ff3"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 03 02:35:20 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Sep 03 02:35:20 2009 -0700"
      },
      "message": "sparc64: Kill spurious NMI watchdog triggers by increasing limit to 30 seconds.\n\nThis is a compromise and a temporary workaround for bootup NMI\nwatchdog triggers some people see with qla2xxx devices present.\n\nThis happens when, for example:\n\nCPU 0 is in the driver init and looping submitting mailbox commands to\nload the firmware, then waiting for completion.\n\nCPU 1 is receiving the device interrupts.  CPU 1 is where the NMI\nwatchdog triggers.\n\nCPU 0 is submitting mailbox commands fast enough that by the time CPU\n1 returns from the device interrupt handler, a new one is pending.\nThis sequence runs for more than 5 seconds.\n\nThe problematic case is CPU 1\u0027s timer interrupt running when the\nbarrage of device interrupts begin.  Then we have:\n\n\ttimer interrupt\n\treturn for softirq checking\n\tpending, thus enable interrupts\n\n\t\t qla2xxx interrupt\n\t\t return\n\t\t qla2xxx interrupt\n\t\t return\n\t\t ... 5+ seconds pass\n\t\t final qla2xxx interrupt for fw load\n\t\t return\n\n\trun timer softirq\n\treturn\n\nAt some point in the multi-second qla2xxx interrupt storm we trigger\nthe NMI watchdog on CPU 1 from the NMI interrupt handler.\n\nThe timer softirq, once we get back to running it, is smart enough to\nrun the timer work enough times to make up for the missed timer\ninterrupts.\n\nHowever, the NMI watchdogs (both x86 and sparc) use the timer\ninterrupt count to notice the cpu is wedged.  But in the above\nscenerio we\u0027ll receive only one such timer interrupt even if we last\nall the way back to running the timer softirq.\n\nThe default watchdog trigger point is only 5 seconds, which is pretty\nlow (the softwatchdog triggers at 60 seconds).  So increase it to 30\nseconds for now.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "a3df6f7d3090e611bcc774cd2cba45ae016d37e1",
      "tree": "fd7239293b33e2d60ad6e5d7f2f2df9ef985a056",
      "parents": [
        "eced1dfcfcf6b0a35e925d73916a9d8e36ab5457"
      ],
      "author": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Thu Sep 03 11:52:02 2009 +1000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 03 08:41:53 2009 +0200"
      },
      "message": "perf_counter/powerpc: Fix cache event codes for POWER7\n\nI had the codes for L1 D-cache load accesses and misses swapped\naround, and the wrong codes for LL-cache accesses and misses.\nThis corrects them.\n\nReported-by: Corey Ashford \u003ccjashfor@linux.vnet.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003cstable@kernel.org\u003e\nLKML-Reference: \u003c19103.8514.709300.585484@cargo.ozlabs.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "16ebb5e0b36ceadc8186f71d68b0c4fa4b6e781b",
      "tree": "4a89b7591d0f4478d0dda12db649db2d94d16929",
      "parents": [
        "2fbd3da3877ad8d923b055e5996f80b4d4a6daf4"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Wed Sep 02 02:40:09 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed Sep 02 22:55:17 2009 -0700"
      },
      "message": "tc: Fix unitialized kernel memory leak\n\nThree bytes of uninitialized kernel memory are currently leaked to user\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Jiri Pirko \u003cjpirko@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92653453c3015c083b9fe0ad48261c6b2267d482",
      "tree": "8f58b19dd593d734f7675bc7120dafadbd8d02ff",
      "parents": [
        "b91ab72b830e1494c2c7f8de05ccb2ab2c9cfb26"
      ],
      "author": {
        "name": "Clemens Ladisch",
        "email": "clemens@ladisch.de",
        "time": "Wed Sep 02 18:25:39 2009 +0200"
      },
      "committer": {
        "name": "Takashi Iwai",
        "email": "tiwai@suse.de",
        "time": "Thu Sep 03 07:38:06 2009 +0200"
      },
      "message": "sound: oxygen: handle cards with missing EEPROM\n\nThe card model detection code introduced in 2.6.30 that tries to work\naround partially broken EEPROM contents by reading the EEPROM directly\ndoes not handle cards where the EEPROM has been omitted.  In this case,\nwe have to use the default ID to allow the driver to load.\n\nSigned-off-by: Clemens Ladisch \u003cclemens@ladisch.de\u003e\nReported-and-tested-by: Ozan Çağlayan \u003cozan@pardus.org.tr\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Takashi Iwai \u003ctiwai@suse.de\u003e\n"
    },
    {
      "commit": "07fb6111e7af5fac6b6076e2658d0e32b67f713b",
      "tree": "758adfd9dadf544eebf9a2558133298f32b08b42",
      "parents": [
        "58c2fb647a3cf70a90d7b33a3f2a8396a20a0bc4"
      ],
      "author": {
        "name": "Zhenyu Wang",
        "email": "zhenyuw@linux.intel.com",
        "time": "Thu Aug 13 18:57:29 2009 +0800"
      },
      "committer": {
        "name": "Eric Anholt",
        "email": "eric@anholt.net",
        "time": "Wed Sep 02 10:55:02 2009 -0700"
      },
      "message": "agp/intel: support for new chip variant of IGDNG mobile\n\nNew variant of IGDNG mobile chip has new host bridge id.\n\n[anholt: Note that this new PCI ID doesn\u0027t impact the DRM, which doesn\u0027t\ncare about the PCI ID of the bridge]\n\nSigned-off-by: Zhenyu Wang \u003czhenyuw@linux.intel.com\u003e\nSigned-off-by: Eric Anholt \u003ceric@anholt.net\u003e\n"
    }
  ],
  "next": "58c2fb647a3cf70a90d7b33a3f2a8396a20a0bc4"
}
