)]}'
{
  "log": [
    {
      "commit": "0634857488ec6e28fa22920cd0bee3c2ac07ccfd",
      "tree": "6cfa348aea76f39b658d3a36ab51807a4ac7bcf7",
      "parents": [
        "e244a0aeb6a599c19a7c802cda6e2d67c847b154"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 14 09:24:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:49 2009 -0400"
      },
      "message": "Btrfs: enable discard support\n\nThe discard support code in btrfs currently is guarded by ifdefs for\nBIO_RW_DISCARD, which is never defines as it\u0027s the name of an enum\nmemeber.  Just remove the useless ifdefs to actually enable the code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e244a0aeb6a599c19a7c802cda6e2d67c847b154",
      "tree": "392d8d48c4e6676a552230135ad448d522007ece",
      "parents": [
        "86df7eb921a009515285e7171363fa57dd2d7d31"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 14 09:24:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:49 2009 -0400"
      },
      "message": "Btrfs: add -o discard option\n\nEnable discard by default is not a good idea given the the trim speed\nof SSD prototypes we\u0027ve seen, and the carecteristics for many high-end\narrays.  Turn of discards by default and require the -o discard option\nto enable them on.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "86df7eb921a009515285e7171363fa57dd2d7d31",
      "tree": "884e8cda2535dc43cf57ce9fa273381b827d2f4f",
      "parents": [
        "5d5e103a70f74ae98e3965a4add1ab951d0651d1"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Oct 14 09:24:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:48 2009 -0400"
      },
      "message": "Btrfs: properly wait log writers during log sync\n\nA recently fsync optimization make btrfs_sync_log skip calling\nwait_for_writer in the single log writer case. This is incorrect\nsince the writer count can also be increased by btrfs_pin_log.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5d5e103a70f74ae98e3965a4add1ab951d0651d1",
      "tree": "83b1cc73830f72f592aa804207a679912beef101",
      "parents": [
        "0eda294dfc980c1cbe4f8a0564bf543f86a01ddb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 13 16:46:49 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Oct 14 10:32:47 2009 -0400"
      },
      "message": "Btrfs: fix possible ENOSPC problems with truncate\n\nThere\u0027s a problem where we don\u0027t do any space reservation for truncates, which\ncan cause you to OOPs because you will be allowed to go off in the weeds a bit\nsince we don\u0027t account for the delalloc bytes that are created as a result of\nthe truncate.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0eda294dfc980c1cbe4f8a0564bf543f86a01ddb",
      "tree": "478b0abfda753196fcb8842d002e5bb600051618",
      "parents": [
        "690587d109ffe19d6743e4cc80c18b0906b7f9ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:50:18 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:51:39 2009 -0400"
      },
      "message": "Btrfs: fix btrfs acl #ifdef checks\n\nThe btrfs acl code was #ifdefing for a define\nthat didn\u0027t exist.  This correctly matches it\nto the values used by the Kconfig file.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "690587d109ffe19d6743e4cc80c18b0906b7f9ff",
      "tree": "788acd32c4ed1463d0166d0c45b233d96bb102e0",
      "parents": [
        "257c62e1bce03e5b9f3f069fd52ad73a56de71fd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:29:19 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:35:12 2009 -0400"
      },
      "message": "Btrfs: streamline tree-log btree block writeout\n\nSyncing the tree log is a 3 phase operation.\n\n1) write and wait for all the tree log blocks for a given root.\n\n2) write and wait for all the tree log blocks for the\ntree of tree log roots.\n\n3) write and wait for the super blocks (barriers here)\n\nThis isn\u0027t as efficient as it could be because there is\nno requirement to wait for the blocks from step one to hit the disk\nbefore we start writing the blocks from step two.  This commit\nchanges the sequence so that we don\u0027t start waiting until\nall the tree blocks from both steps one and two have been sent\nto disk.\n\nWe do this by breaking up btrfs_write_wait_marked_extents into\ntwo functions, which is trivial because it was already broken\nup into two parts.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "257c62e1bce03e5b9f3f069fd52ad73a56de71fd",
      "tree": "ad047fe5796156aa88e3f3600111bf2b8d12759f",
      "parents": [
        "4722607db6a78bd7748c51fa4c8d7371da797254"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:21:08 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:35:12 2009 -0400"
      },
      "message": "Btrfs: avoid tree log commit when there are no changes\n\nrpm has a habit of running fdatasync when the file hasn\u0027t\nchanged.  We already detect if a file hasn\u0027t been changed\nin the current transaction but it might have been sent to\nthe tree-log in this transaction and not changed since\nthe last call to fsync.\n\nIn this case, we want to avoid a tree log sync, which includes\na number of synchronous writes and barriers.  This commit\nextends the existing tracking of the last transaction to change\na file to also track the last sub-transaction.\n\nThe end result is that rpm -ivh and -Uvh are roughly twice as fast,\nand on par with ext3.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4722607db6a78bd7748c51fa4c8d7371da797254",
      "tree": "83c483a3f55d3f024863e1e33c3ac123e688c868",
      "parents": [
        "ac6889cbb254be1ffea376bea4a96ce9be0e0ed0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 12:55:09 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 13 13:35:11 2009 -0400"
      },
      "message": "Btrfs: only write one super copy during fsync\n\nDuring a tree-log commit for fsync, we\u0027ve been writing at least\ntwo copies of the super block and forcing them to disk.\n\nThe other filesystems write only one, and this change brings us on\npar with them.  A full transaction commit will write all the super\ncopies, so we still have redundant info written on a regular\nbasis.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ac6889cbb254be1ffea376bea4a96ce9be0e0ed0",
      "tree": "8f0e073af940b1bdfb134b945a03a1b43b614352",
      "parents": [
        "e9061e214810c9534381a705a1b46533e09f2676"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 11:29:53 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 11:29:53 2009 -0400"
      },
      "message": "Btrfs: fix file clone ioctl for bookend extents\n\nThe file clone ioctl was incorrectly taking the offset into the\nextent on disk into account when calculating the length of the\ncloned extent.\n\nThe length never changes based on the offset into the physical extent.\n\nTest case:\n\nfallocate -l 1g image\nmke2fs image\nbcp image image2\ne2fsck -f image2\n\n(errors on image2)\n\nThe math bug ends up wrapping the length of the extent, and things\ngo wrong from there.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e9061e214810c9534381a705a1b46533e09f2676",
      "tree": "7eed17ffbfc2eeb06da70dafe8087855c4b22a60",
      "parents": [
        "82d339d9b3a6395f17d3253887653250b693b74b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:57:45 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:57:45 2009 -0400"
      },
      "message": "Btrfs: fix uninit compiler warning in cow_file_range_nocow\n\nThe extent_type variable was exposed uninit via a goto.  It should be\nimpossible to trigger because it is protected by a check on another\nvariable, but this makes sure.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "82d339d9b3a6395f17d3253887653250b693b74b",
      "tree": "04671df82289708192bd650c67eaa2f8a999132b",
      "parents": [
        "94fcca9f8999e7828d5f4dc181daa39cad2af38a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Oct 09 09:54:36 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:54:36 2009 -0400"
      },
      "message": "Btrfs: constify dentry_operations\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "94fcca9f8999e7828d5f4dc181daa39cad2af38a",
      "tree": "68842517a4d10d080bc4f70abae19e480d2ac049",
      "parents": [
        "efefb1438be269897585934fc6c05deb4dfa01ce"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "message": "Btrfs: optimize back reference update during btrfs_drop_snapshot\n\nThis patch reading level 0 tree blocks that already use full backrefs.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "efefb1438be269897585934fc6c05deb4dfa01ce",
      "tree": "41d3bf63789bc656421dfbd651bf38caf580ec03",
      "parents": [
        "ff782e0a131c7f669445c07fe5c7ba91e043b7ed"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 09 09:25:16 2009 -0400"
      },
      "message": "Btrfs: remove negative dentry when deleting subvolumne\n\nThe use of btrfs_dentry_delete is removing dentries from the\ndcache when deleting subvolumne. btrfs_dentry_delete ignores\nnegative dentries. This is incorrect since if we don\u0027t remove\nthe negative dentry, its parent dentry can\u0027t be removed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff782e0a131c7f669445c07fe5c7ba91e043b7ed",
      "tree": "ff7773e6ce60bf977ed29897c13605f257647684",
      "parents": [
        "e3ccfa989752c083ceb23c823a84f7ce3a081e61"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 08 15:30:04 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:30:04 2009 -0400"
      },
      "message": "Btrfs: optimize fsync for the single writer case\n\nThis patch optimizes the tree logging stuff so it doesn\u0027t always wait 1 jiffie\nfor new people to join the logging transaction if there is only ever 1 writer.\nThis helps a little bit with latency where we have something like RPM where it\nwill fdatasync every file it writes, and so waiting the 1 jiffie for every\nfdatasync really starts to add up.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e3ccfa989752c083ceb23c823a84f7ce3a081e61",
      "tree": "197558cbee7b773b8270cd861f882a37beacd2ed",
      "parents": [
        "32c00aff718bb54a214b39146bdd9ac01511cd25"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 07 20:44:34 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:21:23 2009 -0400"
      },
      "message": "Btrfs: async delalloc flushing under space pressure\n\nThis patch moves the delalloc flushing that occurs when we are under space\npressure off to a async thread pool.  This helps since we only free up\nmetadata space when we actually insert the extent item, which means it takes\nquite a while for space to be free\u0027ed up if we wait on all ordered extents.\nHowever, if space is freed up due to inline extents being inserted, we can\nwake people who are waiting up early, and they can finish their work.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "32c00aff718bb54a214b39146bdd9ac01511cd25",
      "tree": "c094ee494723a9ebc9d83cb95607f06351665639",
      "parents": [
        "a3429ab70b04363c6190964e82f04f44f3e34cf0"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 08 13:34:05 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:21:10 2009 -0400"
      },
      "message": "Btrfs: release delalloc reservations on extent item insertion\n\nThis patch fixes an issue with the delalloc metadata space reservation\ncode.  The problem is we used to free the reservation as soon as we\nallocated the delalloc region.  The problem with this is if we are not\ninserting an inline extent, we don\u0027t actually insert the extent item until\nafter the ordered extent is written out.  This patch does 3 things,\n\n1) It moves the reservation clearing stuff into the ordered code, so when\nwe remove the ordered extent we remove the reservation.\n2) It adds a EXTENT_DO_ACCOUNTING flag that gets passed when we clear\ndelalloc bits in the cases where we want to clear the metadata reservation\nwhen we clear the delalloc extent, in the case that we do an inline extent\nor we invalidate the page.\n3) It adds another waitqueue to the space info so that when we start a fs\nwide delalloc flush, anybody else who also hits that area will simply wait\nfor the flush to finish and then try to make their allocation.\n\nThis has been tested thoroughly to make sure we did not regress on\nperformance.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a3429ab70b04363c6190964e82f04f44f3e34cf0",
      "tree": "f9aa5104699fdb82a3dfa327948241aa3e0022d5",
      "parents": [
        "a791e35e12ff672e8a0e140abeeaf900c3b2ea77"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 12:30:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:11:50 2009 -0400"
      },
      "message": "Btrfs: delay clearing EXTENT_DELALLOC for compressed extents\n\nWhen compression is on, the cow_file_range code is farmed off to\nworker threads.  This allows us to do significant CPU work in parallel\non SMP machines.\n\nBut it is a delicate balance around when we clear flags and how.  In\nthe past we cleared the delalloc flag immediately, which was safe\nbecause the pages stayed locked.\n\nBut this is causing problems with the newest ENOSPC code, and with the\nrecent extent state cleanups we can now clear the delalloc bit at the\nsame time the uncompressed code does.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a791e35e12ff672e8a0e140abeeaf900c3b2ea77",
      "tree": "f03b99451619c0425f3c93fbef3940c2b08c1bd3",
      "parents": [
        "1cdda9b81ac0e6ee986f034fa02f221679e1c11a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 11:27:10 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 08 15:11:49 2009 -0400"
      },
      "message": "Btrfs: cleanup extent_clear_unlock_delalloc flags\n\nextent_clear_unlock_delalloc has a growing set of ugly parameters\nthat is very difficult to read and maintain.\n\nThis switches to a flag field and well named flag defines.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1cdda9b81ac0e6ee986f034fa02f221679e1c11a",
      "tree": "ae9394e50bc2418e8c3054de12ed44962d6f261a",
      "parents": [
        "61d92c328c16419fc96dc50dd16f8b8c695409ec"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 06 10:04:28 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 06 10:04:28 2009 -0400"
      },
      "message": "Btrfs: fix possible softlockup in the allocator\n\nLike the cluster allocating stuff, we can lockup the box with the normal\nallocation path.  This happens when we\n\n1) Start to cache a block group that is severely fragmented, but has a decent\namount of free space.\n2) Start to commit a transaction\n3) Have the commit try and empty out some of the delalloc inodes with extents\nthat are relatively large.\n\nThe inodes will not be able to make the allocations because they will ask for\nallocations larger than a contiguous area in the free space cache.  So we will\nwait for more progress to be made on the block group, but since we\u0027re in a\ncommit the caching kthread won\u0027t make any more progress and it already has\nenough free space that wait_block_group_cache_progress will just return.  So,\nif we wait and fail to make the allocation the next time around, just loop and\ngo to the next block group.  This keeps us from getting stuck in a softlockup.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "61d92c328c16419fc96dc50dd16f8b8c695409ec",
      "tree": "e9cd82eb56ff5f38f64d9f35229d15496e5d53de",
      "parents": [
        "fbf190874407f23d2891b53ffdf7d3c6be8d47ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 02 19:11:56 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 05 09:44:45 2009 -0400"
      },
      "message": "Btrfs: fix deadlock on async thread startup\n\nThe btrfs async worker threads are used for a wide variety of things,\nincluding processing bio end_io functions.  This means that when\nthe endio threads aren\u0027t running, the rest of the FS isn\u0027t\nable to do the final processing required to clear PageWriteback.\n\nThe endio threads also try to exit as they become idle and\nstart more as the work piles up.  The problem is that starting more\nthreads means kthreadd may need to allocate ram, and that allocation\nmay wait until the global number of writeback pages on the system is\nbelow a certain limit.\n\nThe result of that throttling is that end IO threads wait on\nkthreadd, who is waiting on IO to end, which will never happen.\n\nThis commit fixes the deadlock by handing off thread startup to a\ndedicated thread.  It also fixes a bug where the on-demand thread\ncreation was creating far too many threads because it didn\u0027t take into\naccount threads being started by other procs.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fbf190874407f23d2891b53ffdf7d3c6be8d47ff",
      "tree": "c60ab388e2b19b02fd3bbcef76498a3520f9dcbd",
      "parents": [
        "ab93dbecfba72bbc04b7036343d180aaff1b61a3"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 01 17:10:23 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 17:10:23 2009 -0400"
      },
      "message": "Btrfs: fix data space leak fix\n\nThere is a problem where page_mkwrite can be called on a dirtied page that\nalready has a delalloc range associated with it.  The fix is to clear any\ndelalloc bits for the range we are dirtying so the space accounting gets\nhandled properly.  This is the same thing we do in the normal write case, so we\nare consistent across the board.  With this patch we no longer leak reserved\nspace.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ab93dbecfba72bbc04b7036343d180aaff1b61a3",
      "tree": "6bb523dcf9be0885b6fa9cb6cc9ac694ee089028",
      "parents": [
        "35d62a942db5ae03104929fe7397835b572c4bc4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 12:29:10 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 12:29:10 2009 -0400"
      },
      "message": "Btrfs: take i_mutex before generic_write_checks\n\nbtrfs_file_write was incorrectly calling generic_write_checks without\ntaking i_mutex.  This lead to problems with racing around i_size when\ndoing O_APPEND writes.\n\nThe fix here is to move i_mutex higher.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "35d62a942db5ae03104929fe7397835b572c4bc4",
      "tree": "91ea5b0a79e898f57cd644e1ff0437748aa0781b",
      "parents": [
        "dd7e0b7b02ccff73b87032e20fc5b4f2c1cfcc14"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Sep 30 16:47:08 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 01 10:27:01 2009 -0400"
      },
      "message": "Btrfs: fix arguments to btrfs_wait_on_page_writeback_range\n\nwait_on_page_writeback_range/btrfs_wait_on_page_writeback_range takes\na pagecache offset, not a byte offset into the file.  Shift the arguments\naround to wait for the correct range\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dd7e0b7b02ccff73b87032e20fc5b4f2c1cfcc14",
      "tree": "2168da63d84f05106b2aa8eb8f5cdc8859f1e176",
      "parents": [
        "1ab86aedbc7845a946b4ba4edf37762629970708"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 19:50:07 2009 -0400"
      },
      "message": "Btrfs: fix deadlock with free space handling and user transactions\n\nIf an ioctl-initiated transaction is open, we can\u0027t force a commit during\nthe free space checks in order to free up pinned extents or else we\ndeadlock.  Just ENOSPC instead.\n\nA more satisfying solution that reserves space for the entire user\ntransaction up front is forthcoming...\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1ab86aedbc7845a946b4ba4edf37762629970708",
      "tree": "1a3ad19d12a807d76d5700abc6415e1535c88312",
      "parents": [
        "3baf0bed0a5adab95c7599d2f27124c74692ef28"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 18:38:44 2009 -0400"
      },
      "message": "Btrfs: fix error cases for ioctl transactions\n\nFix leak of vfsmount write reference and open_ioctl_trans reference on\nENOMEM.  Clean up the error paths while we\u0027re at it.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3baf0bed0a5adab95c7599d2f27124c74692ef28",
      "tree": "fff0aae377d71743ab4d95449bf57419280555b3",
      "parents": [
        "fd2696f399e45347c07f1f7f340e8515cace5657"
      ],
      "author": {
        "name": "Chris Ball",
        "email": "cjb@laptop.org",
        "time": "Tue Sep 29 13:51:05 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 13:51:05 2009 -0400"
      },
      "message": "Btrfs: Use CONFIG_BTRFS_POSIX_ACL to enable ACL code\n\nWe\u0027ve already defined CONFIG_BTRFS_POSIX_ACL in Kconfig, but we\u0027re\ncurrently not using it and are testing CONFIG_FS_POSIX_ACL instead.\nCONFIG_FS_POSIX_ACL states \"Never use this symbol for ifdefs\".\n\nSigned-off-by: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fd2696f399e45347c07f1f7f340e8515cace5657",
      "tree": "bd1a1c1907b5a344257673761bdf69629fd7cdba",
      "parents": [
        "49cf6f4529b7945ef51b8e39f0bac630726f8c96"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "message": "Btrfs: introduce missing kfree\n\nError handling code following a kzalloc should free the allocated data.\n\nThe semantic match that finds the problem is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression x;\nstatement S;\nexpression E;\nidentifier f,f1,l;\nposition p1,p2;\nexpression *ptr !\u003d NULL;\n@@\n\nx@p1 \u003d \\(kmalloc\\|kzalloc\\|kcalloc\\)(...);\n...\nif (x \u003d\u003d NULL) S\n\u003c... when !\u003d x\n     when !\u003d if (...) { \u003c+...x...+\u003e }\n(\nx-\u003ef1 \u003d E\n|\n (x-\u003ef1 \u003d\u003d NULL || ...)\n|\n f(...,x-\u003ef1,...)\n)\n...\u003e\n(\n return \\(0\\|\u003c+...x...+\u003e\\|ptr\\);\n|\n return@p2 ...;\n)\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\nprint \"* file: %s kmalloc %s return %s\" % (p1[0].file,p1[0].line,p2[0].line)\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": "49cf6f4529b7945ef51b8e39f0bac630726f8c96",
      "tree": "27c91f6bb1ac0e4862286e78d1365e2890754cef",
      "parents": [
        "9ed74f2dba6ebf9f30b80554290bfc73cc3ef083"
      ],
      "author": {
        "name": "Chris Ball",
        "email": "cjb@laptop.org",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 29 13:51:04 2009 -0400"
      },
      "message": "Btrfs: Fix setting umask when POSIX ACLs are not enabled\n\nWe currently set sb-\u003es_flags |\u003d MS_POSIXACL unconditionally, which is\nincorrect -- it tells the VFS that it shouldn\u0027t set umask because we\nwill, yet we don\u0027t set it ourselves if we aren\u0027t using POSIX ACLs, so\nthe umask ends up ignored.\n\nSigned-off-by: Chris Ball \u003ccjb@laptop.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9ed74f2dba6ebf9f30b80554290bfc73cc3ef083",
      "tree": "763d58a4a11ceca26dcdaedefb1fd662c4e2fa8b",
      "parents": [
        "c65ddb52dc412c9b67681b1aa16cd1bac8434e24"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:12:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 28 16:29:42 2009 -0400"
      },
      "message": "Btrfs: proper -ENOSPC handling\n\nAt the start of a transaction we do a btrfs_reserve_metadata_space() and\nspecify how many items we plan on modifying.  Then once we\u0027ve done our\nmodifications and such, just call btrfs_unreserve_metadata_space() for\nthe same number of items we reserved.\n\nFor keeping track of metadata needed for data I\u0027ve had to add an extent_io op\nfor when we merge extents.  This lets us track space properly when we are doing\nsequential writes, so we don\u0027t end up reserving way more metadata space than\nwhat we need.\n\nThe only place where the metadata space accounting is not done is in the\nrelocation code.  This is because Yan is going to be reworking that code in the\nnear future, so running btrfs-vol -b could still possibly result in a ENOSPC\nrelated panic.  This patch also turns off the metadata_ratio stuff in order to\nallow users to more efficiently use their disk space.\n\nThis patch makes it so we track how much metadata we need for an inode\u0027s\ndelayed allocation extents by tracking how many extents are currently\nwaiting for allocation.  It introduces two new callbacks for the\nextent_io tree\u0027s, merge_extent_hook and split_extent_hook.  These help\nus keep track of when we merge delalloc extents together and split them\nup.  Reservations are handled prior to any actually dirty\u0027ing occurs,\nand then we unreserve after we dirty.\n\nbtrfs_unreserve_metadata_for_delalloc() will make the appropriate\nunreservations as needed based on the number of reservations we\ncurrently have and the number of extents we currently have.  Doing the\nreservation outside of doing any of the actual dirty\u0027ing lets us do\nthings like filemap_flush() the inode to try and force delalloc to\nhappen, or as a last resort actually start allocation on all delalloc\ninodes in the fs.  This has survived dbench, fs_mark and an fsx torture\ntest.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c65ddb52dc412c9b67681b1aa16cd1bac8434e24",
      "tree": "1febb9b954e1569d46382abd741ee7bbd3670173",
      "parents": [
        "0257bb82d21bedff26541bcf12f1461c23f9ed61"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:24:43 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:24:43 2009 -0400"
      },
      "message": "Btrfs: hash the btree inode during  fill_super\n\nThe snapshot deletion  patches dropped this line, but the inode\nneeds to be hashed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0257bb82d21bedff26541bcf12f1461c23f9ed61",
      "tree": "0b79fd9bf377094f6fa6f5f923fe192515672af3",
      "parents": [
        "f679a84034be6f7da123be786bbd8838bf3e9207"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "message": "Btrfs: relocate file extents in clusters\n\nThe extent relocation code copy file extents one by one when\nrelocating data block group. This is inefficient if file\nextents are small. This patch makes the relocation code copy\nfile extents in clusters. So we can can make better use of\nread-ahead.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f679a84034be6f7da123be786bbd8838bf3e9207",
      "tree": "4dce1760675978fd0b113e04f9608f57161bac85",
      "parents": [
        "a57195214358b75807a74bad96a8601a36262af7"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "message": "Btrfs: don\u0027t rename file into dummy directory\n\nA recent change enforces only one access point to each subvolume. The first\ndirectory entry (the one added when the subvolume/snapshot was created) is\ntreated as valid access point, all other subvolume links are linked to dummy\nempty directories. The dummy directories are temporary inodes that only in\nmemory, so we can not rename file into them.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a57195214358b75807a74bad96a8601a36262af7",
      "tree": "e288410ecfab5f15097bb66f06a5dd6bf99bca08",
      "parents": [
        "11ef160fda9c150cd75db77194bcc66839709662"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 24 09:17:31 2009 -0400"
      },
      "message": "Btrfs: check size of inode backref before adding hardlink\n\nFor every hardlink in btrfs, there is a corresponding inode back\nreference. All inode back references for hardlinks in a given\ndirectory are stored in single b-tree item. The size of b-tree item\nis limited by the size of b-tree leaf, so we can only create limited\nnumber of hardlinks to a given file in a directory.\n\nThe original code lacks of the check, it oops if the number of\nhardlinks goes over the limit. This patch fixes the issue by adding\ncheck to btrfs_link and btrfs_rename.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "11ef160fda9c150cd75db77194bcc66839709662",
      "tree": "2cd7577234c112177a06ad09c0c507c81cb9658a",
      "parents": [
        "46562cec98368623bcd18d7fd30f20c04afd5978"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:28:46 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:30:53 2009 -0400"
      },
      "message": "Btrfs: fix releasepage to avoid unlocking extents we haven\u0027t locked\n\nDuring releasepage, we try to drop any extent_state structs for the\nbye offsets of the page we\u0027re releaseing.  But the code was incorrectly\ntelling clear_extent_bit to delete the state struct unconditionallly.\n\nNormally this would be fine because we have the page locked, but other\nparts of btrfs will lock down an entire extent, the most common place\nbeing IO completion.\n\nreleasepage was deleting the extent state without first locking the extent,\nwhich may result in removing a state struct that another process had\nlocked down.  The fix here is to leave the NODATASUM and EXTENT_LOCKED\nbits alone in releasepage.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "46562cec98368623bcd18d7fd30f20c04afd5978",
      "tree": "4e5bbba7f459a1094b09413f65239b26401117f8",
      "parents": [
        "42daec299b8b6b9605976d0ee1266b343a31cbcc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:23:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:30:52 2009 -0400"
      },
      "message": "Btrfs: Fix test_range_bit for whole file extents\n\nIf test_range_bit finds an extent that goes all the way to (u64)-1, it\ncan incorrectly wrap the u64 instead of treaing it like the end of\nthe address space.\n\nThis just adds a check for the highest possible offset so we don\u0027t wrap.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42daec299b8b6b9605976d0ee1266b343a31cbcc",
      "tree": "6813d5d2b30c346413e329f0ad4d6f2262991311",
      "parents": [
        "7ce618db9878689f87897b673fa3329070860fc7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 19:51:09 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 23 20:30:52 2009 -0400"
      },
      "message": "Btrfs: fix errors handling cached state in set/clear_extent_bit\n\nBoth set and clear_extent_bit allow passing a cached\nstate struct to reduce rbtree search times.  clear_extent_bit\nwas improperly bypassing some of the checks around making sure\nthe extent state fields were correct for a given operation.\n\nThe fix used here (from Yan Zheng) is to use the hit_next\ngoto target instead of jumping all the way down to start clearing\nbits without making sure the cached state was exactly correct\nfor the operation we were doing.\n\nThis also fixes up the setting of the start variable for both\nops in the case where we find an overlapping extent that\nbegins before the range we want to change.  In both cases\nwe were incorrectly going backwards from the original\nrequested change.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ce618db9878689f87897b673fa3329070860fc7",
      "tree": "a149e88a2f28c2fd5ad515f7351af9832540fedb",
      "parents": [
        "33b4d47f5e24b986f486d7de9a2df915ad1fdfbc"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:48:44 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:48:44 2009 -0400"
      },
      "message": "Btrfs: fix early enospc during balancing\n\nWe now do extra checks before a balance to make sure\nthere is room for the balance to take place.  One of\nthe checks was testing to see if we were trying to\nbalance away the last block group of a given type.\n\nIf there is no space available for new chunks, we\nshould not try and balance away the last block group\nof a give type.  But, the code wasn\u0027t checking for\navailable chunk space, and so it was exiting too soon.\n\nThe fix here is to combine some of the checks and make\nsure we try to allocate new chunks when we\u0027re balancing\nthe last block group.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "33b4d47f5e24b986f486d7de9a2df915ad1fdfbc",
      "tree": "198fb5c7d48bfd9e4010eb253e9e7573172a7680",
      "parents": [
        "1b2da372b0324b5c604fc8790e70a7efbeacb0b6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:45:50 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 22 14:45:50 2009 -0400"
      },
      "message": "Btrfs: deal with NULL space info\n\nAfter a balance it is briefly possible for the space info\nfield in the inode to be NULL.  This adds some checks\nto make sure things properly deal with the NULL value.\n\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1b2da372b0324b5c604fc8790e70a7efbeacb0b6",
      "tree": "13d7ba24660c865efd184a25b7b0ac8830a6d7f1",
      "parents": [
        "25891f796d8d30f2b86b1e84d78721b44d573d70"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:50 2009 -0400"
      },
      "message": "Btrfs: account for space used by the super mirrors\n\nAs we get closer to proper -ENOSPC handling in btrfs, we need more accurate\nspace accounting for the space info\u0027s.  Currently we exclude the free space for\nthe super mirrors, but the space they take up isn\u0027t accounted for in any of the\ncounters.  This patch introduces bytes_super, which keeps track of the amount\nof bytes used for a super mirror in the block group cache and space info.  This\nmakes sure that our free space caclucations will be completely accurate.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "25891f796d8d30f2b86b1e84d78721b44d573d70",
      "tree": "12d4ac7251006a73e8ae75b3a4a751d04df0e823",
      "parents": [
        "f61408b81cd040a594dc0b65171230c4d5cc917d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:50 2009 -0400"
      },
      "message": "Btrfs: fix extent entry threshold calculation\n\nThere is a slight problem with the extent entry threshold calculation for the\nfree space cache.  We only adjust the threshold down as we add bitmaps, but\nnever actually adjust the threshold up as we add bitmaps.  This means we could\nfragment the free space so badly that we end up using all bitmaps to describe\nthe free space, use all the free space which would result in the bitmaps being\nfreed, but then go to add free space again as we delete things and immediately\nadd bitmaps since the extent threshold would still be 0.  Now as we free\nbitmaps the extent threshold will be ratcheted up to allow more extent entries\nto be added.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f61408b81cd040a594dc0b65171230c4d5cc917d",
      "tree": "0fe8757007b75ecbdb369b9f2d9750696d822092",
      "parents": [
        "f019f4264ae8c0169332592bcee419ee90e7c827"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:49 2009 -0400"
      },
      "message": "Btrfs: remove dead code\n\nThis patch removes a bunch of dead code from the snapshot removal stuff.  It\nwas confusing me when doing the metadata ENOSPC stuff so I killed it.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f019f4264ae8c0169332592bcee419ee90e7c827",
      "tree": "61a2953e59b5883f376e5b6ba3938fa2721c97be",
      "parents": [
        "0a24325e6d8cfb150eba0aa279615ef27b5f6aec"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:49 2009 -0400"
      },
      "message": "Btrfs: fix bitmap size tracking\n\nWhen we first go to add free space, we allocate a new info and set the offset\nand bytes to the space we are adding.  This is fine, except we actually set the\nsize of a bitmap as we set the bits in it, so if we add space to a bitmap, we\u0027d\nend up counting the same space twice.  This isn\u0027t a huge deal, it just makes\nthe allocator behave weirdly since it will think that a bitmap entry has more\nspace than it ends up actually having.  I used a BUG_ON() to catch when this\nproblem happened, and with this patch I no longer get the BUG_ON().\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0a24325e6d8cfb150eba0aa279615ef27b5f6aec",
      "tree": "f0ca16ab43d87d526a1f918c7e960711256fd47f",
      "parents": [
        "ba1bf4818baf68d914ef9e3b06fbea6acb674fe4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:49 2009 -0400"
      },
      "message": "Btrfs: don\u0027t keep retrying a block group if we fail to allocate a cluster\n\nThe box can get locked up in the allocator if we happen upon a block group\nunder these conditions:\n\n1) During a commit, so caching threads cannot make progress\n2) Our block group currently is in the middle of being cached\n3) Our block group currently has plenty of free space in it\n4) Our block group is so fragmented that it ends up having no free space chunks\nlarger than min_bytes calculated by btrfs_find_space_cluster.\n\nWhat happens is we try and do btrfs_find_space_cluster, which fails because it\nis unable to find enough free space chunks that are large than min_bytes and\nare close enough together.  Since the block group is not cached we do a\nwait_block_group_cache_progress, which waits for the number of bytes we need,\nexcept the block group already has _plenty_ of free space, its just severely\nfragmented, so we loop and try again, ad infinitum.  This patch keeps us from\nwaiting on the block group to finish caching if we failed to find a free space\ncluster before.  It also makes sure that we don\u0027t even try to find a free space\ncluster if we are on our last loop in the allocator, since we will have tried\neverything at this point at it is futile.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ba1bf4818baf68d914ef9e3b06fbea6acb674fe4",
      "tree": "1068d6ce508333a75668181bfe0e42956d4d8780",
      "parents": [
        "1fb58a6051cd904a9f8e0344b22e31921d6b5a4d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 11 16:11:19 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 19:23:48 2009 -0400"
      },
      "message": "Btrfs: make balance code choose more wisely when relocating\n\nCurrently, we can panic the box if the first block group we go to move is of a\ntype where there is no space left to move those extents.  For example, if we\nfill the disk up with data, and then we try to balance and we have no room to\nmove the data nor room to allocate new chunks, we will panic.  Change this by\nchecking to see if we have room to move this chunk around, and if not, return\n-ENOSPC and move on to the next chunk.  This will make sure we remove block\ngroups that are moveable, like if we have alot of empty metadata block groups,\nand then that way we make room to be able to balance our data chunks as well.\nTested this with an fs that would panic on btrfs-vol -b normally, but no longer\npanics with this patch.\n\nV1-\u003eV2:\n-actually search for a free extent on the device to make sure we can allocate a\nchunk if need be.\n\n-fix btrfs_shrink_device to make sure we actually try to relocate all the\nchunks, and then if we can\u0027t return -ENOSPC so if we are doing a btrfs-vol -r\nwe don\u0027t remove the device with data still on it.\n\n-check to make sure the block group we are going to relocate isn\u0027t the last one\nin that particular space\n\n-fix a bug in btrfs_shrink_device where we would change the device\u0027s size and\nnot fix it if we fail to do our relocate\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1fb58a6051cd904a9f8e0344b22e31921d6b5a4d",
      "tree": "2f8c1a89b3e4f119590e89cebe1a5be1a02f487a",
      "parents": [
        "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Sep 21 16:00:27 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:27 2009 -0400"
      },
      "message": "Btrfs: fix arithmetic error in clone ioctl\n\nFix an arithmetic error that was breaking extents cloned via the clone\nioctl starting in the second half of a file.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918",
      "tree": "f5ca46ec89d4ae2c762952d5f35e2c6f95ac046a",
      "parents": [
        "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "message": "Btrfs: add snapshot/subvolume destroy ioctl\n\nThis patch adds snapshot/subvolume destroy ioctl.  A subvolume that isn\u0027t being\nused and doesn\u0027t contains links to other subvolumes can be destroyed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9",
      "tree": "2008f348d28c6c19e31924ae4fb414ca929a01f1",
      "parents": [
        "13a8a7c8c47e542b3cdb45bec3f431f96af79361"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "message": "Btrfs: change how subvolumes are organized\n\nbtrfs allows subvolumes and snapshots anywhere in the directory tree.\nIf we snapshot a subvolume that contains a link to other subvolume\ncalled subvolA, subvolA can be accessed through both the original\nsubvolume and the snapshot. This is similar to creating hard link to\ndirectory, and has the very similar problems.\n\nThe aim of this patch is enforcing there is only one access point to\neach subvolume. Only the first directory entry (the one added when\nthe subvolume/snapshot was created) is treated as valid access point.\nThe first directory entry is distinguished by checking root forward\nreference. If the corresponding root forward reference is missing,\nwe know the entry is not the first one.\n\nThis patch also adds snapshot/subvolume rename support, the code\nallows rename subvolume link across subvolumes.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "13a8a7c8c47e542b3cdb45bec3f431f96af79361",
      "tree": "473f3cc94b4a93a0a5f6f19b1832ef2e6b7ecf62",
      "parents": [
        "1c4850e21df8b441164d910bc611ef46a01d5d75"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:56:00 2009 -0400"
      },
      "message": "Btrfs: do not reuse objectid of deleted snapshot/subvol\n\nThe new back reference format does not allow reusing objectid of\ndeleted snapshot/subvol. So we use ++highest_objectid to allocate\nobjectid for new snapshot/subvol.\n\nNow we use ++highest_objectid to allocate objectid for both new inode\nand new snapshot/subvolume, so this patch removes \u0027find hole\u0027 code in\nbtrfs_find_free_objectid.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1c4850e21df8b441164d910bc611ef46a01d5d75",
      "tree": "aeccbf3495421d1343bbe08cb824ac1ae6764e43",
      "parents": [
        "b917b7c3be50435fa8257591b964934e917f2d45"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 15:55:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 15:55:59 2009 -0400"
      },
      "message": "Btrfs: speed up snapshot dropping\n\nThis patch contains two changes to avoid unnecessary tree block reads during\nsnapshot dropping.\n\nFirst, check tree block\u0027s reference count and flags before reading the tree\nblock. if reference count \u003e 1 and there is no need to update backrefs, we can\navoid reading the tree block.\n\nSecond, save when snapshot was created in root_key.offset. we can compare block\npointer\u0027s generation with snapshot\u0027s creation generation during updating\nbackrefs. If a given block was created before snapshot was created, the\nsnapshot can\u0027t be the tree block\u0027s owner. So we can avoid reading the block.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b917b7c3be50435fa8257591b964934e917f2d45",
      "tree": "efdc2f768da474a4904dc6c065cc6e4b9a2379d3",
      "parents": [
        "f85d7d6c8f2ad4a86a1f4f4e3791f36dede2fa76"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:07:03 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:08:52 2009 -0400"
      },
      "message": "Btrfs: search for an allocation hint while filling file COW\n\nThe allocator has some nice knobs for sending hints about where\nto try and allocate new blocks, but when we\u0027re doing file allocations\nwe\u0027re not sending any hint at all.\n\nThis commit adds a simple extent map search to see if we can\nquickly and easily find a hint for the allocator.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f85d7d6c8f2ad4a86a1f4f4e3791f36dede2fa76",
      "tree": "40538328090b5eb2f3f95a9bc5a290c83384ff43",
      "parents": [
        "11833d66be94b514652466802100378046c16b72"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:03:16 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 18 16:08:46 2009 -0400"
      },
      "message": "Btrfs: properly honor wbc-\u003enr_to_write changes\n\nWhen btrfs fills a delayed allocation, it tries to increase\nthe wbc nr_to_write to cover a big part of allocation.  The\ntheory is that we\u0027re doing contiguous IO and writing a few\nmore blocks will save seeks overall at a very low cost.\n\nThe problem is that extent_write_cache_pages could ignore\nthe new higher nr_to_write if nr_to_write had already gone\ndown to zero.  We fix that by rechecking the nr_to_write\nfor every page that is processed in the pagevec.\n\nThis updates the math around bumping the nr_to_write value\nto make sure we don\u0027t leave a tiny amount of IO hanging\naround for the very end of a new extent.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "11833d66be94b514652466802100378046c16b72",
      "tree": "2b00b36d0aa42e9e10cecf3bf723eb70a607afec",
      "parents": [
        "6e74057c4686dc12ea767b4bdc50a63876056e1c"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Sep 11 16:11:19 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 17 15:47:36 2009 -0400"
      },
      "message": "Btrfs: improve async block group caching\n\nThis patch gets rid of two limitations of async block group caching.\nThe old code delays handling pinned extents when block group is in\ncaching. To allocate logged file extents, the old code need wait\nuntil block group is fully cached. To get rid of the limitations,\nThis patch introduces a data structure to track the progress of\ncaching. Base on the caching progress, we know which extents should\nbe added to the free space cache when handling the pinned extents.\nThe logged file extents are also handled in a similar way.\n\nThis patch also changes how pinned extents are tracked. The old\ncode uses one tree to track pinned extents, and copy the pinned\nextents tree at transaction commit time. This patch makes it use\ntwo trees to track pinned extents. One tree for extents that are\npinned in the running transaction, one tree for extents that can\nbe unpinned. At transaction commit time, we swap the two trees.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6e74057c4686dc12ea767b4bdc50a63876056e1c",
      "tree": "e7c70b8e08ab9e5363be28bcbcc72348122ae6e4",
      "parents": [
        "627e421a3f35ad6b52dc58982fb6f8a97c30dcd7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:02:33 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:20:17 2009 -0400"
      },
      "message": "Btrfs: Fix async thread shutdown race\n\nIt was possible for an async worker thread to be selected to\nreceive a new work item, but exit before the work item was\nactually placed into that thread\u0027s work list.\n\nThis commit fixes the race by incrementing the num_pending\ncounter earlier, and making sure to check the number of pending\nwork items before a thread exits.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "627e421a3f35ad6b52dc58982fb6f8a97c30dcd7",
      "tree": "9f1175835fe7b142b554fc66ea2367b7ec4ea1d3",
      "parents": [
        "3e99d8eb347c93a5d38081380b8c9e69b203212e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:00:36 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:20:17 2009 -0400"
      },
      "message": "Btrfs: fix worker thread double spin_lock_irq\n\nThe exit-on-idle code for async worker threads was incorrectly\ncalling spin_lock_irq with interrupts already off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3e99d8eb347c93a5d38081380b8c9e69b203212e",
      "tree": "1fde8df76b399c12827c2e2bd989e29e83d9994f",
      "parents": [
        "83ebade34bc1a90d0c3f77b87b940f336d075fda"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 19:57:42 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 15 20:20:16 2009 -0400"
      },
      "message": "Btrfs: fix async worker startup race\n\nAfter a new worker thread starts, it is placed into the\nlist of idle threads.  But, this may race with a\ncheck for idle done by the worker thread itself, resulting\nin a double list_add operation.\n\nThis fix adds a check to make sure the idle thread addition\nis done properly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "83ebade34bc1a90d0c3f77b87b940f336d075fda",
      "tree": "99b6366c52e6bec88119ae995399c985fc61e900",
      "parents": [
        "74fca6a42863ffacaf7ba6f1936a9f228950f657",
        "93c82d575055f1bd0277acae6f966bebafd80dd5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 19:07:25 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 19:07:25 2009 -0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n"
    },
    {
      "commit": "93c82d575055f1bd0277acae6f966bebafd80dd5",
      "tree": "4b059485eb226291dac336921b32653131b0dd43",
      "parents": [
        "50a9b214bc6c052caa05a210ebfc1bdf0d7085b2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:36:29 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:08 2009 -0400"
      },
      "message": "Btrfs: zero page past end of inline file items\n\nWhen btrfs_get_extent is reading inline file items for readpage,\nit needs to copy the inline extent into the page.  If the\ninline extent doesn\u0027t cover all of the page, that means there\nis a hole in the file, or that our file is smaller than one\npage.\n\nreadpage does zeroing for the case where the file is smaller than one\npage, but nobody is currently zeroing for the case where there is\na hole after the inline item.\n\nThis commit changes btrfs_get_extent to zero fill the page past\nthe end of the inline item.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "50a9b214bc6c052caa05a210ebfc1bdf0d7085b2",
      "tree": "c5ae2e6a99778f237bdc88eb7157f7c4a82a2e54",
      "parents": [
        "a1ed835e1ab5795f91b198d08c43e2f56848dcf3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:33:12 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:08 2009 -0400"
      },
      "message": "Btrfs: fix btrfs page_mkwrite to return locked page\n\nThis closes a whole where the page may be written before\nthe page_mkwrite caller has a chance to dirty it\n\n(thanks to Nick Piggin)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a1ed835e1ab5795f91b198d08c43e2f56848dcf3",
      "tree": "ac3b370823fa76c5be7698e3663306badbbd622d",
      "parents": [
        "8b62b72b26bcd72082c4a69d179dd906bcc22200"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 12:27:37 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: Fix extent replacment race\n\nData COW means that whenever we write to a file, we replace any old\nextent pointers with new ones.  There was a window where a readpage\nmight find the old extent pointers on disk and cache them in the\nextent_map tree in ram in the middle of a given write replacing them.\n\nEven though both the readpage and the write had their respective bytes\nin the file locked, the extent readpage inserts may cover more bytes than\nit had locked down.\n\nThis commit closes the race by keeping the new extent pinned in the extent\nmap tree until after the on-disk btree is properly setup with the new\nextent pointers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8b62b72b26bcd72082c4a69d179dd906bcc22200",
      "tree": "ceee20dfebe45654cb3a25d8916c195836cdbabf",
      "parents": [
        "9655d2982b53fdb38a9e0f2f11315b99b92d66e2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 16:53:46 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: Use PagePrivate2 to track pages in the data\u003dordered code.\n\nBtrfs writes go through delalloc to the data\u003dordered code.  This\nmakes sure that all of the data is on disk before the metadata\nthat references it.  The tracking means that we have to make sure\neach page in an extent is fully written before we add that extent into\nthe on-disk btree.\n\nThis was done in the past by setting the EXTENT_ORDERED bit for the\nrange of an extent when it was added to the data\u003dordered code, and then\nclearing the EXTENT_ORDERED bit in the extent state tree as each page\nfinished IO.\n\nOne of the reasons we had to do this was because sometimes pages are\nmagically dirtied without page_mkwrite being called.  The EXTENT_ORDERED\nbit is checked at writepage time, and if it isn\u0027t there, our page become\ndirty without going through the proper path.\n\nThese bit operations make for a number of rbtree searches for each page,\nand can cause considerable lock contention.\n\nThis commit switches from the EXTENT_ORDERED bit to use PagePrivate2.\nAs pages go into the ordered code, PagePrivate2 is set on each one.\nThis is a cheap operation because we already have all the pages locked\nand ready to go.\n\nAs IO finishes, the PagePrivate2 bit is cleared and the ordered\naccoutning is updated for each page.\n\nAt writepage time, if the PagePrivate2 bit is missing, we go into the\nwritepage fixup code to handle improperly dirtied pages.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9655d2982b53fdb38a9e0f2f11315b99b92d66e2",
      "tree": "e1271f2f2a3c2c356e0692b36a2d4742b5d651d8",
      "parents": [
        "d5550c6315fe0647b7ac21a6a736bf4a42620eac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 15:22:30 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:07 2009 -0400"
      },
      "message": "Btrfs: use a cached state for extent state operations during delalloc\n\nThis changes the btrfs code to find delalloc ranges in the extent state\ntree to use the new state caching code from set/test bit.  It reduces\none of the biggest causes of rbtree searches in the writeback path.\n\ntest_range_bit is also modified to take the cached state as a starting\npoint while searching.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d5550c6315fe0647b7ac21a6a736bf4a42620eac",
      "tree": "d1aeeee5ef7b04915dd6eb1c220b3e137ce4d9b3",
      "parents": [
        "2c64c53d8d30d43d0670482503a3914dfd3d6d46"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 15:11:07 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:06 2009 -0400"
      },
      "message": "Btrfs: don\u0027t lock bits in the extent tree during writepage\n\nAt writepage time, we have the page locked and we have the\nextent_map entry for this extent pinned in the extent_map tree.\nSo, the page can\u0027t go away and its mapping can\u0027t change.\n\nThere is no need for the extra extent_state lock bits during writepage.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2c64c53d8d30d43d0670482503a3914dfd3d6d46",
      "tree": "cfe7bfa8f5dc4078f8c995f305229622e25572b1",
      "parents": [
        "1edbb734b4e010974c41d2859d22a43d04f5f1cf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 15:04:12 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:06 2009 -0400"
      },
      "message": "Btrfs: cache values for locking extents\n\nMany of the btrfs extent state tree users follow the same pattern.\nThey lock an extent range in the tree, do some operation and then\nunlock.\n\nThis translates to at least 2 rbtree searches, and maybe more if they\nare doing operations on the extent state tree.  A locked extent\nin the tree isn\u0027t going to be merged or changed, and so we can\nsafely return the extent state structure as a cached handle.\n\nThis changes set_extent_bit to give back a cached handle, and also\nchanges both set_extent_bit and clear_extent_bit to use the cached\nhandle if it is available.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1edbb734b4e010974c41d2859d22a43d04f5f1cf",
      "tree": "4f43aea677f7206707540dd8622fa4cac099057a",
      "parents": [
        "e48c465bb366c0169f7908bfe62ae7080874ee7d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 13:24:36 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:06 2009 -0400"
      },
      "message": "Btrfs: reduce CPU usage in the extent_state tree\n\nBtrfs is currently mirroring some of the page state bits into\nits extent state tree.  The goal behind this was to use it in supporting\nblocksizes other than the page size.\n\nBut, we don\u0027t currently support that, and we\u0027re using quite a lot of CPU\non the rb tree and its spin lock.  This commit starts a series of\ncleanups to reduce the amount of work done in the extent state tree as\npart of each IO.\n\nThis commit:\n\n* Adds the ability to lock an extent in the state tree and also set\nother bits.  The idea is to do locking and delalloc in one call\n\n* Removes the EXTENT_WRITEBACK and EXTENT_DIRTY bits.  Btrfs is using\na combination of the page bits and the ordered write code for this\ninstead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e48c465bb366c0169f7908bfe62ae7080874ee7d",
      "tree": "016cf009f64964e692470612ebbfa538d6b4bc83",
      "parents": [
        "890871be854b5f5e43e7ba2475f706209906cc24"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 11:25:02 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:05 2009 -0400"
      },
      "message": "Btrfs: Fix new state initialization order\n\nAs the extent state tree is manipulated, there are call backs\nthat are used to take extra actions when different state bits are set\nor cleared.  One example of this is a counter for the total number\nof delayed allocation bytes in a single inode and in the whole FS.\n\nWhen new states are inserted, this callback is being done before we\nproperly setup the new state.  This hasn\u0027t caused problems before\nbecause the lock bit was always done first, and the existing call backs\ndon\u0027t care about the lock bit.\n\nThis patch makes sure the state is properly setup before using the\ncallback, which is important for later optimizations that do more work\nwithout using the lock bit.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "890871be854b5f5e43e7ba2475f706209906cc24",
      "tree": "9d087adf7a28bb910992d07d93ea2a992e394110",
      "parents": [
        "57fd5a5ff8b48b99e90b22fc143082aba755c6c0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Sep 02 16:24:52 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:05 2009 -0400"
      },
      "message": "Btrfs: switch extent_map to a rw lock\n\nThere are two main users of the extent_map tree.  The\nfirst is regular file inodes, where it is evenly spread\nbetween readers and writers.\n\nThe second is the chunk allocation tree, which maps blocks from\nlogical addresses to phyiscal ones, and it is 99.99% reads.\n\nThe mapping tree is a point of lock contention during heavy IO\nworkloads, so this commit switches things to a rw lock.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "57fd5a5ff8b48b99e90b22fc143082aba755c6c0",
      "tree": "8744002a9232d25a9ded597fa89c3f1b00ec410c",
      "parents": [
        "a97adc9fffb1707da4e97f91c801660c6be92aac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 09:59:15 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:05 2009 -0400"
      },
      "message": "Btrfs: tweak congestion backoff\n\nThe btrfs io submission thread tries to back off congested devices in\nfavor of rotating off to another disk.\n\nBut, it tries to make sure it submits at least some IO before rotating\non (the others may be congested too), and so it has a magic number of\nrequests it tries to write before it hops.\n\nThis makes the magic number smaller.  Testing shows that we\u0027re spending\ntoo much time on congested devices and leaving the other devices idle.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a97adc9fffb1707da4e97f91c801660c6be92aac",
      "tree": "9385c1ada9d5b86b75cd00865bacc6bc39deaa9d",
      "parents": [
        "4f878e8475a465ddbd951e06a23317303f1b5b30"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 09:28:20 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:04 2009 -0400"
      },
      "message": "Btrfs: use larger nr_to_write for larger extents\n\nWhen btrfs fills a large delayed allocation extent, it is a good idea\nto try and convince the write_cache_pages caller to go ahead and\nwrite a good chunk of that extent.  The extra IO is basically free\nbecause we know it is contiguous.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4f878e8475a465ddbd951e06a23317303f1b5b30",
      "tree": "7e1811794d3f6eaf455a3e26afd49ba06a0db554",
      "parents": [
        "4e3f9c5042b43301d70781aee4a164a20878066b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 07 09:27:38 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:04 2009 -0400"
      },
      "message": "Btrfs: reduce worker thread spin_lock_irq hold times\n\nThis changes the btrfs worker threads to batch work items\ninto a local list.  It allows us to pull work items in\nlarge chunks and significantly reduces the number of times we\nneed to take the worker thread spinlock.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4e3f9c5042b43301d70781aee4a164a20878066b",
      "tree": "b2ace00c27553ec2a10958e17d6b90ea264d5886",
      "parents": [
        "40431d6c1288793a682fc6f5e5b5c9d5cac34608"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 05 16:36:45 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:04 2009 -0400"
      },
      "message": "Btrfs: keep irqs on more often in the worker threads\n\nThe btrfs worker thread spinlock was being used both for the\nqueueing of IO and for the processing of ordered events.\n\nThe ordered events never happen from end_io handlers, and so they\ndon\u0027t need to use the _irq version of spinlocks.  This adds a\ndedicated lock to the ordered lists so they don\u0027t have to run\nwith irqs off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "40431d6c1288793a682fc6f5e5b5c9d5cac34608",
      "tree": "a840fb38459476ff0aecda8369f965c344a25562",
      "parents": [
        "9042846bc7ae69cc3288d85af6bad16208d93a95"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Aug 05 12:57:59 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:31:03 2009 -0400"
      },
      "message": "Btrfs: optimize set extent bit\n\nThe Btrfs set_extent_bit call currently searches the rbtree\nevery time it needs to find more extent_state objects to fill\nthe requested operation.\n\nThis adds a simple test with rb_next to see if the next object\nin the tree was adjacent to the one we just found.  If so,\nwe skip the search and just use the next object.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9042846bc7ae69cc3288d85af6bad16208d93a95",
      "tree": "d46077d217d31ce5600ef870c92fcdf330922b41",
      "parents": [
        "ceab36edd3d3ad3ffd01d41d6d1e05ac1ff8357e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 04 16:56:34 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 11 13:30:56 2009 -0400"
      },
      "message": "Btrfs: Allow worker threads to exit when idle\n\nThe Btrfs worker threads don\u0027t currently die off after they have\nbeen idle for a while, leading to a lot of threads sitting around\ndoing nothing for each mount.\n\nAlso, they are unable to start atomically (from end_io hanlders).\n\nThis commit reworks the worker threads so they can be started\nfrom end_io handlers (just setting a flag that asks for a thread\nto be added at a later date) and so they can exit if they\nhave been idle for a long time.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "74fca6a42863ffacaf7ba6f1936a9f228950f657",
      "tree": "5caecfdd9edab50789483eb96009e9faf5f1b241",
      "parents": [
        "7135a71b19be1faf48b7148d77844d03bc0717d6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 09 15:13:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 09 15:13:59 2009 -0700"
      },
      "message": "Linux 2.6.31\n"
    },
    {
      "commit": "7135a71b19be1faf48b7148d77844d03bc0717d6",
      "tree": "f1bed8d00c77c90423adc98559247459089c39f5",
      "parents": [
        "e6890f6f3dc2d9024a08b1a149d9bd5208eea350"
      ],
      "author": {
        "name": "Ed Cashin",
        "email": "ecashin@coraid.com",
        "time": "Wed Sep 09 14:10:18 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 09 14:10:18 2009 +0200"
      },
      "message": "aoe: allocate unused request_queue for sysfs\n\nAndy Whitcroft reported an oops in aoe triggered by use of an\nincorrectly initialised request_queue object:\n\n  [ 2645.959090] kobject \u0027\u003cNULL\u003e\u0027 (ffff880059ca22c0): tried to add\n\t\tan uninitialized object, something is seriously wrong.\n  [ 2645.959104] Pid: 6, comm: events/0 Not tainted 2.6.31-5-generic #24-Ubuntu\n  [ 2645.959107] Call Trace:\n  [ 2645.959139] [\u003cffffffff8126ca2f\u003e] kobject_add+0x5f/0x70\n  [ 2645.959151] [\u003cffffffff8125b4ab\u003e] blk_register_queue+0x8b/0xf0\n  [ 2645.959155] [\u003cffffffff8126043f\u003e] add_disk+0x8f/0x160\n  [ 2645.959161] [\u003cffffffffa01673c4\u003e] aoeblk_gdalloc+0x164/0x1c0 [aoe]\n\nThe request queue of an aoe device is not used but can be allocated in\ncode that does not sleep.\n\nBruno bisected this regression down to\n\n  cd43e26f071524647e660706b784ebcbefbd2e44\n\n  block: Expose stacked device queues in sysfs\n\n\"This seems to generate /sys/block/$device/queue and its contents for\n everyone who is using queues, not just for those queues that have a\n non-NULL queue-\u003erequest_fn.\"\n\nAddresses http://bugs.launchpad.net/bugs/410198\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d13942\n\nNote that embedding a queue inside another object has always been\nan illegal construct, since the queues are reference counted and\nmust persist until the last reference is dropped. So aoe was\nalways buggy in this respect (Jens).\n\nSigned-off-by: Ed Cashin \u003cecashin@coraid.com\u003e\nCc: Andy Whitcroft \u003capw@canonical.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Bruno Premont \u003cbonbons@linux-vserver.org\u003e\nCc: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e6890f6f3dc2d9024a08b1a149d9bd5208eea350",
      "tree": "8829fbb9f165ff37a37181bdf5cbbe92622bb5e6",
      "parents": [
        "7c8460db30dfd085ef3837c8fb02ecf2e718b983"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 17:09:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 17:09:24 2009 -0700"
      },
      "message": "i915: disable interrupts before tearing down GEM state\n\nReinette Chatre reports a frozen system (with blinking keyboard LEDs)\nwhen switching from graphics mode to the text console, or when\nsuspending (which does the same thing). With netconsole, the oops\nturned out to be\n\n\tBUG: unable to handle kernel NULL pointer dereference at 0000000000000084\n\tIP: [\u003cffffffffa03ecaab\u003e] i915_driver_irq_handler+0x26b/0xd20 [i915]\n\nand it\u0027s due to the i915_gem.c code doing drm_irq_uninstall() after\nhaving done i915_gem_idle(). And the i915_gem_idle() path will do\n\n  i915_gem_idle() -\u003e\n    i915_gem_cleanup_ringbuffer() -\u003e\n      i915_gem_cleanup_hws() -\u003e\n        dev_priv-\u003ehw_status_page \u003d NULL;\n\nbut if an i915 interrupt comes in after this stage, it may want to\naccess that hw_status_page, and gets the above NULL pointer dereference.\n\nAnd since the NULL pointer dereference happens from within an interrupt,\nand with the screen still in graphics mode, the common end result is\nsimply a silently hung machine.\n\nFix it by simply uninstalling the irq handler before idling rather than\nafter. Fixes\n\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d13819\n\nReported-and-tested-by: Reinette Chatre \u003creinette.chatre@intel.com\u003e\nAcked-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c8460db30dfd085ef3837c8fb02ecf2e718b983",
      "tree": "41e501901dc47cde4fc2c61477a6e9b63b286971",
      "parents": [
        "3ff323f89075624b6891e7c428edb8e8a35be13c"
      ],
      "author": {
        "name": "Zhenyu Wang",
        "email": "zhenyuw@linux.intel.com",
        "time": "Tue Sep 08 14:52:25 2009 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 08 10:16:20 2009 -0700"
      },
      "message": "drm/i915: fix mask bits setting\n\neDP is exclusive connector too, and add missing crtc_mask\nsetting for TV.\n\nThis fixes\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d14139\n\nSigned-off-by: Zhenyu Wang \u003czhenyuw@linux.intel.com\u003e\nReported-and-tested-by: Carlos R. Mafra \u003ccrmafra2@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ff323f89075624b6891e7c428edb8e8a35be13c",
      "tree": "24cbade6cffecfe334fd7d385b8731f7d999bfaf",
      "parents": [
        "755ae761c5519929a97567d61a379b87352c337c",
        "a54775c8758a754186bc6adbfc518b1e9f8f1e4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:42:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:42:25 2009 -0700"
      },
      "message": "Merge branch \u0027drm-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:\n  drm/radeon/kms: add LTE/GTE discard + rv515 two sided stencil register.\n"
    },
    {
      "commit": "755ae761c5519929a97567d61a379b87352c337c",
      "tree": "6942ac77009d3cab1acf6e6bea8cc339368423a9",
      "parents": [
        "4886b5b485ec78fe4a16fedaccfab39bdf55410f",
        "acd0c935178649f72c44ec49ca83bee35ce1f79e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:41:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:41:15 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:\n  IMA: update ima_counts_put\n"
    },
    {
      "commit": "4886b5b485ec78fe4a16fedaccfab39bdf55410f",
      "tree": "3946e0e444311245db5248bac6658e9b8082f269",
      "parents": [
        "cbeb2864b162f4298111196c8ce8ce492577cdee",
        "d9d8e0418ffd3d189345c435861e254c17ae06e5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:24 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  gianfar: Fix build.\n"
    },
    {
      "commit": "cbeb2864b162f4298111196c8ce8ce492577cdee",
      "tree": "0ddc68c3c1231a38955d7fca71a28cfc43eb0996",
      "parents": [
        "f69fb9c39868463f6b0b8306824341bd5610250b",
        "c9a2bfd1f08973115c2fc3da9372e0e81ac42a19"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:40:15 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6:\n  pcmcia: add CNF-CDROM-ID for ide\n"
    },
    {
      "commit": "f69fb9c39868463f6b0b8306824341bd5610250b",
      "tree": "7ab396e5185772342bdf8a50e6dfb56ff0cd1f64",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db",
        "07fb6111e7af5fac6b6076e2658d0e32b67f713b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:38:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 07 11:38:30 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel:\n  agp/intel: support for new chip variant of IGDNG mobile\n  drm/i915: Unref old_obj on get_fence_reg() error path\n  drm/i915: increase default latency constant (v2 w/comment)\n"
    },
    {
      "commit": "a54775c8758a754186bc6adbfc518b1e9f8f1e4e",
      "tree": "bc351c6ae28e059132b66f8149a8a9d1b2be088a",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Sep 07 15:26:19 2009 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Sep 07 15:26:19 2009 +1000"
      },
      "message": "drm/radeon/kms: add LTE/GTE discard + rv515 two sided stencil register.\n\nThis adds some rv350+ register for LTE/GTE discard,\nand enables the rv515 two sided stencil register.\nIt also disables the DEPTHXY_OFFSET register which\ncan be used to workaround the CS checker.\nMoves rs690 to proper place in rs600 and uses correct\ntable on rs600.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "acd0c935178649f72c44ec49ca83bee35ce1f79e",
      "tree": "c0cb2f8fbbaa54567785b5430e5be8c8b51f5724",
      "parents": [
        "e07cccf4046978df10f2e13fe2b99b2f9b3a65db"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Fri Sep 04 13:08:46 2009 -0400"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Mon Sep 07 11:54:58 2009 +1000"
      },
      "message": "IMA: update ima_counts_put\n\n- As ima_counts_put() may be called after the inode has been freed,\nverify that the inode is not NULL, before dereferencing it.\n\n- Maintain the IMA file counters in may_open() properly, decrementing\nany counter increments on subsequent errors.\n\nReported-by: Ciprian Docan \u003cdocan@eden.rutgers.edu\u003e\nReported-by: J.R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "d9d8e0418ffd3d189345c435861e254c17ae06e5",
      "tree": "ee97d40fa4ccfd3c802e6844b3d38097ff7a6c7a",
      "parents": [
        "16ebb5e0b36ceadc8186f71d68b0c4fa4b6e781b"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 06 01:41:02 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 06 01:41:24 2009 -0700"
      },
      "message": "gianfar: Fix build.\n\nReported by Michael Guntsche \u003cmike@it-loops.com\u003e\n\n--------------------\nCommit\n38bddf04bcfe661fbdab94888c3b72c32f6873b3 gianfar: gfar_remove needs to call unregister_netdev()\n\nbreaks the build of the gianfar driver because \"dev\" is undefined in\nthis function. To quickly test rc9 I changed this to priv-\u003endev but I do\nnot know if this is the correct one.\n--------------------\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e07cccf4046978df10f2e13fe2b99b2f9b3a65db",
      "tree": "086f3d6b72cb6b70ba451c78b8147231d54219c3",
      "parents": [
        "f815c335d21f9965f8dbe142fd168aaba1baf98e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 16:38:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 16:38:12 2009 -0700"
      },
      "message": "Linux 2.6.31-rc9\n"
    },
    {
      "commit": "f815c335d21f9965f8dbe142fd168aaba1baf98e",
      "tree": "4e9a65b7810de10141595125cc65f2b0e7533dfc",
      "parents": [
        "74a01180db4bbfd61304ae0ba1f60af55ffc803d",
        "baed6b82d9f160184c1c14cdb4accb08f3eb6b87"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:59:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:59:00 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:\n  firewire: sbp2: fix freeing of unallocated memory\n  firewire: ohci: fix Ricoh R5C832, video reception\n  firewire: ohci: fix Agere FW643 and multiple cameras\n  firewire: core: fix crash in iso resource management\n"
    },
    {
      "commit": "74a01180db4bbfd61304ae0ba1f60af55ffc803d",
      "tree": "2f61aac8deb306a164f04a7d2753fbd723c906fc",
      "parents": [
        "5136a6c0fd5b26bbf39ad761cf7a4fc563ad83a3"
      ],
      "author": {
        "name": "Roderick Colenbrander",
        "email": "thunderbird2k@gmail.com",
        "time": "Thu Sep 03 09:57:23 2009 -0600"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:58:07 2009 -0700"
      },
      "message": "powerpc: Fix i8259 interrupt driver kernel crash on ML510\n\nThis patch fixes a null pointer exception caused by removal of\n\u0027ack()\u0027 for level interrupts in the Xilinx interrupt driver.  A recent\nchange to the xilinx interrupt controller removed the ack hook for\nlevel irqs.\n\nSigned-off-by: Roderick Colenbrander \u003cthunderbird2k@gmail.com\u003e\nSigned-off-by: Grant Likely \u003cgrant.likely@secretlab.ca\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5136a6c0fd5b26bbf39ad761cf7a4fc563ad83a3",
      "tree": "7c905238cb2c5c9cd959cd652010b0eaf5f91db3",
      "parents": [
        "e505a8d5f96a84f3043ce0c4eaee8f045996896c",
        "bc8cec0dff072f1a45ce7f6b2c5234bb3411ac51"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:57:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:57:04 2009 -0700"
      },
      "message": "Merge git://git.infradead.org/~dwmw2/mtd-2.6.31\n\n* git://git.infradead.org/~dwmw2/mtd-2.6.31:\n  JFFS2: add missing verify buffer allocation/deallocation\n  mtd: nftl: fix offset alignments\n  mtd: nftl: write support is broken\n  mtd: m25p80: fix null pointer dereference bug\n"
    },
    {
      "commit": "e505a8d5f96a84f3043ce0c4eaee8f045996896c",
      "tree": "622b5b817b9434b114d7015dbd3d8c83198fe350",
      "parents": [
        "b71b7dc09abaeb4417c37b96a898096286b65e3c",
        "c295fc05789653ef24f296299df7c5f92fe74dce"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:56:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:56:13 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: Allow changing max_sectors_kb above the default 512\n"
    },
    {
      "commit": "b71b7dc09abaeb4417c37b96a898096286b65e3c",
      "tree": "548585e8e26281f9602d61e04bf4d2c1f4078b5a",
      "parents": [
        "59430c2f437767094298f30dd02ca038da0df755",
        "92653453c3015c083b9fe0ad48261c6b2267d482"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:55:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:55:30 2009 -0700"
      },
      "message": "Merge branch \u0027fix/oxygen\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6\n\n* \u0027fix/oxygen\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:\n  sound: oxygen: handle cards with missing EEPROM\n  sound: oxygen: fix MCLK rate for 192 kHz playback\n"
    },
    {
      "commit": "59430c2f437767094298f30dd02ca038da0df755",
      "tree": "3c79740e3580e403df02daafba26fa6e67552c16",
      "parents": [
        "e9ee3a54a164c249a0a576c403eba367a6d97be5",
        "16ebb5e0b36ceadc8186f71d68b0c4fa4b6e781b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:52:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:52:41 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  tc: Fix unitialized kernel memory leak\n  pkt_sched: Revert tasklet_hrtimer changes.\n  net: sk_free() should be allowed right after sk_alloc()\n  gianfar: gfar_remove needs to call unregister_netdev()\n  ipw2200: firmware DMA loading rework\n"
    },
    {
      "commit": "e9ee3a54a164c249a0a576c403eba367a6d97be5",
      "tree": "bd1200f8d3c7481aa152cbb277fb79e181bb34fd",
      "parents": [
        "3bb314f01c189f0c48c0946424955c6d8ddce3d8",
        "0c7d400fafaeab6014504a6a6249f01bac7f7db4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:45 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:\n  crypto: skcipher - Fix skcipher_dequeue_givcrypt NULL test\n"
    },
    {
      "commit": "3bb314f01c189f0c48c0946424955c6d8ddce3d8",
      "tree": "d0de7369247689f009c2e0f3fb3bd121555efce1",
      "parents": [
        "535e0c1726bec699a8f0f5b86fe7d399546b2555",
        "ce6c3997c2fce74d12e6d8887a1d8cdf024fa850"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:51:24 2009 -0700"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:\n  [CPUFREQ] Re-enable cpufreq suspend and resume code\n"
    },
    {
      "commit": "535e0c1726bec699a8f0f5b86fe7d399546b2555",
      "tree": "9aa71d6908e4255b5a864cdae14ef164dea66665",
      "parents": [
        "0edfa2b1b5a5e1475e76dd3c792447687d966de4",
        "5afe18d2f58812f3924edbd215464e5e3e8545e7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:50:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:50:53 2009 -0700"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:\n  [IA64] fix csum_ipv6_magic()\n  [IA64] Fix warning in dma-mapping.c\n"
    },
    {
      "commit": "0edfa2b1b5a5e1475e76dd3c792447687d966de4",
      "tree": "a811a6955bb0fffc883e59eb261206b132e9e6dc",
      "parents": [
        "5a09adf13067609d8ab9fcae11dc99fd0084e35c",
        "3725867dccfb83e4b0cff64e916a04258f300591"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:25:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:25:14 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: actually enable the swapext compat handler\n"
    },
    {
      "commit": "5a09adf13067609d8ab9fcae11dc99fd0084e35c",
      "tree": "be2908bf2a8a20e9bebb4a064611ca5c2e2977f9",
      "parents": [
        "931f70350e9c298887c78e852d179ef7efcce304",
        "b1f1b8ce0a1d71cbc72f7540134d52b79bd8f5ac"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:24:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:24:33 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:\n  nilfs2: fix preempt count underflow in nilfs_btnode_prepare_change_key\n"
    },
    {
      "commit": "931f70350e9c298887c78e852d179ef7efcce304",
      "tree": "7d909970a9ac85c3a7b6c460330591f26bdb1dcd",
      "parents": [
        "e305fc5ecd6420fadec5a8108852081fa2b89a17",
        "04a13c7c632e1fe04a5f6e6c83565d2559e37598"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:22:00 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 14:22:00 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: don\u0027t assume existence of cpu0\n"
    },
    {
      "commit": "e305fc5ecd6420fadec5a8108852081fa2b89a17",
      "tree": "0f80db8fba1b7d285814f7a16046ae84f6909147",
      "parents": [
        "154f807e55977de75b1c12197c13ae14c28397b3",
        "d76b1590e06a63a3d8697168cd0aabf1c4b3cb3a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:57:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:57:53 2009 -0700"
      },
      "message": "Merge branch \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027slab/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  slub: Fix kmem_cache_destroy() with SLAB_DESTROY_BY_RCU\n"
    },
    {
      "commit": "154f807e55977de75b1c12197c13ae14c28397b3",
      "tree": "5ff5a220e4d3080275ce4921e28ef02f374ed5f7",
      "parents": [
        "9b6a3df372f0318bb0ffe37ac5f4610fb9bdb44d",
        "ae0b7448e91353ea5f821601a055aca6b58042cd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:51:07 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:51:07 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:\n  dm snapshot: fix on disk chunk size validation\n  dm exception store: split set_chunk_size\n  dm snapshot: fix header corruption race on invalidation\n  dm snapshot: refactor zero_disk_area to use chunk_io\n  dm log: userspace add luid to distinguish between concurrent log instances\n  dm raid1: do not allow log_failure variable to unset after being set\n  dm log: remove incorrect field from userspace table output\n  dm log: fix userspace status output\n  dm stripe: expose correct io hints\n  dm table: add more context to terse warning messages\n  dm table: fix queue_limit checking device iterator\n  dm snapshot: implement iterate devices\n  dm multipath: fix oops when request based io fails when no paths\n"
    },
    {
      "commit": "9b6a3df372f0318bb0ffe37ac5f4610fb9bdb44d",
      "tree": "88b76c84a21927acffd02f556764c4be33258bce",
      "parents": [
        "d3acd16cda3a1cbaff7c579c0e054f0ece613d14",
        "6faf17f6f1ffc586d16efc2f9fa2083a7785ee74"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:50:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Sep 05 13:50:46 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:\n  PCI SR-IOV: correct broken resource alignment calculations\n"
    }
  ],
  "next": "d3acd16cda3a1cbaff7c579c0e054f0ece613d14"
}
