)]}'
{
  "log": [
    {
      "commit": "027ed2f0044e95a97ed34db2d55a9ca95ba84385",
      "tree": "7bcdb6d542e5adbbe8cfd59c9ddc36be868f1238",
      "parents": [
        "9eb9104c665aae2401a1723c044669eb10240072"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jun 08 08:27:56 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 18:57:10 2011 -0400"
      },
      "message": "Btrfs: avoid stack bloat in btrfs_ioctl_fs_info()\n\nThe size of struct btrfs_ioctl_fs_info_args is as big as 1KB, so\ndon\u0027t declare the variable on stack.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9eb9104c665aae2401a1723c044669eb10240072",
      "tree": "21b3395270516a4978b10090fe8d9bd4bce8203b",
      "parents": [
        "38e880540f983045da7a00fbc50daad238207fc5"
      ],
      "author": {
        "name": "richard kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Tue Jun 07 10:46:32 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 18:57:10 2011 -0400"
      },
      "message": "btrfs: remove 64bit alignment padding to allow extent_buffer to fit into one fewer cacheline\n\nReorder extent_buffer to remove 8 bytes of alignment padding on 64 bit\nbuilds. This shrinks its size to 128 bytes allowing it to fit into one\nfewer cache lines and allows more objects per slab in its kmem_cache.\n\nslabinfo extent_buffer reports :-\n\n before:-\n    Sizes (bytes)     Slabs\n    ----------------------------------\n    Object :     136  Total  :     123\n    SlabObj:     136  Full   :     121\n    SlabSiz:    4096  Partial:       0\n    Loss   :       0  CpuSlab:       2\n    Align  :       8  Objects:      30\n\n after :-\n    Object :     128  Total  :       4\n    SlabObj:     128  Full   :       2\n    SlabSiz:    4096  Partial:       0\n    Loss   :       0  CpuSlab:       2\n    Align  :       8  Objects:      32\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "38e880540f983045da7a00fbc50daad238207fc5",
      "tree": "3221e77ecf07f3a25037fccc304788aab33e0724",
      "parents": [
        "38e87880666091fe9c572a7a2ed2e771d97ca5aa"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Jun 10 18:43:13 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 16:42:29 2011 -0400"
      },
      "message": "Btrfs: clear current-\u003ejournal_info on async transaction commit\n\nNormally current-\u003ejouranl_info is cleared by commit_transaction.  For an\nasync snap or subvol creation, though, it runs in a work queue.  Clear\nit in btrfs_commit_transaction_async() to avoid leaking a non-NULL\njournal_info when we return to userspace.  When the actual commit runs in\nthe other thread it won\u0027t care that it\u0027s current-\u003ejournal_info is already\nNULL.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nTested-by: Jim Schutt \u003cjaschut@sandia.gov\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "38e87880666091fe9c572a7a2ed2e771d97ca5aa",
      "tree": "5e48b7ce7220a2b99f60574f6b02b6b41286d5de",
      "parents": [
        "3473f3c06a36865ae05993041fff35ee928342a7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 16:36:57 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 16:36:57 2011 -0400"
      },
      "message": "Btrfs: make sure to recheck for bitmaps in clusters\n\nJosef recently changed the free extent cache to look in\nthe block group cluster for any bitmaps before trying to\nadd a new bitmap for the same offset.  This avoids BUG_ON()s due\ncovering duplicate ranges.\n\nBut it didn\u0027t go quite far enough.  A given free range might span\nbetween one or more bitmaps or free space entries.  The code has\nlooping to cover this, but it doesn\u0027t check for clustered bitmaps\nevery time.\n\nThis shuffles our gotos to check for a bitmap in the cluster\nfor every new bitmap entry we try to add.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3473f3c06a36865ae05993041fff35ee928342a7",
      "tree": "1f87d27e58a27ab525ac7579e6e1233052f8b573",
      "parents": [
        "25b8b936ed44814a5ce6fc3b2a21401f33cd56f6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jun 09 10:15:17 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jun 09 10:15:17 2011 -0400"
      },
      "message": "Btrfs: unlock the trans lock properly\n\nIn btrfs_wait_for_commit if we came upon a transaction that had committed we\njust exited, but that\u0027s bad since we are holding the trans_lock.  So break\ninstead so that the lock is dropped.  Thanks,\n\nReported-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "25b8b936ed44814a5ce6fc3b2a21401f33cd56f6",
      "tree": "3f95ff0f54340bf63885e1d38766cf52a05d3029",
      "parents": [
        "f6a398298d34af66ec3a2d82a44a4dbc5277357d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 14:36:54 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jun 09 10:12:07 2011 -0400"
      },
      "message": "Btrfs: don\u0027t map extent buffer if path-\u003eskip_locking is set\n\nArne\u0027s scrub stuff exposed a problem with mapping the extent buffer in\nreada_for_search.  He searches the commit root with multiple threads and with\nskip_locking set, so we can race and overwrite node-\u003emap_token since node isn\u0027t\nlocked.  So fix this so that we only map the extent buffer if we don\u0027t already\nhave a map_token and skip_locking isn\u0027t set.  Without this patch scrub would\npanic almost immediately, with the patch it doesn\u0027t panic anymore.  Thanks,\n\nReported-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f6a398298d34af66ec3a2d82a44a4dbc5277357d",
      "tree": "5cb1a6437051c22f2f3ecca9a4c7d60e4192d377",
      "parents": [
        "723bda2083d44edbd6be0f0b09f902120dc07442"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jun 06 10:50:35 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 16:37:29 2011 -0400"
      },
      "message": "Btrfs: fix duplicate checking logic\n\nWhen merging my code into the integration test the second check for duplicate\nentries got screwed up.  This patch fixes it by dropping ret2 and just using ret\nfor the return value, and checking if we got an error before adding the bitmap\nto the local list.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "723bda2083d44edbd6be0f0b09f902120dc07442",
      "tree": "55ee1276c7e5e1dc95a6204cc138d69983bb0ffb",
      "parents": [
        "2cdc342c204dba69ca3b2ec43d8e6ff41ed920b8"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 27 16:11:38 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 16:37:29 2011 -0400"
      },
      "message": "Btrfs: fix the allocator loop logic\n\nI was testing with empty_cluster \u003d 0 to try and reproduce a problem and kept\nhitting early enospc panics.  This was because our loop logic was a little\nconfused.  So this is what I did\n\n1) Make the loop variable the ultimate decider on wether we should loop again\nisntead of checking to see if we had an uncached bg, empty size or empty\ncluster.\n\n2) Increment loop before checking to see what we are on to make the loop\ndefinitions make more sense.\n\n3) If we are on the chunk alloc loop don\u0027t set empty_size/empty_cluster to 0\nunless we didn\u0027t actually allocate a chunk.  If we did allocate a chunk we\nshould be able to easily setup a new cluster so clearing\nempty_size/empty_cluster makes us less efficient.\n\nThis kept me from hitting panics while trying to reproduce the other problem.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2cdc342c204dba69ca3b2ec43d8e6ff41ed920b8",
      "tree": "e077a03c0b17799150b837deeffb27f3842be536",
      "parents": [
        "f2bb8f5cfb3bce595b2de251ed7638047fc4e530"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 27 14:07:49 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 16:37:28 2011 -0400"
      },
      "message": "Btrfs: fix bitmap regression\n\nIn cleaning up the clustering code I accidently introduced a regression by\nadding bitmap entries to the cluster rb tree.  The problem is if we\u0027ve maxed out\nthe number of bitmaps we can have for the block group we can only add free space\nto the bitmaps, but since the bitmap is on the cluster we can\u0027t find it and we\ntry to create another one.  This would result in a panic because the total\nbitmaps was bigger than the max bitmaps that were allowed.  This patch fixes\nthis by checking to see if we have a cluster, and then looking at the cluster rb\ntree to see if it has a bitmap entry and if it does and that space belongs to\nthat bitmap, go ahead and add it to that bitmap.\n\nI could hit this panic every time with an fs_mark test within a couple of\nminutes.  With this patch I no longer hit the panic and fs_mark goes to\ncompletion.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f2bb8f5cfb3bce595b2de251ed7638047fc4e530",
      "tree": "705123220f4e1ae64f1f67b852f9e93b18db8e9a",
      "parents": [
        "3de85bb95cc50d0977cbb7a0c605e894be4c790d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 25 13:10:16 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 15:08:31 2011 -0400"
      },
      "message": "Btrfs: don\u0027t commit the transaction if we dont have enough pinned bytes\n\nI noticed when running an enospc test that we would get stuck committing the\ntransaction in check_data_space even though we truly didn\u0027t have enough space.\nSo check to see if bytes_pinned is bigger than num_bytes, if it\u0027s not don\u0027t\ncommit the transaction.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3de85bb95cc50d0977cbb7a0c605e894be4c790d",
      "tree": "bb2b0a07f070c1e0cd50b41962cedcccf8428fd8",
      "parents": [
        "86d4a77ba3dc4ace238a0556541a41df2bd71d49"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 25 13:07:37 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 15:08:30 2011 -0400"
      },
      "message": "Btrfs: noinline the cluster searching functions\n\nWhen profiling the find cluster code it\u0027s hard to tell where we are spending our\ntime because the bitmap and non-bitmap functions get inlined by the compiler, so\nmake that not happen.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "86d4a77ba3dc4ace238a0556541a41df2bd71d49",
      "tree": "d59bdf911b0a360f87308c1499a320f1b6f7be06",
      "parents": [
        "aa0467d8d2a00e75b2bb6a56a4ee6d70c5d1928f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 25 13:03:16 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 15:08:28 2011 -0400"
      },
      "message": "Btrfs: cache bitmaps when searching for a cluster\n\nIf we are looking for a cluster in a particularly sparse or fragmented block\ngroup, we will do a lot of looping through the free space tree looking for\nvarious things, and if we need to look at bitmaps we will endup doing the whole\ndance twice.  So instead add the bitmap entries to a temporary list so if we\nhave to do the bitmap search we can just look through the list of entries we\u0027ve\nfound quickly instead of having to loop through the entire tree again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "aa0467d8d2a00e75b2bb6a56a4ee6d70c5d1928f",
      "tree": "0139c403353d9e1ab771fc7c9049e5c334329d17",
      "parents": [
        "7841cb2898f66a73062c64d0ef5733dde7279e46"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Fri Jun 03 16:29:08 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:11:38 2011 -0400"
      },
      "message": "btrfs: fix uninitialized variable warning\n\nWith Linus\u0027 tree, today\u0027s linux-next build (powercp ppc64_defconfig)\nproduced this warning:\n\nfs/btrfs/delayed-inode.c: In function \u0027btrfs_delayed_update_inode\u0027:\nfs/btrfs/delayed-inode.c:1598:6: warning: \u0027ret\u0027 may be used\nuninitialized in this function\n\nIntroduced by commit 16cdcec736cd (\"btrfs: implement delayed inode items\noperation\").\n\nThis fixes a bug in btrfs_update_inode(): if the returned value from\nbtrfs_delayed_update_inode is a nonzero garbage, inode stat data are not\nupdated and several call paths may hit a BUG_ON or fail with strange\ncode.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "7841cb2898f66a73062c64d0ef5733dde7279e46",
      "tree": "b7a94d96d44971845951a59e9fb7b5c2e30c46b3",
      "parents": [
        "4b9465cb9e3859186eefa1ca3b990a5849386320"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 18:07:27 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:11:22 2011 -0400"
      },
      "message": "btrfs: add helper for fs_info-\u003eclosing\n\nwrap checking of filesystem \u0027closing\u0027 flag and fix a few missing memory\nbarriers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "4b9465cb9e3859186eefa1ca3b990a5849386320",
      "tree": "8fc06452fb75e52f6c1c2e2253c2ff6700e622fd",
      "parents": [
        "e7786c3ae517b2c433edc91714e86be770e9f1ce"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 03 09:36:29 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:47 2011 -0400"
      },
      "message": "Btrfs: add mount -o inode_cache\n\nThis makes the inode map cache default to off until we\nfix the overflow problem when the free space crcs don\u0027t fit\ninside a single page.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e7786c3ae517b2c433edc91714e86be770e9f1ce",
      "tree": "90caab3728a36a579162b4868f41fc3426c5cbb4",
      "parents": [
        "a4689d2bd3b00dcf5c4320f06e0ab88810fbff9c"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat May 28 20:58:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:46 2011 -0400"
      },
      "message": "btrfs: scrub: add explicit plugging\n\nWith the removal of the implicit plugging scrub ends up doing more and\nsmaller I/O than necessary. This patch adds explicit plugging per chunk.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a4689d2bd3b00dcf5c4320f06e0ab88810fbff9c",
      "tree": "295bcdb0fdbe5a4cda80eb886694efd45e276699",
      "parents": [
        "d132a538d258f8f52fd0cd8b5017755f4e915386"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 17:08:14 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:46 2011 -0400"
      },
      "message": "btrfs: use btrfs_ino to access inode number\n\ncommit 4cb5300bc (\"Btrfs: add mount -o auto_defrag\") accesses inode\nnumber directly while it should use the helper with the new inode\nnumber allocator.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d132a538d258f8f52fd0cd8b5017755f4e915386",
      "tree": "bf3a5e67c8eff57425dd656778b40c5aaf858f80",
      "parents": [
        "5f3f302a6f4cb74906c05fad1d03fc5e95c7e5af"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue May 31 19:33:33 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:45 2011 -0400"
      },
      "message": "Btrfs: don\u0027t save the inode cache if we are deleting this root\n\nWith xfstest 254 I can panic the box every time with the inode number caching\nstuff on.  This is because we clean the inodes out when we delete the subvolume,\nbut then we write out the inode cache which adds an inode to the subvolume inode\ntree, and then when it gets evicted again the root gets added back on the dead\nroots list and is deleted again, so we have a double free.  To stop this from\nhappening just return 0 if refs is 0 (and we\u0027re not the tree root since tree\nroot always has refs of 0).  With this fix 254 no longer panics.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nTested-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f3f302a6f4cb74906c05fad1d03fc5e95c7e5af",
      "tree": "224a59dcd31fbbe2b23ac85d3d4906bbf7327b78",
      "parents": [
        "ca456ae280c0646e1e571c3b9a3834c55e90adfe"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon May 30 08:36:16 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:44 2011 -0400"
      },
      "message": "btrfs: false BUG_ON when degraded\n\nIn degraded mode the struct btrfs_device of missing devs don\u0027t have\ndevice-\u003ename set. A kstrdup of NULL correctly returns NULL. Don\u0027t\nBUG in this case.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ca456ae280c0646e1e571c3b9a3834c55e90adfe",
      "tree": "945f70453e07c59739c02808f69598f637d35dfa",
      "parents": [
        "211f96c24f117fcc6e9e2431e40d92f4de22625e"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jun 01 09:42:49 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:44 2011 -0400"
      },
      "message": "Btrfs: don\u0027t save the inode cache in non-FS roots\n\nThis adds extra checks to make sure the inode map we are caching really\nbelongs to a FS root instead of a special relocation tree.  It\nprevents crashes during balancing operations.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "211f96c24f117fcc6e9e2431e40d92f4de22625e",
      "tree": "9f73c5419e905066653660ec33f8d5efeaa3a148",
      "parents": [
        "17aca1c987cff89dc4279371857035da902c8854"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 03 01:26:53 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:43 2011 -0400"
      },
      "message": "Btrfs: make sure we don\u0027t overflow the free space cache crc page\n\nThe free space cache uses only one page for crcs right now,\nwhich means we can\u0027t have a cache file bigger than the\ncrcs we can fit in the first page.  This adds a check to\nenforce that restriction.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17aca1c987cff89dc4279371857035da902c8854",
      "tree": "f63df32137d07ec9876f46542884b68a83e0a48c",
      "parents": [
        "1bc8779349d6278e2713a1ff94418c2a6746a791"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 03 01:13:45 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:43 2011 -0400"
      },
      "message": "Btrfs: fix uninit variable in the delayed inode code\n\nThe nitems counter needs to start at zero\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1bc8779349d6278e2713a1ff94418c2a6746a791",
      "tree": "2caf24db7d669825538c15efe17473159da57593",
      "parents": [
        "ff5714cca971848963b87d6b477c16ca8abbaa54"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat May 28 21:57:55 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:17 2011 -0400"
      },
      "message": "btrfs: scrub: don\u0027t reuse bios and pages\n\nThe current scrub implementation reuses bios and pages as often as possible,\nallocating them only on start and releasing them when finished. This leads\nto more problems with the block layer than it\u0027s worth. The elevator gets\nconfused when there are more pages added to the bio than bi_size suggests.\nThis patch completely rips out the reuse of bios and pages and allocates\nthem freshly for each submit.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Maosn \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff5714cca971848963b87d6b477c16ca8abbaa54",
      "tree": "17ee34b9b5e00804df4059503f82f6f1d94383a9",
      "parents": [
        "174ba50915b08dcfd07c8b5fb795b46a165fa09a",
        "d90c732122a1f6d0efe388a8a204f67f144b2eb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of\ngit://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into for-linus\n\nConflicts:\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "174ba50915b08dcfd07c8b5fb795b46a165fa09a",
      "tree": "94bc84b6e8bea05775373f90bd8eb7aa254a943f",
      "parents": [
        "a47d6b70e280401d553e7cac6f5750870de1ad21"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 27 10:03:58 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 27 10:03:58 2011 -0400"
      },
      "message": "Btrfs: use the device_list_mutex during write_dev_supers\n\nwrite_dev_supers was changed to use RCU to protect the list of\ndevices, but it was then sleeping while it actually wrote the supers.\nThis fixes it to just use the mutex, since we really don\u0027t any\nconcurrency in write_dev_supers anyway.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a47d6b70e280401d553e7cac6f5750870de1ad21",
      "tree": "2874064c08ecc65cdfda9b2a9fd9895eb73a011e",
      "parents": [
        "00d01bc17cc2807292303961519d9c005794eb1d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu May 26 06:38:30 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:53:04 2011 -0400"
      },
      "message": "Btrfs: setup free ino caching in a more asynchronous way\n\nFor a filesystem that has lots of files in it, the first time we mount\nit with free ino caching support, it can take quite a long time to\nsetup the caching before we can create new files.\n\nHere we fill the cache with [highest_ino, BTRFS_LAST_FREE_OBJECTID]\nbefore we start the caching thread to search through the extent tree.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "00d01bc17cc2807292303961519d9c005794eb1d",
      "tree": "47816d90951550c55d9ec1fff51c365056986aa1",
      "parents": [
        "c309df07868baa8b05d2a70637096465746fdbb5"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed May 25 12:22:50 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:52 2011 -0400"
      },
      "message": "btrfs scrub: don\u0027t coalesce pages that are logically discontiguous\n\nscrub_page collects several pages into one bio as long as they are physically\ncontiguous. As we only save one logical address for the whole bio, don\u0027t\ncollect pages that are physically contiguous but logically discontiguous.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c309df07868baa8b05d2a70637096465746fdbb5",
      "tree": "7c1749127d16aa07a1f3a296097f5f314b2a6a42",
      "parents": [
        "4cb5300bc839b8a943eb19c9f27f25470e22d0ca"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:43:59 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:44 2011 -0400"
      },
      "message": "Btrfs: return -ENOMEM in clear_extent_bit\n\nThe btrfs releasepage function depends on ENOMEM coming\nback when it is called atomic.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4cb5300bc839b8a943eb19c9f27f25470e22d0ca",
      "tree": "ac0f2fb481c7aa6af08a624d276fa6d580c94c9b",
      "parents": [
        "d6c0cb379c5198487e4ac124728cbb2346d63b1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 24 15:35:30 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:15 2011 -0400"
      },
      "message": "Btrfs: add mount -o auto_defrag\n\nThis will detect small random writes into files and\nqueue the up for an auto defrag process.  It isn\u0027t well suited to\ndatabase workloads yet, but works for smaller files such as rpm, sqlite\nor bdb databases.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d6c0cb379c5198487e4ac124728cbb2346d63b1f",
      "tree": "167a97ac58c7a2fbf7c4e94b6abbfe1e03af014a",
      "parents": [
        "8e531cdfeb75269c6c5aae33651cca39707848da",
        "1f78160ce1b1b8e657e2248118c4d91f881763f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups_and_fixes\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/tree-log.c\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f78160ce1b1b8e657e2248118c4d91f881763f0",
      "tree": "98c5496a9ab3e77e4cd682c0487f4c0127198396",
      "parents": [
        "46224705656633466ca7dc71d81b3c0abc76cae4"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:09:16 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:43 2011 -0400"
      },
      "message": "Btrfs: using rcu lock in the reader side of devices list\n\nfs_devices-\u003edevices is only updated on remove and add device paths, so we can\nuse rcu to protect it in the reader side\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "46224705656633466ca7dc71d81b3c0abc76cae4",
      "tree": "2cdc8c8cc82c2262edb8d89a27e5539359e61c40",
      "parents": [
        "0c1daee085cff1395d1eba4ad6faff7810a594d8"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:08:47 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:43 2011 -0400"
      },
      "message": "Btrfs: drop unnecessary device lock\n\nDrop device_list_mutex for the reader side  on clone_fs_devices and\nbtrfs_rm_device pathes since the fs_info-\u003evolume_mutex can ensure the device\nlist is not updated\n\nbtrfs_close_extra_devices is the initialized path, we can not add or remove\ndevice at this time, so we can simply drop the mutex safely, like other\ninitialized function does(add_missing_dev, __find_device, __btrfs_open_devices\n...).\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0c1daee085cff1395d1eba4ad6faff7810a594d8",
      "tree": "a7c86b2b7aaed74e8a4daebc3f1d8da6875c1e1b",
      "parents": [
        "c9513edb0079f97749c2ac00c887a22c4ba44792"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:08:16 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:43 2011 -0400"
      },
      "message": "Btrfs: fix the race between remove dev and alloc chunk\n\nOn remove device path, it updates device-\u003edev_alloc_list but does not hold\nchunk lock\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c9513edb0079f97749c2ac00c887a22c4ba44792",
      "tree": "6b34bd7cdf5dcd882e61bf4912ae10b4de3b87dd",
      "parents": [
        "4f6c9328c6c0d8558907f16579a9d47815abef80"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:07:30 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:42 2011 -0400"
      },
      "message": "Btrfs: fix the race between reading and updating devices\n\nOn btrfs_congested_fn and __unplug_io_fn paths, we should hold\ndevice_list_mutex to avoid remove/add device path to\nupdate fs_devices-\u003edevices\n\nOn __btrfs_close_devices and btrfs_prepare_sprout paths, the devices in\nfs_devices-\u003edevices or fs_devices-\u003edevices is updated, so we should hold\nthe mutex to avoid the reader side to reach them\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4f6c9328c6c0d8558907f16579a9d47815abef80",
      "tree": "d65bf3702ec48b30894dbebfc36ed3869f6abb28",
      "parents": [
        "c7f895a2b2d1a002810d52e7b6653c9dc2fd0b0b"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:06:40 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:42 2011 -0400"
      },
      "message": "Btrfs: fix bh leak on __btrfs_open_devices path\n\n\u0027bh\u0027 is forgot to release if no error is detected\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c7f895a2b2d1a002810d52e7b6653c9dc2fd0b0b",
      "tree": "1b2a05c2efe1f169983bff7a497d812aa86c3000",
      "parents": [
        "8233767a227ac5843f1023b88c7272a7b5058f5f"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 06:45:49 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:41 2011 -0400"
      },
      "message": "Btrfs: fix unsafe usage of merge_state\n\nmerge_state can free the current state if it can be merged with the next node,\nbut in set_extent_bit(), after merge_state, we still use the current extent to\nget the next node and cache it into cached_state\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8233767a227ac5843f1023b88c7272a7b5058f5f",
      "tree": "e37bb379b90d9754035021ad042de1970a5106fc",
      "parents": [
        "b083916638eee513be501f53b42a4be0b9851db0"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 06:44:57 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:41 2011 -0400"
      },
      "message": "Btrfs: allocate extent state and check the result properly\n\nIt doesn\u0027t allocate extent_state and check the result properly:\n- in set_extent_bit, it doesn\u0027t allocate extent_state if the path is not\n  allowed wait\n\n- in clear_extent_bit, it doesn\u0027t check the result after atomic-ly allocate,\n  we trigger BUG_ON() if it\u0027s fail\n\n- if allocate fail, we trigger BUG_ON instead of returning -ENOMEM since\n  the return value of clear_extent_bit() is ignored by many callers\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b083916638eee513be501f53b42a4be0b9851db0",
      "tree": "b62c38c87d368ca1e5cc5be067094ba82e6bf8a0",
      "parents": [
        "37daa4f968e9470ae9f30e246a5781717c598271"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sat May 14 07:10:51 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:41 2011 -0400"
      },
      "message": "fs/btrfs: Add missing btrfs_free_path\n\nBtrfs_alloc_path should be matched with btrfs_free_path in error-handling code.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression struct btrfs_path * x;\nexpression ra,rb;\nposition p1,p2;\n@@\n\nx \u003d btrfs_alloc_path@p1(...)\n...  when !\u003d btrfs_free_path(x,...)\n     when !\u003d if (...) { ... btrfs_free_path(x,...) ...}\n     when !\u003d x \u003d ra\nif(...) { ... when !\u003d x \u003d rb\n     when forall\n     when !\u003d btrfs_free_path(x,...)\n \\(return \u003c+...x...+\u003e; \\| return@p2...; \\) }\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\ncocci.print_main(\"alloc\",p1)\ncocci.print_secs(\"return\",p2)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "37daa4f968e9470ae9f30e246a5781717c598271",
      "tree": "a9b7366069150ab3f8e5bc85c475c6194c5fabdf",
      "parents": [
        "c00e9493f1412621c8665a707d63e32b0768f572"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Apr 28 09:18:21 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:40 2011 -0400"
      },
      "message": "Btrfs: check return value of btrfs_inc_extent_ref()\n\nIf return value of btrfs_inc_extent_ref() is not 0, BUG() is called.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c00e9493f1412621c8665a707d63e32b0768f572",
      "tree": "60e7b26ea4e6ff0b3270edc2abecdbacc4b211dc",
      "parents": [
        "1cd307990d6e2b4965620e339a92e0d7ae853e13"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Apr 28 09:10:23 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:40 2011 -0400"
      },
      "message": "Btrfs: return error to caller if read_one_inode() fails\n\nWhen read_one_inode() fails, error code is returned to caller instead\nof BUG_ON().\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1cd307990d6e2b4965620e339a92e0d7ae853e13",
      "tree": "cd3cc9c06e2c7bbbeda4d38bbcc00d44bfd98a02",
      "parents": [
        "65a246c5ffe3b487a001de025816326939e63362"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu May 19 05:19:08 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:39 2011 -0400"
      },
      "message": "Btrfs: BUG_ON is deleted from the caller of btrfs_truncate_item \u0026 btrfs_extend_item\n\nCurrently, btrfs_truncate_item and btrfs_extend_item returns only 0.\nSo, the check by BUG_ON in the caller is unnecessary.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "65a246c5ffe3b487a001de025816326939e63362",
      "tree": "52da5b08a584ac3178f8bd35a5e7333f5a3908e1",
      "parents": [
        "b0b802d7e34b0b4a78f911c3a8aad88aa91fd7ab"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu May 19 04:37:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:39 2011 -0400"
      },
      "message": "Btrfs: return error code to caller when btrfs_del_item fails\n\nThe error code is returned instead of calling BUG_ON when\nbtrfs_del_item returns the error.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b0b802d7e34b0b4a78f911c3a8aad88aa91fd7ab",
      "tree": "a921d73b19363e2f29c20265716f8f281fc3f87c",
      "parents": [
        "27160b6b5a1744b6eaa8416e2b901ec937b1eee0"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu May 19 07:03:42 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:39 2011 -0400"
      },
      "message": "Btrfs: return error code to caller when btrfs_previous_item fails\n\nThe error code is returned instead of calling BUG_ON when\nbtrfs_previous_item returns the error.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "27160b6b5a1744b6eaa8416e2b901ec937b1eee0",
      "tree": "8747e5eef1cbab1e2402717627bfd9ab855cc5ae",
      "parents": [
        "9694b3fcbb0f5dd498fdf53c82f22fcc37989152"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Fri May 20 20:20:32 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:32 2011 -0400"
      },
      "message": "btrfs: fix typo \u0027testeing\u0027 -\u003e \u0027testing\u0027\n\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9694b3fcbb0f5dd498fdf53c82f22fcc37989152",
      "tree": "8bb8c1f095c1ac5fcca7a32c3695cd8a2f530bda",
      "parents": [
        "c4f675cd40d955d539180506c09515c90169b15b"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Fri May 20 20:20:31 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:25 2011 -0400"
      },
      "message": "btrfs: typo: \u0027btrfS\u0027 -\u003e \u0027btrfs\u0027\n\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c4f675cd40d955d539180506c09515c90169b15b",
      "tree": "b0960803583fdc03e87255facf3155affa781a9a",
      "parents": [
        "0f3b708c11914b684d17fed975eed19db902a8de"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Fri May 20 20:20:30 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:14 2011 -0400"
      },
      "message": "btrfs: don\u0027t spin in shrink_delalloc if there is nothing to free\n\nObserved as a large delay when --mixed filesystem is filled up.\nTest example:\n1. create tiny --mixed FS:\n   $ dd if\u003d/dev/zero of\u003d2G.img seek\u003d$((2048 * 1024 * 1024 - 1)) count\u003d1 bs\u003d1\n   $ mkfs.btrfs --mixed 2G.img\n   $ mount -oloop 2G.img /mnt/ut/\n2. Try to fill it up:\n   $ dd if\u003d/dev/urandom of\u003d10M.file bs\u003d10240 count\u003d1024\n   $ seq 1 256 | while read file_no; do echo $file_no; time cp 10M.file ${file_no}.copy; done\n\nUp to \u0027200.copy\u0027 it goes fast, but when disk fills-up each -ENOSPC\nmessage takes 3 seconds to pop-up _every_ ENOSPC (and in usermode linux\nit\u0027s even more: 30-60 seconds!). (Maybe, time depends on kernel\u0027s timer resolution).\n\nNo IO, no CPU load, just rescheduling. Some debugging revealed busy spinning\nin shrink_delalloc.\n\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f3b708c11914b684d17fed975eed19db902a8de",
      "tree": "ba16473bb26f864a3ffd0ac5eb1101ff230ecda1",
      "parents": [
        "e2156867159ae7b3bc38ef1c26ea0ee30a895ef8"
      ],
      "author": {
        "name": "Jamey Sharp",
        "email": "jamey@minilop.net",
        "time": "Thu May 05 19:03:46 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:05:39 2011 -0400"
      },
      "message": "btrfs: Delete unused version.sh script.\n\nIn 2008, commit b4f6c45dfbf84f47c21f73f6370ad1292b0627fd dropped the use\nof fs/btrfs/version.sh, but left the script behind. Kill it.\n\nCommit by Jamey Sharp and Josh Triplett.\n\nSigned-off-by: Jamey Sharp \u003cjamey@minilop.net\u003e\nSigned-off-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e2156867159ae7b3bc38ef1c26ea0ee30a895ef8",
      "tree": "d949884cdaf5ebeb8d9ba14ec0284c9ece437164",
      "parents": [
        "0956c798ef8dbe0fc215870eb68bd2d8e789f86a"
      ],
      "author": {
        "name": "Hugo Mills",
        "email": "hugo@carfax.org.uk",
        "time": "Sat May 14 17:43:41 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:05:39 2011 -0400"
      },
      "message": "btrfs: Ensure the tree search ioctl returns the right number of records\n\nBtrfs\u0027s tree search ioctl has a field to indicate that no more than a\ngiven number of records should be returned. The ioctl doesn\u0027t honour\nthis, as the tested value is not incremented until the end of the\ncopy_to_sk function. This patch removes an unnecessary local variable,\nand updates the num_found counter as each key is found in the tree.\n\nSigned-off-by: Hugo Mills \u003chugo@carfax.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0956c798ef8dbe0fc215870eb68bd2d8e789f86a",
      "tree": "8a6ec5a28fa685d30f44e344814a2c5a4262985c",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed May 18 00:11:22 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:05:39 2011 -0400"
      },
      "message": "BTRFS: Remove unused node_lock\n\n240f62c8756 replaced the node_lock with rcu_read_lock, but forgot\nto remove the actual lock in the data structure. Remove it here.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d90c732122a1f6d0efe388a8a204f67f144b2eb3",
      "tree": "4961605906cf3c8f50ae24fd1d4109eeb5e19e1a",
      "parents": [
        "207dde8289d9b005b665cb9d8d2bb9464256101d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue May 17 09:50:54 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:17 2011 -0400"
      },
      "message": "Btrfs: leave spinning on lookup and map the leaf\n\nOn lookup we only want to read the inode item, so leave the path spinning.  Also\nwe\u0027re just wholesale reading the leaf off, so map the leaf so we don\u0027t do a\nbunch of kmap/kunmaps.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "207dde8289d9b005b665cb9d8d2bb9464256101d",
      "tree": "bbe7e61bdf6221468360c31ba293d50197745acb",
      "parents": [
        "cca1c81f43e26ab60c0d1090fb90992358d69bdf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 13 14:49:23 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:16 2011 -0400"
      },
      "message": "Btrfs: check for duplicate entries in the free space cache\n\nIf there are duplicate entries in the free space cache, discard the entire cache\nand load it the old fashioned way.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "cca1c81f43e26ab60c0d1090fb90992358d69bdf",
      "tree": "8c445c012b9b0184eed9b7f52b35c0d0b85b0e0b",
      "parents": [
        "026fd317828500524cdc7e5ff9e8e7923abb2868"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 13 11:07:12 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:15 2011 -0400"
      },
      "message": "Btrfs: don\u0027t try to allocate from a block group that doesn\u0027t have enough space\n\nIf we have a very large filesystem, we can spend a lot of time in\nfind_free_extent just trying to allocate from empty block groups.  So instead\ncheck to see if the block group even has enough space for the allocation, and if\nnot go on to the next block group.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "026fd317828500524cdc7e5ff9e8e7923abb2868",
      "tree": "d303bffbd895c307f49286cd90186cf58223dde2",
      "parents": [
        "589d8ade83f07c0f11c8191c0ca309f34d7a2c14"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 13 10:32:11 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:14 2011 -0400"
      },
      "message": "Btrfs: don\u0027t always do readahead\n\nOur readahead is sort of sloppy, and really isn\u0027t always needed.  For example if\nls is doing a stating ls (which is the default) it\u0027s going to stat in non-disk\norder, so if say you have a directory with a stupid amount of files, readahead\nis going to do nothing but waste time in the case of doing the stat.  Taking the\nunconditional readahead out made my test go from 57 minutes to 36 minutes.  This\nmeans that everywhere we do loop through the tree we want to make sure we do set\npath-\u003ereada properly, so I went through and found all of the places where we\nloop through the path and set reada to 1.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "589d8ade83f07c0f11c8191c0ca309f34d7a2c14",
      "tree": "e1e628bd721ae6fd34e1454f8124ecb9a2b3464f",
      "parents": [
        "d82a6f1d7e8b61ed5996334d0db66651bb43641d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 11 17:30:53 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:13 2011 -0400"
      },
      "message": "Btrfs: try not to sleep as much when doing slow caching\n\nWhen the fs is super full and we unmount the fs, we could get stuck in this\nthing where unmount is waiting for the caching kthread to make progress and the\ncaching kthread keeps scheduling because we\u0027re in the middle of a commit.  So\ninstead just let the caching kthread keep going and only yeild if\nneed_resched().  This makes my horrible umount case go from taking up to 10\nminutes to taking less than 20 seconds.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d82a6f1d7e8b61ed5996334d0db66651bb43641d",
      "tree": "5738ec75f7679bdc1b97aecbc5cad3464cc65541",
      "parents": [
        "7e2355ba1a11649f0b212a29fdb9f47476f1248e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 11 15:26:06 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:12 2011 -0400"
      },
      "message": "Btrfs: kill BTRFS_I(inode)-\u003eblock_group\n\nOriginally this was going to be used as a way to give hints to the allocator,\nbut frankly we can get much better hints elsewhere and it\u0027s not even used at all\nfor anything usefull.  In addition to be completely useless, when we initialize\nan inode we try and find a freeish block group to set as the inodes block group,\nand with a completely full 40gb fs this takes _forever_, so I imagine with say\n1tb fs this is just unbearable.  So just axe the thing altoghether, we don\u0027t\nneed it and it saves us 8 bytes in the inode and saves us 500 microseconds per\ninode lookup in my testcase.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7e2355ba1a11649f0b212a29fdb9f47476f1248e",
      "tree": "94960a4d30595f9806dc66dcc36ae10756936f7c",
      "parents": [
        "cb25c2ea6a79702ab7895b873c6c43e0d3bc3c72"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 11 12:25:37 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:11 2011 -0400"
      },
      "message": "Btrfs: don\u0027t look at the extent buffer level 3 times in a row\n\nWe have a bit of debugging in btrfs_search_slot to make sure the level of the\ncow block is the same as the original block we were cow\u0027ing.  I don\u0027t think I\u0027ve\never seen this tripped, so kill it.  This saves us 2 kmap\u0027s per level in our\nsearch.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "cb25c2ea6a79702ab7895b873c6c43e0d3bc3c72",
      "tree": "08d112b38a1e017b563035b78861288dbf0d2fd6",
      "parents": [
        "af60bed24eb0e3b6d93eaa6bb395a5721e6c09a8"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 11 12:17:34 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:10 2011 -0400"
      },
      "message": "Btrfs: map the node block when looking for readahead targets\n\nIf we have particularly full nodes, we could call btrfs_node_blockptr up to 32\ntimes, which is 32 pairs of kmap/kunmap, which _sucks_.  So go ahead and map the\nextent buffer while we look for readahead targets.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "af60bed24eb0e3b6d93eaa6bb395a5721e6c09a8",
      "tree": "499aaa2a1ca372816885752fcd1769e3e9a0487a",
      "parents": [
        "fcb80c2affd63237cff5b34cba5756be7c976a5a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 04 11:11:17 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:09 2011 -0400"
      },
      "message": "Btrfs: set range_start to the right start in count_range_bits\n\nIn count_range_bits we are adjusting total_bytes based on the range we are\nsearching for, but we don\u0027t adjust the range start according to the range we are\nsearching for, which makes for weird results.  For example, if the range\n\n[0-8192]\n\nis set DELALLOC, but I search for 4096-8192, I will get back 4096 for the number\nof bytes found, but the range_start will be 0, which makes it look like the\nrange is [0-4096].  So instead set range_start \u003d max(cur_start, state-\u003estart).\nThis makes everything come out right.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "fcb80c2affd63237cff5b34cba5756be7c976a5a",
      "tree": "49c37dce49ebd9a1ada939d1fd2cfa57bba6f500",
      "parents": [
        "a4abeea41adfa3c143c289045f4625dfaeba2212"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue May 03 10:40:22 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:08 2011 -0400"
      },
      "message": "Btrfs: fix how we do space reservation for truncate\n\nThe ceph guys keep running into problems where we have space reserved in our\norphan block rsv when freeing it up.  This is because they tend to do snapshots\nalot, so their truncates tend to use a bunch of space, so when we go to do\nthings like update the inode we have to steal reservation space in order to make\nthe reservation happen.  This happens because truncate can use as much space as\nit freaking feels like, but we still have to hold space for removing the orphan\nitem and updating the inode, which will definitely always happen.  So in order\nto fix this we need to split all of the reservation stuf up.  So with this patch\nwe have\n\n1) The orphan block reserve which only holds the space for deleting our orphan\nitem when everything is over.\n\n2) The truncate block reserve which gets allocated and used specifically for the\nspace that the truncate will use on a per truncate basis.\n\n3) The transaction will always have 1 item\u0027s worth of data reserved so we can\nupdate the inode normally.\n\nHopefully this will make the ceph problem go away.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a4abeea41adfa3c143c289045f4625dfaeba2212",
      "tree": "792e2a398d8ba77447ba3f9f2c4266a1ce2f611c",
      "parents": [
        "2a1eb4614d984d5cd4c928784e9afcf5c07f93be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 11 17:25:13 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:57 2011 -0400"
      },
      "message": "Btrfs: kill trans_mutex\n\nWe use trans_mutex for lots of things, here\u0027s a basic list\n\n1) To serialize trans_handles joining the currently running transaction\n2) To make sure that no new trans handles are started while we are committing\n3) To protect the dead_roots list and the transaction lists\n\nReally the serializing trans_handles joining is not too hard, and can really get\nbogged down in acquiring a reference to the transaction.  So replace the\ntrans_mutex with a trans_lock spinlock and use it to do the following\n\n1) Protect fs_info-\u003erunning_transaction.  All trans handles have to do is check\nthis, and then take a reference of the transaction and keep on going.\n2) Protect the fs_info-\u003etrans_list.  This doesn\u0027t get used too much, basically\nit just holds the current transactions, which will usually just be the currently\ncommitting transaction and the currently running transaction at most.\n3) Protect the dead roots list.  This is only ever processed by splicing the\nlist so this is relatively simple.\n4) Protect the fs_info-\u003ereloc_ctl stuff.  This is very lightweight and was using\nthe trans_mutex before, so this is a pretty straightforward change.\n5) Protect fs_info-\u003eno_trans_join.  Because we don\u0027t hold the trans_lock over\nthe entirety of the commit we need to have a way to block new people from\ncreating a new transaction while we\u0027re doing our work.  So we set no_trans_join\nand in join_transaction we test to see if that is set, and if it is we do a\nwait_on_commit.\n6) Make the transaction use count atomic so we don\u0027t need to take locks to\nmodify it when we\u0027re dropping references.\n7) Add a commit_lock to the transaction to make sure multiple people trying to\ncommit the same transaction don\u0027t race and commit at the same time.\n8) Make open_ioctl_trans an atomic so we don\u0027t have to take any locks for ioctl\ntrans.\n\nI have tested this with xfstests, but obviously it is a pretty hairy change so\nlots of testing is greatly appreciated.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2a1eb4614d984d5cd4c928784e9afcf5c07f93be",
      "tree": "892b123c194e490a2dc0bc5b45f641ac921e9d26",
      "parents": [
        "7a7eaa40a39bde4eefc91aadeb1ce3dc4e6a1252"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 13 15:15:59 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:57 2011 -0400"
      },
      "message": "Btrfs: if we\u0027ve already started a trans handle, use that one\n\nWe currently track trans handles in current-\u003ejournal_info, but we don\u0027t actually\nuse it.  This patch fixes it.  This will cover the case where we have multiple\npeople starting transactions down the call chain.  This keeps us from having to\nallocate a new handle and all of that, we just increase the use count of the\ncurrent handle, save the old block_rsv, and return.  I tested this with xfstests\nand it worked out fine.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7a7eaa40a39bde4eefc91aadeb1ce3dc4e6a1252",
      "tree": "eea3dea572a73168b70efa9fba2e9800457571d7",
      "parents": [
        "74b2107543da4ed9607ec484f63c42362dc9fca6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 13 12:54:33 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:56 2011 -0400"
      },
      "message": "Btrfs: take away the num_items argument from btrfs_join_transaction\n\nI keep forgetting that btrfs_join_transaction() just ignores the num_items\nargument, which leads me to sending pointless patches and looking stupid :).  So\njust kill the num_items argument from btrfs_join_transaction and\nbtrfs_start_ioctl_transaction, since neither of them use it.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "74b2107543da4ed9607ec484f63c42362dc9fca6",
      "tree": "c4bdfa4b995ae4281dbdf9d1f489009941a51e5b",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 13 12:02:53 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:56 2011 -0400"
      },
      "message": "Btrfs: make sure to use the delalloc reserve when filling delalloc\n\nIn the prealloc filling code and compressed code we don\u0027t set trans-\u003eblock_rsv\nto the delalloc block reserve properly, which is going to make us use metadata\nfrom the wrong pool, this patch fixes that.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8e531cdfeb75269c6c5aae33651cca39707848da",
      "tree": "34b6ef5c59c2983eca7744ef419d33d3302124ef",
      "parents": [
        "712673339a0d085358fd1cd3a6477cc7979bb69f"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Fri May 06 10:36:09 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 10:13:16 2011 -0400"
      },
      "message": "Btrfs: do not flush csum items of unchanged file data during treelog\n\nThe current code relogs the entire inode every time during fsync log,\nand it is much better suited to small files rather than large ones.\n\nDuring my performance test, the fsync performace of large files sucks,\nand we can ascribe this to the tremendous amount of csum infos of the\nlarge ones, cause we have to flush all of these csum infos into log trees\neven when there are only _one_ change in the whole file data.  Apparently,\nto optimize fsync, we need to create a filter to skip the unnecessary csum\nones, that is, the corresponding file data remains unchanged before this fsync.\n\nHere I have some test results to show, I use sysbench to do \"random write + fsync\".\n\n\u003d\u003d\u003d\nsysbench --test\u003dfileio --num-threads\u003d1 --file-num\u003d2 --file-block-size\u003d4K --file-total-size\u003d8G --file-test-mode\u003drndwr --file-io-mode\u003dsync --file-extra-flags\u003d  [prepare, run]\n\u003d\u003d\u003d\n\nSysbench args:\n  - Number of threads: 1\n  - Extra file open flags: 0\n  - 2 files, 4Gb each\n  - Block size 4Kb\n  - Number of random requests for random IO: 10000\n  - Read/Write ratio for combined random IO test: 1.50\n  - Periodic FSYNC enabled, calling fsync() each 100 requests.\n  - Calling fsync() at the end of test, Enabled.\n  - Using synchronous I/O mode\n  - Doing random write test\n\nSysbench results:\n\u003d\u003d\u003d\n   Operations performed:  0 Read, 10000 Write, 200 Other \u003d 10200 Total\n   Read 0b  Written 39.062Mb  Total transferred 39.062Mb\n\u003d\u003d\u003d\na) without patch:  (*SPEED* : 451.01Kb/sec)\n   112.75 Requests/sec executed\n\nb) with patch:     (*SPEED* : 4.7533Mb/sec)\n   1216.84 Requests/sec executed\n\nPS: I\u0027ve made a _sub transid_ stuff patch, but it does not perform as effectively as this patch,\nand I\u0027m wanderring where the problem is and trying to improve it more.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "712673339a0d085358fd1cd3a6477cc7979bb69f",
      "tree": "b2e268685e3cbba19a4adb2a47d853e4e461fcfc",
      "parents": [
        "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
        "8628764e1a5e1998a42b9713e9edea7753653d01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/ctree.h\n\tfs/btrfs/volumes.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
      "tree": "ff64f4d4921df2f0fbe5b356dc9b2384c7957dc1",
      "parents": [
        "945d8962ceee6bb273365d0bdf42f763225b290f",
        "73c5de0051533cbdf2bb656586c3eb21a475aa7d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:36:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:36:34 2011 -0400"
      },
      "message": "Merge branch \u0027allocator\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "945d8962ceee6bb273365d0bdf42f763225b290f",
      "tree": "43f5617022c7c947c3c63664e49eb9575ab82f2f",
      "parents": [
        "0d0ca30f180906224be6279788f2b202cfd959d8",
        "4ea028859bbdad34b84c9951fbb832ae10c6a96c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups\u0027 of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/tree-log.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0d0ca30f180906224be6279788f2b202cfd959d8",
      "tree": "a0e35c968410f3f08f2a215ed5b4d6449d8bd11f",
      "parents": [
        "dcc6d073225b6b732a52477c91bd4edc9b4d5502"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:11:22 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:11:22 2011 -0400"
      },
      "message": "Btrfs: update the delayed inode code to use the btrfs_ino helper.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dcc6d073225b6b732a52477c91bd4edc9b4d5502",
      "tree": "71da6844bb03c940c87c01a2a1f8c2e11cf85238",
      "parents": [
        "0965537308ac3b267ea16e731bd73870a51c53b8",
        "16cdcec736cd214350cdb591bf1091f8beedefa0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:07:01 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:07:01 2011 -0400"
      },
      "message": "Merge branch \u0027delayed_inode\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/inode.c\n\tfs/btrfs/ioctl.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "16cdcec736cd214350cdb591bf1091f8beedefa0",
      "tree": "5598d4561660c4d7a1d4de8b3703d6dd3cc7f9e7",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Apr 22 18:12:22 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:30:56 2011 -0400"
      },
      "message": "btrfs: implement delayed inode items operation\n\nChangelog V5 -\u003e V6:\n- Fix oom when the memory load is high, by storing the delayed nodes into the\n  root\u0027s radix tree, and letting btrfs inodes go.\n\nChangelog V4 -\u003e V5:\n- Fix the race on adding the delayed node to the inode, which is spotted by\n  Chris Mason.\n- Merge Chris Mason\u0027s incremental patch into this patch.\n- Fix deadlock between readdir() and memory fault, which is reported by\n  Itaru Kitayama.\n\nChangelog V3 -\u003e V4:\n- Fix nested lock, which is reported by Itaru Kitayama, by updating space cache\n  inode in time.\n\nChangelog V2 -\u003e V3:\n- Fix the race between the delayed worker and the task which does delayed items\n  balance, which is reported by Tsutomu Itoh.\n- Modify the patch address David Sterba\u0027s comment.\n- Fix the bug of the cpu recursion spinlock, reported by Chris Mason\n\nChangelog V1 -\u003e V2:\n- break up the global rb-tree, use a list to manage the delayed nodes,\n  which is created for every directory and file, and used to manage the\n  delayed directory name index items and the delayed inode item.\n- introduce a worker to deal with the delayed nodes.\n\nCompare with Ext3/4, the performance of file creation and deletion on btrfs\nis very poor. the reason is that btrfs must do a lot of b+ tree insertions,\nsuch as inode item, directory name item, directory name index and so on.\n\nIf we can do some delayed b+ tree insertion or deletion, we can improve the\nperformance, so we made this patch which implemented delayed directory name\nindex insertion/deletion and delayed inode update.\n\nImplementation:\n- introduce a delayed root object into the filesystem, that use two lists to\n  manage the delayed nodes which are created for every file/directory.\n  One is used to manage all the delayed nodes that have delayed items. And the\n  other is used to manage the delayed nodes which is waiting to be dealt with\n  by the work thread.\n- Every delayed node has two rb-tree, one is used to manage the directory name\n  index which is going to be inserted into b+ tree, and the other is used to\n  manage the directory name index which is going to be deleted from b+ tree.\n- introduce a worker to deal with the delayed operation. This worker is used\n  to deal with the works of the delayed directory name index items insertion\n  and deletion and the delayed inode update.\n  When the delayed items is beyond the lower limit, we create works for some\n  delayed nodes and insert them into the work queue of the worker, and then\n  go back.\n  When the delayed items is beyond the upper bound, we create works for all\n  the delayed nodes that haven\u0027t been dealt with, and insert them into the work\n  queue of the worker, and then wait for that the untreated items is below some\n  threshold value.\n- When we want to insert a directory name index into b+ tree, we just add the\n  information into the delayed inserting rb-tree.\n  And then we check the number of the delayed items and do delayed items\n  balance. (The balance policy is above.)\n- When we want to delete a directory name index from the b+ tree, we search it\n  in the inserting rb-tree at first. If we look it up, just drop it. If not,\n  add the key of it into the delayed deleting rb-tree.\n  Similar to the delayed inserting rb-tree, we also check the number of the\n  delayed items and do delayed items balance.\n  (The same to inserting manipulation)\n- When we want to update the metadata of some inode, we cached the data of the\n  inode into the delayed node. the worker will flush it into the b+ tree after\n  dealing with the delayed insertion and deletion.\n- We will move the delayed node to the tail of the list after we access the\n  delayed node, By this way, we can cache more delayed items and merge more\n  inode updates.\n- If we want to commit transaction, we will deal with all the delayed node.\n- the delayed node will be freed when we free the btrfs inode.\n- Before we log the inode items, we commit all the directory name index items\n  and the delayed inode update.\n\nI did a quick test by the benchmark tool[1] and found we can improve the\nperformance of file creation by ~15%, and file deletion by ~20%.\n\nBefore applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 1.096108\n        Average time: 0.000022\nDelete files:\n        Total files: 50000\n        Total time: 1.510403\n        Average time: 0.000030\n\nAfter applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 0.932899\n        Average time: 0.000019\nDelete files:\n        Total files: 50000\n        Total time: 1.215732\n        Average time: 0.000024\n\n[1] http://marc.info/?l\u003dlinux-btrfs\u0026m\u003d128212635122920\u0026q\u003dp3\n\nMany thanks for Kitayama-san\u0027s help!\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdave@jikos.cz\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nTested-by: Itaru Kitayama \u003ckitayama@cl.bb4u.ne.jp\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0965537308ac3b267ea16e731bd73870a51c53b8",
      "tree": "7b52288b7272b2391f736dd82a313cbbaad68570",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf",
        "82d5902d9c681be37ffa9d70482907f9f0b7ec1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "message": "Merge branch \u0027ino-alloc\u0027 of git://repo.or.cz/linux-btrfs-devel into inode_numbers\n\nConflicts:\n\tfs/btrfs/free-space-cache.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf",
      "tree": "dd32d0c38697805787c7da077f01b8ad847b8b51",
      "parents": [
        "3f80fbff5f1ef8a842bbe5343bbc9ddad883f25c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 21:06:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 21:06:34 2011 -0700"
      },
      "message": "Linux 2.6.39\n"
    },
    {
      "commit": "3f80fbff5f1ef8a842bbe5343bbc9ddad883f25c",
      "tree": "259f5be0f203b5c7e97837a1957f461abcfef5d0",
      "parents": [
        "fce519588acfac249e8fdc1f5016c73d617de315",
        "24307aa1e707b31613be92deaba7990e16bc1aec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 16:50:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 16:50:28 2011 -0700"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:\n  configfs: Fix race between configfs_readdir() and configfs_d_iput()\n  configfs: Don\u0027t try to d_delete() negative dentries.\n  ocfs2/dlm: Target node death during resource migration leads to thread spin\n  ocfs2: Skip mount recovery for hard-ro mounts\n  ocfs2/cluster: Heartbeat mismatch message improved\n  ocfs2/cluster: Increase the live threshold for global heartbeat\n  ocfs2/dlm: Use negotiated o2dlm protocol version\n  ocfs2: skip existing hole when removing the last extent_rec in punching-hole codes.\n  ocfs2: Initialize data_ac (might be used uninitialized)\n"
    },
    {
      "commit": "fce519588acfac249e8fdc1f5016c73d617de315",
      "tree": "bea37c564c552cf69344c3bab7156308df7de662",
      "parents": [
        "7103dbed8e462f2a065381d23fde086cbd5b9891",
        "b1608d69cb804e414d0887140ba08a9398e4e638"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 13:25:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 13:25:57 2011 -0700"
      },
      "message": "Merge branch \u0027devicetree/merge\u0027 of git://git.secretlab.ca/git/linux-2.6\n\n* \u0027devicetree/merge\u0027 of git://git.secretlab.ca/git/linux-2.6:\n  drivercore: revert addition of of_match to struct device\n  of: fix race when matching drivers\n"
    },
    {
      "commit": "7103dbed8e462f2a065381d23fde086cbd5b9891",
      "tree": "5ac7ca3994c08a9dd3368daa0df205aee1a3c063",
      "parents": [
        "a2b9c1f6208126e6df6c02428c501f8853685812",
        "a5602a3273774c720aaf165ff670e5b85e5910a5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 13:21:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 13:21:43 2011 -0700"
      },
      "message": "Merge branch \u0027upstream\u0027 of git://git.linux-mips.org/pub/scm/upstream-linus\n\n* \u0027upstream\u0027 of git://git.linux-mips.org/pub/scm/upstream-linus:\n  MIPS: Kludge IP27 build for 2.6.39.\n  MIPS: AR7: Fix GPIO register size for Titan variant.\n  MIPS: Fix duplicate invocation of notify_die.\n  MIPS: RB532: Fix iomap resource size miscalculation.\n"
    },
    {
      "commit": "b1608d69cb804e414d0887140ba08a9398e4e638",
      "tree": "8999cd827e7fb4138ff83f7829d8fdcf44ee653d",
      "parents": [
        "01294d82622d6d9d64bde8e4530c7e2c6dbb6ee6"
      ],
      "author": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Wed May 18 11:19:24 2011 -0600"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Wed May 18 12:32:23 2011 -0600"
      },
      "message": "drivercore: revert addition of of_match to struct device\n\nCommit b826291c, \"drivercore/dt: add a match table pointer to struct\ndevice\" added an of_match pointer to struct device to cache the\nof_match_table entry discovered at driver match time.  This was unsafe\nbecause matching is not an atomic operation with probing a driver.  If\ntwo or more drivers are attempted to be matched to a driver at the\nsame time, then the cached matching entry pointer could get\noverwritten.\n\nThis patch reverts the of_match cache pointer and reworks all users to\ncall of_match_device() directly instead.\n\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "01294d82622d6d9d64bde8e4530c7e2c6dbb6ee6",
      "tree": "98707dfac7c9533dbfef30c4ff05c0dfdabc17a6",
      "parents": [
        "2e9521fd656f05a716b5294a7dbebd37ced05e43"
      ],
      "author": {
        "name": "Milton Miller",
        "email": "miltonm@bga.com",
        "time": "Wed May 18 10:27:39 2011 -0500"
      },
      "committer": {
        "name": "Grant Likely",
        "email": "grant.likely@secretlab.ca",
        "time": "Wed May 18 10:19:36 2011 -0600"
      },
      "message": "of: fix race when matching drivers\n\nIf two drivers are probing devices at the same time, both will write\ntheir match table result to the dev-\u003eof_match cache at the same time.\n\nOnly write the result if the device matches.\n\nIn a thread titled \"SBus devices sometimes detected, sometimes not\",\nMeelis reported his SBus hme was not detected about 50% of the time.\nFrom the debug suggested by Grant it was obvious another driver matched\nsome devices between the call to match the hme and the hme discovery\nfailling.\n\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nSigned-off-by: Milton Miller \u003cmiltonm@bga.com\u003e\n[grant.likely: modified to only call of_match_device() once]\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\n"
    },
    {
      "commit": "a2b9c1f6208126e6df6c02428c501f8853685812",
      "tree": "e36762d385bb490914a72485c4da4431e4b937d3",
      "parents": [
        "2e9521fd656f05a716b5294a7dbebd37ced05e43",
        "3ec717b7ca4ee1d75d77e4f6286430d8f01d1dbd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 06:49:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 06:49:02 2011 -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: don\u0027t delay blk_run_queue_async\n  scsi: remove performance regression due to async queue run\n  blk-throttle: Use task_subsys_state() to determine a task\u0027s blkio_cgroup\n  block: rescan partitions on invalidated devices on -ENOMEDIA too\n  cdrom: always check_disk_change() on open\n  block: unexport DISK_EVENT_MEDIA_CHANGE for legacy/fringe drivers\n"
    },
    {
      "commit": "a5602a3273774c720aaf165ff670e5b85e5910a5",
      "tree": "32c8379704fde515bc3c7967c00f3a0f4f534264",
      "parents": [
        "3e9957b4866f3767f19bf0e543b322ad7906c564"
      ],
      "author": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Wed May 18 13:14:36 2011 +0100"
      },
      "committer": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Wed May 18 14:18:27 2011 +0100"
      },
      "message": "MIPS: Kludge IP27 build for 2.6.39.\n\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\n"
    },
    {
      "commit": "3e9957b4866f3767f19bf0e543b322ad7906c564",
      "tree": "d0d7cde936ef0e211b1a452b8455cdee6f42f4b2",
      "parents": [
        "10423c91ffc8e59d4f99d401f7beb3115cdc117a"
      ],
      "author": {
        "name": "Florian Fainelli",
        "email": "florian@openwrt.org",
        "time": "Fri May 13 17:41:21 2011 +0200"
      },
      "committer": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Wed May 18 14:18:27 2011 +0100"
      },
      "message": "MIPS: AR7: Fix GPIO register size for Titan variant.\n\nThe \u0027size\u0027 variable contains the correct register size for both AR7\nand Titan, but we never used it to ioremap the correct register size.\nThis problem only shows up on Titan.\n\n[ralf@linux-mips.org: Fixed the fix.  The original patch as in patchwork\nrecognizes the problem correctly then fails to fix it ...]\n\nReported-by: Alexander Clouter \u003calex@digriz.org.uk\u003e\nSigned-off-by: Florian Fainelli \u003cflorian@openwrt.org\u003e\nPatchwork: https://patchwork.linux-mips.org/patch/2380/\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\n"
    },
    {
      "commit": "10423c91ffc8e59d4f99d401f7beb3115cdc117a",
      "tree": "26a8908353bcdfd9f6a6289800751fe6d21f2f76",
      "parents": [
        "3436830af53c38b7674097c00b02b7a4064476f2"
      ],
      "author": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Fri May 13 10:33:28 2011 +0100"
      },
      "committer": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Wed May 18 14:18:26 2011 +0100"
      },
      "message": "MIPS: Fix duplicate invocation of notify_die.\n\nInitial patch by Yury Polyanskiy \u003cypolyans@princeton.edu\u003e.\n\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nPatchwork: https://patchwork.linux-mips.org/patch/2373/\n"
    },
    {
      "commit": "3436830af53c38b7674097c00b02b7a4064476f2",
      "tree": "40ba93076ddb56dcd24fe7eac2caa80758d00327",
      "parents": [
        "c1d10d18c542278b7fbc413c289d3cb6219da6b3"
      ],
      "author": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Thu May 12 13:55:48 2011 +0100"
      },
      "committer": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Wed May 18 14:18:26 2011 +0100"
      },
      "message": "MIPS: RB532: Fix iomap resource size miscalculation.\n\nThis is the MIPS portion of Joe Perches \u003cjoe@perches.com\u003e\u0027s\nhttps://patchwork.linux-mips.org/patch/2172/ which seems to have been\nlost in time and space.\n\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\n"
    },
    {
      "commit": "24307aa1e707b31613be92deaba7990e16bc1aec",
      "tree": "6699c969a7f56c2b7949bf16af54320caee0687e",
      "parents": [
        "df7f99670a4c76f269ae57ce91876b309417a316"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Wed May 18 04:08:16 2011 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Wed May 18 04:08:16 2011 -0700"
      },
      "message": "configfs: Fix race between configfs_readdir() and configfs_d_iput()\n\nconfigfs_readdir() will use the existing inode numbers of inodes in the\ndcache, but it makes them up for attribute files that aren\u0027t currently\ninstantiated.  There is a race where a closing attribute file can be\ntearing down at the same time as configfs_readdir() is trying to get its\ninode number.\n\nWe want to get the inode number of open attribute files, because they\nshould match while instantiated.  We can\u0027t lock down the transition\nwhere dentry-\u003ed_inode is set to NULL, so we just check for NULL there.\nWe can, however, ensure that an inode we find isn\u0027t iput() in\nconfigfs_d_iput() until after we\u0027ve accessed it.\n\nSigned-off-by: Joel Becker \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "df7f99670a4c76f269ae57ce91876b309417a316",
      "tree": "5af5b63ab22089f32f1f464035df061bc2955e8e",
      "parents": [
        "df016c665b10ae80d8db67ec8103b50c5c234e5c"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Tue Feb 22 01:09:49 2011 -0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Wed May 18 03:30:58 2011 -0700"
      },
      "message": "configfs: Don\u0027t try to d_delete() negative dentries.\n\nWhen configfs is faking mkdir() on its subsystem or default group\nobjects, it starts by adding a negative dentry.  It then tries to\ninstantiate the group.  If that should fail, it must clean up after\nitself.\n\nI was using d_delete() here, but configfs_attach_group() promises to\nreturn an empty dentry on error.  d_delete() explodes with the entry\ndentry.  Let\u0027s try d_drop() instead.  The unhashing is what we want for\nour dentry.\n\nSigned-off-by: Joel Becker \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "3ec717b7ca4ee1d75d77e4f6286430d8f01d1dbd",
      "tree": "fcf1db152baea6270dd6c4dbdf6ff8dd15ad440f",
      "parents": [
        "9937a5e2f32892db0dbeefc2b3bc74b3ae3ea9c7"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Wed May 18 11:22:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed May 18 12:24:03 2011 +0200"
      },
      "message": "block: don\u0027t delay blk_run_queue_async\n\nLet\u0027s check a scenario:\n1. blk_delay_queue(q, SCSI_QUEUE_DELAY);\n2. blk_run_queue_async();\nthe second one will became a noop, because q-\u003edelay_work already has\nWORK_STRUCT_PENDING_BIT set, so the delayed work will still run after\nSCSI_QUEUE_DELAY. But blk_run_queue_async actually hopes the delayed\nwork runs immediately.\n\nFix this by doing a cancel on potentially pending delayed work\nbefore queuing an immediate run of the workqueue.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2e9521fd656f05a716b5294a7dbebd37ced05e43",
      "tree": "aea92c8a1a21774a569a047ba3bb60e8c04c740d",
      "parents": [
        "39dcfa552c3fd4179f470e0b1f716db6241e95d1",
        "dca6b6d18fa4428c4539e45f7a43040e388ab99e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:16:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:16:38 2011 -0700"
      },
      "message": "Merge branch \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6\n\n* \u0027v4l_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6:\n  [media] V4L: soc-camera: regression fix: calculate .sizeimage in soc_camera.c\n  [media] v4l2-subdev: fix broken subdev control enumeration\n  [media] Fix cx88 remote control input\n  [media] v4l: Release module if subdev registration fails\n"
    },
    {
      "commit": "39dcfa552c3fd4179f470e0b1f716db6241e95d1",
      "tree": "16eb0514faae29bc3adead91571e28a32fc85489",
      "parents": [
        "7f12b72bd8532cbbfb147470f0d902260cea36ce",
        "14fb57dccb6e1defe9f89a66f548fcb24c374c1d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:14:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:14:34 2011 -0700"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, AMD: Fix ARAT feature setting again\n  Revert \"x86, AMD: Fix APIC timer erratum 400 affecting K8 Rev.A-E processors\"\n  x86, apic: Fix spurious error interrupts triggering on all non-boot APs\n  x86, mce, AMD: Fix leaving freed data in a list\n  x86: Fix UV BAU for non-consecutive nasids\n  x86, UV: Fix NMI handler for UV platforms\n"
    },
    {
      "commit": "7f12b72bd8532cbbfb147470f0d902260cea36ce",
      "tree": "c62e7f0597faebd0e04acd34b3e6038629d849af",
      "parents": [
        "8864f5ee12d03afe269edeeae440744f53ea4af1",
        "52004ea7ca4c52a219362f973bfd1eb86ff668ce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:13:46 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:13:46 2011 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf evlist: Fix per thread mmap setup\n  perf tools: Honour the cpu list parameter when also monitoring a thread list\n  kprobes, x86: Disable irqs during optimized callback\n"
    },
    {
      "commit": "8864f5ee12d03afe269edeeae440744f53ea4af1",
      "tree": "0e1cc41695c6a25f3a56e43951f9c07e00c7a579",
      "parents": [
        "f12a20fc9bfba4218ecbc4e40c8e08dc2a85dc99",
        "11379b5e33950048ad66825da7f462b0d0da9d73"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:13:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 03:13:11 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:\n  cifs: fix cifsConvertToUCS() for the mapchars case\n  cifs: add fallback in is_path_accessible for old servers\n"
    },
    {
      "commit": "f12a20fc9bfba4218ecbc4e40c8e08dc2a85dc99",
      "tree": "da399a0a02522d38b56d38616ac4b268e0a58f92",
      "parents": [
        "b2db21997f43907f54500edaf063253ca2a186f9"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 17 15:44:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 02:55:24 2011 -0700"
      },
      "message": "procfs: add stub for proc_mkdir_mode()\n\nProvide a stub for proc_mkdir_mode() when CONFIG_PROC_FS is not\nenabled, just like the stub for proc_mkdir().\n\nFixes this linux-next build error:\n\n  drivers/net/wireless/airo.c:4504: error: implicit declaration of function \u0027proc_mkdir_mode\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"John W. Linville\" \u003clinville@tuxdriver.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b2db21997f43907f54500edaf063253ca2a186f9",
      "tree": "c98cabccfd71dea17520553fd534335a3d1c0a82",
      "parents": [
        "d6c438b6cd733834a3cec55af8577a8fc3548016"
      ],
      "author": {
        "name": "Richard Weinberger",
        "email": "richard@nod.at",
        "time": "Tue May 17 15:44:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 02:55:23 2011 -0700"
      },
      "message": "um: fix abort\n\nos_dump_core() uses abort() to terminate UML in case of an fatal error.\n\nglibc\u0027s abort() calls raise(SIGABRT) which makes use of tgkill().\ntgkill() has no effect within UML\u0027s kernel threads because they are not\npthreads.  As fallback abort() executes an invalid instruction to\nterminate the process.  Therefore UML gets killed by SIGSEGV and leaves a\nugly log entry in the host\u0027s kernel ring buffer.\n\nTo get rid of this we use our own abort routine.\n\nSigned-off-by: Richard Weinberger \u003crichard@nod.at\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d6c438b6cd733834a3cec55af8577a8fc3548016",
      "tree": "95c7719415aecf9f2a09b1e885d23ba54eb9b5b8",
      "parents": [
        "d5f33d45e4c0e306e8d16b4573891a65d9ad544f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue May 17 15:44:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 02:55:23 2011 -0700"
      },
      "message": "memcg: fix zone congestion\n\nZONE_CONGESTED should be a state of global memory reclaim.  If not, a busy\nmemcg sets this and give unnecessary throttoling in wait_iff_congested()\nagainst memory recalim in other contexts.  This makes system performance\nbad.\n\nI\u0027ll think about \"memcg is congested!\" flag is required or not, later.\nBut this fix is required first.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5f33d45e4c0e306e8d16b4573891a65d9ad544f",
      "tree": "16fc1c38ced6780b185887cdc5753fe2fa3110b0",
      "parents": [
        "0bf2461fdd9008290cf429e50e4f362dafab4249"
      ],
      "author": {
        "name": "Axel Lin",
        "email": "axel.lin@gmail.com",
        "time": "Tue May 17 15:44:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 02:55:22 2011 -0700"
      },
      "message": "drivers/leds/leds-lm3530.c: add MODULE_DEVICE_TABLE\n\nAdding the necessary MODULE_DEVICE_TABLE() information allows the driver\nto be automatically loaded by udev.\n\nSigned-off-by: Axel Lin \u003caxel.lin@gmail.com\u003e\nCc: Shreshtha Kumar SAHU \u003cshreshthakumar.sahu@stericsson.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0bf2461fdd9008290cf429e50e4f362dafab4249",
      "tree": "03e3ef8e7c55c86e428cbe9cb72af3b95c77035b",
      "parents": [
        "a085963a2757b9ab0a7ec1cf4a14aa85935c1e2a"
      ],
      "author": {
        "name": "Alexandre Bounine",
        "email": "alexandre.bounine@idt.com",
        "time": "Tue May 17 15:44:08 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 18 02:55:22 2011 -0700"
      },
      "message": "rapidio: fix default routing initialization\n\nFix switch initialization to ensure that all switches have default routing\ndisabled.  This guarantees that no unexpected RapidIO packets arrive to\nthe default port set by reset and there is no default routing destination\nuntil it is properly configured by software.\n\nThis update also unifies handling of unmapped destinations by tsi57x, IDT\nGen1 and IDT Gen2 switches.\n\nSigned-off-by: Alexandre Bounine \u003calexandre.bounine@idt.com\u003e\nCc: Kumar Gala \u003cgalak@kernel.crashing.org\u003e\nCc: Matt Porter \u003cmporter@kernel.crashing.org\u003e\nCc: Li Yang \u003cleoli@freescale.com\u003e\nCc: Thomas Moll \u003cthomas.moll@sysgo.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.37+]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11379b5e33950048ad66825da7f462b0d0da9d73",
      "tree": "97b6089e15c4ce3daadc7633776dca952e883e6b",
      "parents": [
        "221d1d797202984cb874e3ed9f1388593d34ee22"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 17 15:28:21 2011 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Tue May 17 20:54:04 2011 +0000"
      },
      "message": "cifs: fix cifsConvertToUCS() for the mapchars case\n\nAs Metze pointed out, commit 84cdf74e broke mapchars option:\n\n    Commit \"cifs: fix unaligned accesses in cifsConvertToUCS\"\n    (84cdf74e8096a10dd6acbb870dd404b92f07a756) does multiple steps\n    in just one commit (moving the function and changing it without\n    testing).\n\n    put_unaligned_le16(temp, \u0026target[j]); is never called for any\n    codepoint the goes via the \u0027default\u0027 switch statement. As a result\n    we put just zero (or maybe uninitialized) bytes into the target\n    buffer.\n\nHis proposed patch looks correct, but doesn\u0027t apply to the current head\nof the tree. This patch should also fix it.\n\nCc: \u003cstable@kernel.org\u003e # .38.x: 581ade4: cifs: clean up various nits in unicode routines (try #2)\nReported-by: Stefan Metzmacher \u003cmetze@samba.org\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "221d1d797202984cb874e3ed9f1388593d34ee22",
      "tree": "e86b9b3b4b54806b769de8777add5b52e73cf00f",
      "parents": [
        "c1d10d18c542278b7fbc413c289d3cb6219da6b3"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 17 06:40:30 2011 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Tue May 17 18:51:14 2011 +0000"
      },
      "message": "cifs: add fallback in is_path_accessible for old servers\n\nThe is_path_accessible check uses a QPathInfo call, which isn\u0027t\nsupported by ancient win9x era servers. Fall back to an older\nSMBQueryInfo call if it fails with the magic error codes.\n\nCc: stable@kernel.org\nReported-and-Tested-by: Sandro Bonazzola \u003csandro.bonazzola@gmail.com\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "a085963a2757b9ab0a7ec1cf4a14aa85935c1e2a",
      "tree": "65ba9b826cf1b2311534e10b944175a83467d654",
      "parents": [
        "c1d10d18c542278b7fbc413c289d3cb6219da6b3",
        "07f4beb0b5bbfaf36a64aa00d59e670ec578a95a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 17 08:02:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 17 08:02:04 2011 -0700"
      },
      "message": "Merge branch \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027timers-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  tick: Clear broadcast active bit when switching to oneshot\n  rtc: mc13xxx: Don\u0027t call rtc_device_register while holding lock\n  rtc: rp5c01: Initialize drvdata before registering device\n  rtc: pcap: Initialize drvdata before registering device\n  rtc: msm6242: Initialize drvdata before registering device\n  rtc: max8998: Initialize drvdata before registering device\n  rtc: max8925: Initialize drvdata before registering device\n  rtc: m41t80: Initialize clientdata before registering device\n  rtc: ds1286: Initialize drvdata before registering device\n  rtc: ep93xx: Initialize drvdata before registering device\n  rtc: davinci: Initialize drvdata before registering device\n  rtc: mxc: Initialize drvdata before registering device\n  clocksource: Install completely before selecting\n"
    },
    {
      "commit": "14fb57dccb6e1defe9f89a66f548fcb24c374c1d",
      "tree": "57126dba7f5ff7b1652c5598f7632986227eab39",
      "parents": [
        "328935e6348c6a7cb34798a68c326f4b8372e68a"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "borislav.petkov@amd.com",
        "time": "Tue May 17 14:55:19 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 17 15:28:34 2011 +0200"
      },
      "message": "x86, AMD: Fix ARAT feature setting again\n\nTrying to enable the local APIC timer on early K8 revisions\nuncovers a number of other issues with it, in conjunction with\nthe C1E enter path on AMD. Fixing those causes much more churn\nand troubles than the benefit of using that timer brings so\ndon\u0027t enable it on K8 at all, falling back to the original\nfunctionality the kernel had wrt to that.\n\nReported-and-bisected-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nCc: Boris Ostrovsky \u003cBoris.Ostrovsky@amd.com\u003e\nCc: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nCc: Greg Kroah-Hartman \u003cgreg@kroah.com\u003e\nCc: Hans Rosenfeld \u003chans.rosenfeld@amd.com\u003e\nCc: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nCc: Joerg-Volker-Peetz \u003cjvpeetz@web.de\u003e\nSigned-off-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nLink: http://lkml.kernel.org/r/1305636919-31165-3-git-send-email-bp@amd64.org\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "328935e6348c6a7cb34798a68c326f4b8372e68a",
      "tree": "d6fb0459d00e0cf8567a1e223aff69b58f3171cc",
      "parents": [
        "e503f9e4b092e2349a9477a333543de8f3c7f5d9"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "borislav.petkov@amd.com",
        "time": "Tue May 17 14:55:18 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 17 15:28:33 2011 +0200"
      },
      "message": "Revert \"x86, AMD: Fix APIC timer erratum 400 affecting K8 Rev.A-E processors\"\n\nThis reverts commit e20a2d205c05cef6b5783df339a7d54adeb50962, as it crashes\ncertain boxes with specific AMD CPU models.\n\nMoving the lower endpoint of the Erratum 400 check to accomodate\nearlier K8 revisions (A-E) opens a can of worms which is simply\nnot worth to fix properly by tweaking the errata checking\nframework:\n\n* missing IntPenging MSR on revisions \u003c CG cause #GP:\n\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d130541471818831\n\n* makes earlier revisions use the LAPIC timer instead of the C1E\nidle routine which switches to HPET, thus not waking up in\ndeeper C-states:\n\nhttp://lkml.org/lkml/2011/4/24/20\n\nTherefore, leave the original boundary starting with K8-revF.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9937a5e2f32892db0dbeefc2b3bc74b3ae3ea9c7",
      "tree": "0448e96b503deb71dd8a1228da94a9fc22a57d48",
      "parents": [
        "70087dc38cc77ca8f46059564c00338777734762"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 17 11:04:44 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue May 17 11:04:44 2011 +0200"
      },
      "message": "scsi: remove performance regression due to async queue run\n\nCommit c21e6beb removed our queue request_fn re-enter\nprotection, and defaulted to always running the queues from\nkblockd to be safe. This was a known potential slow down,\nbut should be safe.\n\nUnfortunately this is causing big performance regressions for\nsome, so we need to improve this logic. Looking into the details\nof the re-enter, the real issue is on requeue of requests.\n\nRequeue of requests upon seeing a BUSY condition from the device\nends up re-running the queue, causing traces like this:\n\nscsi_request_fn()\n        scsi_dispatch_cmd()\n                scsi_queue_insert()\n                        __scsi_queue_insert()\n                                scsi_run_queue()\n\t\t\t\t\tscsi_request_fn()\n\t\t\t\t\t\t...\n\npotentially causing the issue we want to avoid. So special\ncase the requeue re-run of the queue, but improve it to offload\nthe entire run of local queue and starved queue from a single\nworkqueue callback. This is a lot better than potentially\nkicking off a workqueue run for each device seen.\n\nThis also fixes the issue of the local device going into recursion,\nsince the above mentioned commit never moved that queue run out\nof line.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    }
  ],
  "next": "c1d10d18c542278b7fbc413c289d3cb6219da6b3"
}
