)]}'
{
  "log": [
    {
      "commit": "5500cdbe14d7435e04f66ff3cfb8ecd8b8e44ebf",
      "tree": "e09399d4a56fcbad38765fd24c7c6e8782f438de",
      "parents": [
        "506531905296d6aee84480c879b25ea98c3f9db6"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 23 10:49:04 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:49:04 2012 -0500"
      },
      "message": "Btrfs: increase the global block reserve estimates\n\nWhen doing IO with large amounts of data fragmentation, the global block\nreserve calulations are too low.  This increases them to avoid\nENOSPC crashes.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "506531905296d6aee84480c879b25ea98c3f9db6",
      "tree": "18549bd9c5724e1517b5497881adc000f21349fc",
      "parents": [
        "16780cabb877dbd0c8c5e9ff9bdebd6c5bdd1a7b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 22 12:36:24 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:43:45 2012 -0500"
      },
      "message": "Btrfs: clear the extent uptodate bits during parent transid failures\n\nIf btrfs reads a block and finds a parent transid mismatch, it clears\nthe uptodate flags on the extent buffer, and the pages inside it.  But\nwe only clear the uptodate bits in the state tree if the block straddles\nmore than one page.\n\nThis is from an old optimization from to reduce contention on the extent\nstate tree.  But it is buggy because the code that retries a read from\na different copy of the block is going to find the uptodate state bits\nset and skip the IO.\n\nThe end result of the bug is that we\u0027ll never actually read the good\ncopy (if there is one).\n\nThe fix here is to always clear the uptodate state bits, which is safe\nbecause this code is only called when the parent transid fails.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "16780cabb877dbd0c8c5e9ff9bdebd6c5bdd1a7b",
      "tree": "d244896098a1e8dfd23403a335315a4b822c95d3",
      "parents": [
        "a6b0d5c8dbfd428717fc4db4c36757783f391c7b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 20 22:14:55 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:43:45 2012 -0500"
      },
      "message": "Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a6b0d5c8dbfd428717fc4db4c36757783f391c7b",
      "tree": "fc3faaed8b1cf93c7dbe60af4c950be5edd9c8ad",
      "parents": [
        "fe66a05a06795bd3b788404d69ea7709f46a1609"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 20 20:53:43 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:43:45 2012 -0500"
      },
      "message": "Btrfs: make sure we update latest_bdev\n\nWhen we are setting up the mount, we close all the\ndevices that were not actually part of the metadata we found.\n\nBut, we don\u0027t make sure that one of those devices wasn\u0027t\nfs_devices-\u003elatest_bdev, which means we can do a use after free\non the one we closed.\n\nThis updates latest_bdev as it goes.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fe66a05a06795bd3b788404d69ea7709f46a1609",
      "tree": "8d576c0c69ef44a253370bbec135efe2477d18d2",
      "parents": [
        "692e5759a43b916f0b66bcb39b2957499992381e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 20 08:40:56 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:43:45 2012 -0500"
      },
      "message": "Btrfs: improve error handling for btrfs_insert_dir_item callers\n\nThis allows us to gracefully continue if we aren\u0027t able to insert\ndirectory items, both for normal files/dirs and snapshots.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "692e5759a43b916f0b66bcb39b2957499992381e",
      "tree": "b3e1ea148b1702c63ccca95712d7cad2bb35a1ea",
      "parents": [
        "d9b0218f6cb682aa6a4ada2bfc5a25fdf3018563"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 16 18:34:36 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Feb 21 16:02:10 2012 +0100"
      },
      "message": "Btrfs: be less strict on finding next node in clear_extent_bit\n\nIn clear_extent_bit, it is enough that next node is adjacent in tree level.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "d9b0218f6cb682aa6a4ada2bfc5a25fdf3018563",
      "tree": "ea325470025698b1f9bfd8ff034d0d54ee89bb59",
      "parents": [
        "9d47c7671dc555e198c7347a173ed37316e0c4c1"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 16 18:34:39 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:18 2012 +0100"
      },
      "message": "Btrfs: fix a bug on overcommit stuff\n\nWhen overcommitting, we should check the sum of pinned space and\nbytes for delayed item.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "9d47c7671dc555e198c7347a173ed37316e0c4c1",
      "tree": "4a24af02762bf4eb05f936dd8f210430fefc9d17",
      "parents": [
        "0449314a9cc5a7fb0bd42e2175a3c46f68f3a2b0"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 16 18:34:38 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:17 2012 +0100"
      },
      "message": "Btrfs: kick out redundant stuff in convert_extent_bit\n\nclear_state_bit will do merge_state for us, so kick out the redundant one.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "0449314a9cc5a7fb0bd42e2175a3c46f68f3a2b0",
      "tree": "8c651bb7aad7c0529098c46b2dca9a7f02a282f9",
      "parents": [
        "285190d99fef696ec8b0041787387f013cb71d67"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 16 18:34:37 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:17 2012 +0100"
      },
      "message": "Btrfs: skip states when they does not contain bits to clear\n\nClearing a range\u0027s bits is different with setting them, since we don\u0027t\nneed to touch them when states do not contain bits we want.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "285190d99fef696ec8b0041787387f013cb71d67",
      "tree": "d55c5e3f71718cb21f9349280fb160d0403d082d",
      "parents": [
        "600a45e1d5e376f679ff9ecc4ce9452710a6d27c"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Feb 16 16:23:58 2012 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:17 2012 +0100"
      },
      "message": "Btrfs: check return value of lookup_extent_mapping() correctly\n\nThis patch corrects error checking of lookup_extent_mapping().\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "600a45e1d5e376f679ff9ecc4ce9452710a6d27c",
      "tree": "c4bf84eee1db132b5ff18700b95da8426a909f2f",
      "parents": [
        "013bd4c336ad0d30e9e41f9cff0dbc1858934e75"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Feb 16 15:01:24 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:16 2012 +0100"
      },
      "message": "Btrfs: fix deadlock on page lock when doing auto-defragment\n\nWhen I ran xfstests circularly on a auto-defragment btrfs, the deadlock\nhappened.\n\nSteps to reproduce:\n[tty0]\n # export MOUNT_OPTIONS\u003d\"-o autodefrag\"\n # export TEST_DEV\u003d\u003cpartition1\u003e\n # export TEST_DIR\u003d\u003cmountpoint1\u003e\n # export SCRATCH_DEV\u003d\u003cpartition2\u003e\n # export SCRATCH_MNT\u003d\u003cmountpoint2\u003e\n # while [ 1 ]\n \u003e do\n \u003e ./check 091 127 263\n \u003e sleep 1\n \u003e done\n[tty1]\n # while [ 1 ]\n \u003e do\n \u003e echo 3 \u003e /proc/sys/vm/drop_caches\n \u003e done\n\nSeveral hours later, the test processes will hang on, and the deadlock will\nhappen on page lock.\n\nThe reason is that:\n  Auto defrag task\t\tFlush thread\t\t\tTest task\n\t\t\t\tbtrfs_writepages()\n\t\t\t\t  add ordered extent\n\t\t\t\t  (including page 1, 2)\n\t\t\t\t  set page 1 writeback\n\t\t\t\t  set page 2 writeback\n\t\t\t\tendio_fn()\n\t\t\t\t  end page 2 writeback\n\t\t\t\t\t\t\t\trelease page 2\nlock page 1\nalloc and lock page 2\npage 2 is not uptodate\n  btrfs_readpage()\n    start ordered extent()\n    btrfs_writepages()\n      try  to lock page 1\n\nso deadlock happens.\n\nFix this bug by unlocking the page which is in writeback, and re-locking it\nafter the writeback end.\n\nSigned-off-by: Miao Xie \u003cmiax@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "013bd4c336ad0d30e9e41f9cff0dbc1858934e75",
      "tree": "f605d1160c95e3e82016ca8a81e6e1c3af2b7cba",
      "parents": [
        "12fc9d0923ca70ae8960bccebac09d5c12f8c4d4"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Feb 16 10:11:40 2012 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:16 2012 +0100"
      },
      "message": "Btrfs: fix return value check of extent_io_ops\n\nThis patch adds the check on the return value of extent_io_ops.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "12fc9d0923ca70ae8960bccebac09d5c12f8c4d4",
      "tree": "996a0e13d8e15e374144fa4f3d15680e0eada5b1",
      "parents": [
        "8a3344269465b26761b74493cfbeeaa75d821614"
      ],
      "author": {
        "name": "Florian Albrechtskirchinger",
        "email": "falbrechtskirchinger@gmail.com",
        "time": "Fri Feb 10 22:15:54 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 16:35:41 2012 +0100"
      },
      "message": "btrfs: honor umask when creating subvol root\n\nSet the subvol root inode permissions based on the current umask.\n"
    },
    {
      "commit": "8a3344269465b26761b74493cfbeeaa75d821614",
      "tree": "31dbc7d96441b95825c70073c769fc7b3f674a75",
      "parents": [
        "c08782dacd7a098f2b8bca7f4a57a5b402e9e1e5"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Fri Oct 07 18:06:13 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:25 2012 +0100"
      },
      "message": "btrfs: silence warning in raid array setup\n\nRaid array setup code creates an extent buffer in an usual way. When the\nPAGE_CACHE_SIZE is \u003e super block size, the extent pages are not marked\nup-to-date, which triggers a WARN_ON in the following\nwrite_extent_buffer call. Add an explicit up-to-date call to silence the\nwarning.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "c08782dacd7a098f2b8bca7f4a57a5b402e9e1e5",
      "tree": "f86a4875ac874cd3ddd0cc2eae85701e87105a72",
      "parents": [
        "87826df0ec36fc28884b4ddbb3f3af41c4c2008f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:25 2012 +0100"
      },
      "message": "btrfs: fix structs where bitfields and spinlock/atomic share 8B word\n\nOn ia64, powerpc64 and sparc64 the bitfield is modified through a RMW cycle and current\ngcc rewrites the adjacent 4B word, which in case of a spinlock or atomic has\ndisaterous effect.\n\nhttps://lkml.org/lkml/2012/2/1/220\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "87826df0ec36fc28884b4ddbb3f3af41c4c2008f",
      "tree": "7d95bf1ff03c82805903330a279a67642be68699",
      "parents": [
        "a7e221e9002306a753d6f78b4060edabce402033"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Wed Feb 15 16:23:57 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:25 2012 +0100"
      },
      "message": "btrfs: delalloc for page dirtied out-of-band in fixup worker\n\n We encountered an issue that was easily observable on s/390 systems but\n could really happen anywhere. The timing just seemed to hit reliably\n on s/390 with limited memory.\n\n The gist is that when an unexpected set_page_dirty() happened, we\u0027d\n run into the BUG() in btrfs_writepage_fixup_worker since it wasn\u0027t\n properly set up for delalloc.\n\n This patch does the following:\n - Performs the missing delalloc in the fixup worker\n - Allow the start hook to return -EBUSY which informs __extent_writepage\n   that it should mark the page skipped and not to redirty it. This is\n   required since the fixup worker can fail with -ENOSPC and the page\n   will have already been redirtied. That causes an Oops in\n   drop_outstanding_extents later. Retrying the fixup worker could\n   lead to an infinite loop. Deferring the page redirty also saves us\n   some cycles since the page would be stuck in a resubmit-redirty loop\n   until the fixup worker completes. It\u0027s not harmful, just wasteful.\n - If the fixup worker fails, we mark the page and mapping as errored,\n   and end the writeback, similar to what we would do had the page\n   actually been submitted to writeback.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "a7e221e9002306a753d6f78b4060edabce402033",
      "tree": "0b69be576f3cbbb5fe24a4f9e57dcbda57f2ccb1",
      "parents": [
        "859acaf1a29bbacf6256f1159210c8d6df992b33"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Feb 14 17:12:23 2012 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:24 2012 +0100"
      },
      "message": "Btrfs: fix memory leak in load_free_space_cache()\n\nload_free_space_cache() has forgotten to free path.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "859acaf1a29bbacf6256f1159210c8d6df992b33",
      "tree": "0e08eca0d031161762623049076a5bf3bf1186c0",
      "parents": [
        "2cac13e41bf5b99ffc426bd28dfd2248df1dfa67"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu Feb 09 15:09:02 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:24 2012 +0100"
      },
      "message": "btrfs: don\u0027t check DUP chunks twice\n\nBecause scrub enumerates the dev extent tree to find the chunks to scrub,\nit currently finds each DUP chunk twice and also scrubs it twice. This\npatch makes sure that scrub_chunk only checks that part of the chunk the\ndev extent has been found for. This only changes the behaviour for DUP\nchunks.\n\nReported-and-tested-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "2cac13e41bf5b99ffc426bd28dfd2248df1dfa67",
      "tree": "b74e7e863b7d7c2e116dc6754d8faf701c0aa3c9",
      "parents": [
        "6af021d8fc3bcce790e7fbb391e39c5920fa3f71"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 09 18:17:41 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:23 2012 +0100"
      },
      "message": "Btrfs: fix trim 0 bytes after a device delete\n\nA user reported a bug of btrfs\u0027s trim, that is we will trim 0 bytes\nafter a device delete.\n\nThe reproducer:\n\n$ mkfs.btrfs disk1\n$ mkfs.btrfs disk2\n$ mount disk1 /mnt\n$ fstrim -v /mnt\n$ btrfs device add disk2 /mnt\n$ btrfs device del disk1 /mnt\n$ fstrim -v /mnt\n\nThis is because after we delete the device, the block group may start from\na non-zero place, which will confuse trim to discard nothing.\n\nReported-by: Lutz Euler \u003clutz.euler@freenet.de\u003e\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "6af021d8fc3bcce790e7fbb391e39c5920fa3f71",
      "tree": "9b3e3f49627aed11fa3105c469b1719c71a39636",
      "parents": [
        "8f24b49688281a77e8331894ed407f0cfe732303"
      ],
      "author": {
        "name": "Jeff Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Thu Feb 09 14:25:50 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:23 2012 +0100"
      },
      "message": "Btrfs: return the internal error unchanged if btrfs_get_extent_fiemap() call failed for SEEK_DATA/SEEK_HOLE inquiry\n\nGiven that ENXIO only means \"offset beyond EOF\" for either SEEK_DATA or SEEK_HOLE inquiry\nin a desired file range, so we should return the internal error unchanged if btrfs_get_extent_fiemap()\ncall failed, rather than ENXIO.\n\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\n"
    },
    {
      "commit": "8f24b49688281a77e8331894ed407f0cfe732303",
      "tree": "22d5c69f57713ee25a4a3e38404d675c488a91cf",
      "parents": [
        "941b2ddf71987ef369389517a7e215dd505fe01e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Feb 08 16:01:01 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:23 2012 +0100"
      },
      "message": "Btrfs: avoid positive number with ERR_PTR\n\ninode_ref_info() returns 1 when the element wasn\u0027t found and \u003c 0 on error,\njust like btrfs_search_slot(). In iref_to_path() it\u0027s an error when the\ninode ref can\u0027t be found, thus we return ERR_PTR(ret) in that case. In order\nto avoid ERR_PTR(1), we now set ret to -ENOENT in that case.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "941b2ddf71987ef369389517a7e215dd505fe01e",
      "tree": "c41936dbc4201d118cc145265d0343e3b93d46f6",
      "parents": [
        "d98456fcafa6f3fd1985f9b7429aaa3531c6bfa0"
      ],
      "author": {
        "name": "Keith Mannthey",
        "email": "kmannth@us.ibm.com",
        "time": "Tue Nov 29 17:44:12 2011 -0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:22 2012 +0100"
      },
      "message": "btrfs: Sector Size check during Mount\n\nGracefully fail when trying to mount a BTRFS file system that has a\nsectorsize smaller than PAGE_SIZE.\n\nOn PPC it is possible to build a FS while using a 4k PAGE_SIZE kernel\nthen boot into a 64K PAGE_SIZE kernel.  Presently open_ctree fails in an\nendless loop and hangs the machine in this situation.\n\nMy debugging has show this Sector size \u003c Page size to be a non trivial\nsituation and a graceful exit from the situation would be nice for the\ntime being.\n\nSigned-off-by: Keith Mannthey \u003ckmannth@us.ibm.com\u003e\n"
    },
    {
      "commit": "d98456fcafa6f3fd1985f9b7429aaa3531c6bfa0",
      "tree": "7cf01b839f68a612b8d612e7eb6315955f792d73",
      "parents": [
        "9998eb703490589c3e8f1bf09b15203156776edb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 31 20:27:41 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 31 20:27:41 2012 -0500"
      },
      "message": "Btrfs: don\u0027t reserve data with extents locked in btrfs_fallocate\n\nbtrfs_fallocate tries to allocate space only if ranges in the file don\u0027t\nalready exist.  But the enospc checks it does are not allowed with\nextents locked.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9998eb703490589c3e8f1bf09b15203156776edb",
      "tree": "5d01f0e7efae049b9be80292c93fe30f11eeefd1",
      "parents": [
        "9b23062840e7c685ef0a0b561285d6e3a3b6811b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 25 13:47:40 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 27 10:44:44 2012 -0500"
      },
      "message": "Btrfs: fix reservations in btrfs_page_mkwrite\n\nJosef fixed btrfs_page_mkwrite to properly release reserved\nextents if there was an error.  But if we fail to get a reservation\nand we fail to dirty the inode (for ENOSPC reasons), we\u0027ll end up\ntrying to release a reservation we never had.\n\nThis makes sure we only release if we were able to reserve.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9b23062840e7c685ef0a0b561285d6e3a3b6811b",
      "tree": "47c00ad85dced3c4712b03de926b77c4aad99a77",
      "parents": [
        "0c4e538bccc106872d31b1514570b4dac95fb7f2"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "Btrfs: advance window_start if we\u0027re using a bitmap\n\nIf we span a long area in a bitmap we could end up taking a lot of time\nsearching to the next free area if we\u0027re searching from the original\nwindow_start, so advance window_start in order to make sure we don\u0027t do any\nsuperficial searching.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0c4e538bccc106872d31b1514570b4dac95fb7f2",
      "tree": "094ecf6900b15dc8fd9e2a46cd0875e2c14cdcb9",
      "parents": [
        "9e622d6bea0202e9fe267955362c01918562c09b"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "btrfs: mask out gfp flags in releasepage\n\nbtree_releasepage is a callback and can be passed unknown gfp flags and then\nthey may end up in kmem_cache_alloc called from alloc_extent_state, slab\nallocator will BUG_ON when there is HIGHMEM or DMA32 flag set.\n\nThis may happen when btrfs is mounted from a loop device, which masks out\n__GFP_IO flag. The check in try_release_extent_state\n\n3399                 if ((mask \u0026 GFP_NOFS) \u003d\u003d GFP_NOFS)\n3400                         mask \u003d GFP_NOFS;\n\nwill not work and passes unfiltered flags further resulting in crash at\nmm/slab.c:2963\n\n [\u003c000000000024ae4c\u003e] cache_alloc_refill+0x3b4/0x5c8\n [\u003c000000000024c810\u003e] kmem_cache_alloc+0x204/0x294\n [\u003c00000000001fd3c2\u003e] mempool_alloc+0x52/0x170\n [\u003c000003c000ced0b0\u003e] alloc_extent_state+0x40/0xd4 [btrfs]\n [\u003c000003c000cee5ae\u003e] __clear_extent_bit+0x38a/0x4cc [btrfs]\n [\u003c000003c000cee78c\u003e] try_release_extent_state+0x9c/0xd4 [btrfs]\n [\u003c000003c000cc4c66\u003e] btree_releasepage+0x7e/0xd0 [btrfs]\n [\u003c0000000000210d84\u003e] shrink_page_list+0x6a0/0x724\n [\u003c0000000000211394\u003e] shrink_inactive_list+0x230/0x578\n [\u003c0000000000211bb8\u003e] shrink_list+0x6c/0x120\n [\u003c0000000000211e4e\u003e] shrink_zone+0x1e2/0x228\n [\u003c0000000000211f24\u003e] shrink_zones+0x90/0x254\n [\u003c0000000000213410\u003e] do_try_to_free_pages+0xac/0x420\n [\u003c0000000000213ae0\u003e] try_to_free_pages+0x13c/0x1b0\n [\u003c0000000000204e6c\u003e] __alloc_pages_nodemask+0x5b4/0x9a8\n [\u003c00000000001fb04a\u003e] grab_cache_page_write_begin+0x7e/0xe8\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9e622d6bea0202e9fe267955362c01918562c09b",
      "tree": "75b73fbfec2c56ba9ccbe909586cf0f27aba96e1",
      "parents": [
        "7ec31b548a17f773ab6289e795ed3a6820e8b56e"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "Btrfs: fix enospc error caused by wrong checks of the chunk\n\nWhen we did sysbench test for inline files, enospc error happened easily though\nthere was lots of free disk space which could be allocated for new chunks.\n\nReproduce steps:\n # mkfs.btrfs -b $((2 * 1024 * 1024 * 1024)) \u003ctest partition\u003e\n # mount \u003ctest partition\u003e /mnt\n # ulimit -n 102400\n # cd /mnt\n # sysbench --num-threads\u003d1 --test\u003dfileio --file-num\u003d81920 \\\n \u003e --file-total-size\u003d80M --file-block-size\u003d1K --file-io-mode\u003dsync \\\n \u003e --file-test-mode\u003dseqwr prepare\n # sysbench --num-threads\u003d1 --test\u003dfileio --file-num\u003d81920 \\\n \u003e --file-total-size\u003d80M --file-block-size\u003d1K --file-io-mode\u003dsync \\\n \u003e --file-test-mode\u003dseqwr run\n \u003csoon later, BUG_ON() was triggered by enospc error\u003e\n\nThe reason of this bug is:\nNow, we can reserve space which is larger than the free space in the chunks if\nwe have enough free disk space which can be used for new chunks. By this way,\nthe space allocator should allocate a new chunk by force if there is no free\nspace in the free space cache. But there are two wrong checks which break this\noperation.\n\nOne is\n\tif (ret \u003d\u003d -ENOSPC \u0026\u0026 num_bytes \u003e min_alloc_size)\nin btrfs_reserve_extent(), it is wrong, we should try to allocate a new chunk\neven we fail to allocate free space by minimum allocable size.\n\nThe other is\n\tif (space_info-\u003eforce_alloc)\n\t\tforce \u003d space_info-\u003eforce_alloc;\nin do_chunk_alloc(). It makes the allocator ignore CHUNK_ALLOC_FORCE If someone\nsets -\u003eforce_alloc to CHUNK_ALLOC_LIMITED, and makes the enospc error happen.\n\nFix these two wrong checks. Especially the second one, we fix it by changing\nthe value of CHUNK_ALLOC_LIMITED and CHUNK_ALLOC_FORCE, and make\nCHUNK_ALLOC_FORCE greater than CHUNK_ALLOC_LIMITED since CHUNK_ALLOC_FORCE has\nhigher priority. And if the value which is passed in by the caller is greater\nthan -\u003eforce_alloc, use the passed value.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ec31b548a17f773ab6289e795ed3a6820e8b56e",
      "tree": "c0c738e7c27e4ac6185f02acd76de64986218906",
      "parents": [
        "0b485143d835c019cddc45f46e4b3873dcc9aa4e"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "Btrfs: do not defrag a file partially\n\nxfstests 218 complains that btrfs defrags a file partially:\n After: 1\n Write backwards sync, but contiguous - should defrag to 1 extent\n Before: 10\n-After: 1\n+After: 2\n\nTo fix this, we need to set max_to_defrag count properly.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b485143d835c019cddc45f46e4b3873dcc9aa4e",
      "tree": "bda30ddfa281c2841ea4b54922b701ea31509cc9",
      "parents": [
        "0b4a9d248f88e6773312f262e8185f23863d984a"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: fix warning for 32-bit build of fs/btrfs/check-integrity.c\n\nThere have been 4 warnings on 32-bit build, they are herewith fixed.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b4a9d248f88e6773312f262e8185f23863d984a",
      "tree": "bd822950b56730d6be409c98291c4f2ba19678dc",
      "parents": [
        "8bedd51b6121c4607784d75f852828d25d119c52"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: use cluster-\u003ewindow_start when allocating from a cluster bitmap\n\nWe specifically set window_start in the cluster struct to indicate where the\ncluster starts in a bitmap, but we\u0027ve been using min_start to indicate where\nwe\u0027re searching from.  This is usually the start of the blockgroup, so\nessentially means we\u0027re constantly searching from the start of any bitmap we\nfind, which completely negates all the trouble we go to in order to setup a\ncluster.  So start using window_start to make sure we actually use the area we\nfound.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8bedd51b6121c4607784d75f852828d25d119c52",
      "tree": "e9299eb7b70a1d2f0ea5a4e23b53c7a6496eea59",
      "parents": [
        "6dd70ce4eb7429c2ba6dd9fa46f78a0a2a254038"
      ],
      "author": {
        "name": "Mitch Harder",
        "email": "mitch.harder@sabayonlinux.org",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: Check for NULL page in extent_range_uptodate\n\nA user has encountered a NULL pointer kernel oops in btrfs when\nencountering media errors.  The problem has been identified\nas an unhandled NULL pointer returned from find_get_page().\nThis modification simply checks for a NULL page, and returns\nwith an error if found (the extent_range_uptodate() function\nreturns 1 on errors).\n\nAfter testing this patch, the user reported that the error with\nthe NULL pointer oops was solved.  However, there is still a\nremaining problem with a thread becoming stuck in\nwait_on_page_locked(page) in the read_extent_buffer_pages(...)\nfunction in extent_io.c\n\n       for (i \u003d start_i; i \u003c num_pages; i++) {\n               page \u003d extent_buffer_page(eb, i);\n               wait_on_page_locked(page);\n               if (!PageUptodate(page))\n                       ret \u003d -EIO;\n       }\n\nThis patch leaves the issue with the locked page yet to be resolved.\n\nSigned-off-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6dd70ce4eb7429c2ba6dd9fa46f78a0a2a254038",
      "tree": "d527b7a18a05183b9826d42f42e74811d5793cef",
      "parents": [
        "357b9784b79924a31ccded5d9a0c688f48cc28f2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "btrfs: Fix busyloops in transaction waiting code\n\nwait_log_commit() and wait_for_writer() were using slightly different\nconditions for deciding whether they should call schedule() and whether they\nshould continue in the wait loop. Thus it could happen that we busylooped when\nthe first condition was not true while the second one was. That is burning CPU\ncycles needlessly and is deadly on UP machines...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "357b9784b79924a31ccded5d9a0c688f48cc28f2",
      "tree": "ba47dcbcc40b956b30e4b27c790547cb5d3fc563",
      "parents": [
        "b1375d64c539c5b76794be759b62d3f178e67c32"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: make sure a bitmap has enough bytes\n\nWe have only been checking for min_bytes available in bitmap entries, but we\nwon\u0027t successfully setup a bitmap cluster unless it has at least bytes in the\nbitmap, so in the common case min_bytes is 4k and we want something like 2MB, so\nif there are a bunch of bitmap entries with less than 2mb\u0027s in them, we\u0027ll\nsearch all them anyway, which is suboptimal.  Fix this check.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b1375d64c539c5b76794be759b62d3f178e67c32",
      "tree": "da4f29173700701bc1aa0ad17fdb436305fd3513",
      "parents": [
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: fix uninit warning in backref.c\n\nAdded initialization with the declaration of ret. It isn\u0027t set later on the\nswitch-default branch (which should never be taken).\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "96bdc7dc61fb1b1e8e858dafb13abee8482ba064",
      "tree": "eddbfc7a931c7063ded4505c99d11d1702117064",
      "parents": [
        "f248679e86fead40cc78e724c7181d6bec1a2046"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 08:13:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:38:24 2012 -0500"
      },
      "message": "Btrfs: use larger system chunks\n\nsystem chunks by default are very small.  This makes them slightly\nlarger and also fixes the conditional checks to make sure we don\u0027t\nallocate a billion of them at once.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f248679e86fead40cc78e724c7181d6bec1a2046",
      "tree": "88abeee0b2a87c0f0377509525c92d3c9ec15a15",
      "parents": [
        "8c2a3ca20f6233677ac3222c6506174010eb414f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 13 12:09:22 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: add a delalloc mutex to inodes for delalloc reservations\n\nI was using i_mutex for this, but we\u0027re getting bogus lockdep warnings by doing\nthat and theres no real way to get rid of those, so just stop using i_mutex to\nprotect delalloc metadata reservations and use a delalloc mutex instead.  This\nshouldn\u0027t be contended often at all, only if you are writing and mmap writing to\nthe file at the same time.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8c2a3ca20f6233677ac3222c6506174010eb414f",
      "tree": "88d1105c665d355b363929557ed0c5489795e348",
      "parents": [
        "90290e19820e3323ce6b9c2888eeb68bf29c278b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 10 10:31:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: space leak tracepoints\n\nThis in addition to a script in my btrfs-tracing tree will help track down space\nleaks when we\u0027re getting space left over in block groups on umount.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "90290e19820e3323ce6b9c2888eeb68bf29c278b",
      "tree": "cdac13a9718d326cdcd9f4b215a5739906a2325a",
      "parents": [
        "3f7de037fb3727b20bc27332cdcf2488b702394c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 02 15:44:12 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: protect orphan block rsv with spin_lock\n\nWe\u0027ve been seeing warnings coming out of the orphan commit stuff forever from\nceph.  Turns out it\u0027s because we\u0027re racing with checking if the orphan block\nreserve is set, because we clear it outside of the spin_lock.  So leave the\nnormal fastpath checks where they are, but take the spin_lock and _recheck_ to\nmake sure we haven\u0027t had an orphan block rsv added in the meantime.  Then clear\nthe root\u0027s orphan block rsv and release the lock.  With this patch a user said\nthe warnings went away and they usually showed up pretty soon after he started\nceph.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3f7de037fb3727b20bc27332cdcf2488b702394c",
      "tree": "7e355b7e60b584ca7aaaf7c8abfa1f2408c15ff2",
      "parents": [
        "45a8090e626ab470c91142954431a93846030b0d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 08:29:20 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: add allocator tracepoints\n\nI used these tracepoints when figuring out what the cluster stuff was doing, so\nadd them to mainline in case we need to profile this stuff again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "45a8090e626ab470c91142954431a93846030b0d",
      "tree": "2a13259734f99cbc8f176ed395a2d1f35e36ad27",
      "parents": [
        "ec39e180fd3188c983c94603634bfcd019f42ae7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:55 2012 -0500"
      },
      "message": "Btrfs: don\u0027t call btrfs_throttle in file write\n\nBtrfs_throttle will make us wait if there is a currently committing transaction\nuntil we can open new transactions, which is ridiculous since we don\u0027t actually\nstart any transactions within the file write path anyway, so all this does is\nintroduce big latencies if we have a sync/fsync heavy workload going on while\nsomebody else is trying to do work.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ec39e180fd3188c983c94603634bfcd019f42ae7",
      "tree": "baf6a56fb98735cc533b6a5bb9c29a364a6c0cf3",
      "parents": [
        "f70a9a6b94af86fca069a7552ab672c31b457786"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: release space on error in page_mkwrite\n\nIf updating the inode gave us an ENOSPC we were just returning in page_mkwrite,\nwhich is a problem since we make our reservation right before trying to update\nthe inode, so fix the out label so that we actually free our reservation.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f70a9a6b94af86fca069a7552ab672c31b457786",
      "tree": "0a62930b2540e11b877a1ead4050c55638bbd874",
      "parents": [
        "7ad85bb76a61801362701b77c5cee5aa09f35369"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: fix btrfsck error 400 when truncating a compressed\n\nReproduce steps:\n # mkfs.btrfs /dev/sdb5\n # mount /dev/sdb5 -o compress\u003dlzo /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile bs\u003d128K count\u003d1\n # sync\n # truncate -s 64K /mnt/tmpfile\n root 5 inode 257 errors 400\n\nThis is because of the wrong if condition, which is used to check if we should\nsubtract the bytes of the dropped range from i_blocks/i_bytes of i-node or not.\nWhen we truncate a compressed extent, btrfs substracts the bytes of the whole\nextent, it\u0027s wrong. We should substract the real size that we truncate, no\nmatter it is a compressed extent or not. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ad85bb76a61801362701b77c5cee5aa09f35369",
      "tree": "e03f4ced4f7c84e9828e4f4a4cbe894369300800",
      "parents": [
        "c126dea771be1b3c370c0ffc4a09e6a82d492a49"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: do not use btrfs_end_transaction_throttle everywhere\n\nA user reported a problem where things like open with O_CREAT would take up to\n30 seconds when he had nfs activity on the same mount.  This is because all of\nour quick metadata operations, like create, symlink etc all do\nbtrfs_end_transaction_throttle, which if the transaction is blocked will wait\nfor the commit to complete before it returns.  This adds a ridiculous amount of\nlatency and isn\u0027t really needed.  The normal btrfs_end_transaction will mark the\ntransaction as blocked and wake the transaction kthread up if it thinks the\ntransaction needs to end (this being in the running out of global reserve space\nscenario), and this is all that is really needed since we\u0027ve already done\neverything we\u0027re going to do, we just need to return.  This should help people\nwith the latency they were seeing when using synchronous heavy workloads.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c126dea771be1b3c370c0ffc4a09e6a82d492a49",
      "tree": "99fc723ba2e89d767e260244cf8d19467bc68c8b",
      "parents": [
        "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
        "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "message": "Merge branch \u0027integrity-check-patch-v2\u0027 of git://btrfs.giantdisaster.de/git/btrfs into integration\n\nConflicts:\n\tfs/btrfs/ctree.h\n\tfs/btrfs/super.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "d756bd2d9339447c29bde950910586df8f8941ec",
      "tree": "f96aeb682bcc4fdcf75d080f260c809b9fbc4a1a",
      "parents": [
        "27263e28321db438bc43dc0c0be432ce91526224",
        "b367e47fb3a70f5d24ebd6faf7d42436d485fb2d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://repo.or.cz/linux-btrfs-devel into integration\n\nConflicts:\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "27263e28321db438bc43dc0c0be432ce91526224",
      "tree": "b7571dd52d6c1d48528e383d273b330da94439bd",
      "parents": [
        "64e05503ab5c73b2ffb8d55d2f7aab74f34fc691",
        "19a39dce3b9bf0244d19a446718ad6f7605ff099"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "message": "Merge branch \u0027restriper\u0027 of git://github.com/idryomov/btrfs-unstable into integration\n"
    },
    {
      "commit": "64e05503ab5c73b2ffb8d55d2f7aab74f34fc691",
      "tree": "a754d3790b8dd59ecaed54095c6e09e04f0d1dd2",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610",
        "1bb91902dc90e25449893e693ad45605cb08fbe5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:25:42 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:25:42 2012 -0500"
      },
      "message": "Merge branch \u0027allocation-fixes\u0027 into integration\n"
    },
    {
      "commit": "19a39dce3b9bf0244d19a446718ad6f7605ff099",
      "tree": "4834e177b8b64405aa858bfdcfbabd890277102b",
      "parents": [
        "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: add balance progress reporting\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b",
      "tree": "26761c92c8d135aa62702562bae3337ccad9f74d",
      "parents": [
        "a7e99c691af553fc15ac46a51f130b7c59a65f76"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for resuming restriper after it was paused\n\nRecognize BTRFS_BALANCE_RESUME flag passed from userspace.  We use the\nsame heuristics used when recovering balance after a crash to try to\nstart where we left off last time.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a7e99c691af553fc15ac46a51f130b7c59a65f76",
      "tree": "55491f285683951d509819a66e614ac6f12659dd",
      "parents": [
        "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for canceling restriper\n\nImplement an ioctl for canceling restriper.  Currently we wait until\nrelocation of the current block group is finished, in future this can be\ndone by triggering a commit.  Balance item is deleted and no memory\nabout the interrupted balance is kept.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961",
      "tree": "4ef87d05240e90480749c345274a83094caf66f0",
      "parents": [
        "9555c6c180600b40f6e86bd4dc53bf47e06ed663"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for pausing restriper\n\nImplement an ioctl for pausing restriper.  This pauses the relocation,\nbut balance is still considered to be \"in progress\": balance item is\nnot deleted, other volume operations cannot be started, etc.  If paused\nin the middle of profile changing operation we will continue making\nallocations with the target profile.\n\nAdd a hook to close_ctree() to pause restriper and free its data\nstructures on unmount.  (It\u0027s safe to unmount when restriper is in\n\"paused\" state, we will resume with the same parameters on the next\nmount)\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "9555c6c180600b40f6e86bd4dc53bf47e06ed663",
      "tree": "74f95edee2368e183a2a054c24725d2940632a8f",
      "parents": [
        "596410151ed71819b9e8a8018c6c9992796b256d"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: add skip_balance mount option\n\nSince restriper kthread starts involuntarily on mount and can suck cpu\nand memory bandwidth add a mount option to forcefully skip it.  The\nrestriper in that case hangs around in paused state and can be resumed\nfrom userspace when it\u0027s convenient.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "596410151ed71819b9e8a8018c6c9992796b256d",
      "tree": "ff697d01a6dd8cf50b37b3855e40764335be044d",
      "parents": [
        "0940ebf6b92ea10a6f30ae5ac3993a3b75745da6"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: recover balance on mount\n\nOn mount, if balance item is found, resume balance in a separate\nkernel thread.\n\nTry to be smart to continue roughly where previous balance (or convert)\nwas interrupted.  For chunk types that were being converted to some\nprofile we turn on soft convert, in case of a simple balance we turn on\nusage filter and relocate only less-than-90%-full chunks of that type.\nThese are just heuristics but they help quite a bit, and can be improved\nin future.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "0940ebf6b92ea10a6f30ae5ac3993a3b75745da6",
      "tree": "30942cd4eaa259951b549abf7c5c972abc8ab289",
      "parents": [
        "cfa4c961cc69ffb7bda450972320a25cbd413e19"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: save balance parameters to disk\n\nIntroduce a new btree objectid for storing balance item.  The reason is\nto be able to resume restriper after a crash with the same parameters.\nBalance item has a very high objectid and goes into tree of tree roots.\n\nThe key for the new item is as follows:\n\n\t[ BTRFS_BALANCE_OBJECTID ; BTRFS_BALANCE_ITEM_KEY ; 0 ]\n\nOlder kernels simply ignore it so it\u0027s safe to mount with an older\nkernel and then go back to the newer one.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "cfa4c961cc69ffb7bda450972320a25cbd413e19",
      "tree": "68ed15b8303d8aa7385df5383aebbef47debea4f",
      "parents": [
        "e4d8ec0f65b91bfb4984a4927632ded95f9825ad"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: soft profile changing mode (aka soft convert)\n\nWhen doing convert from one profile to another if soft mode is on\nrestriper won\u0027t touch chunks that already have the profile we are\nconverting to.  This is useful if e.g. half of the FS was converted\nearlier.\n\nThe soft mode switch is (like every other filter) per-type.  This means\nthat we can convert for example meta chunks the \"hard\" way while\nconverting data chunks selectively with soft switch.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "e4d8ec0f65b91bfb4984a4927632ded95f9825ad",
      "tree": "4727c977803093ec5cdf93da4fcab34cc8de8ecf",
      "parents": [
        "70922617b0099f420deceb53d5dc7f4fb30d08d0"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: implement online profile changing\n\nProfile changing is done by launching a balance with\nBTRFS_BALANCE_CONVERT bits set and target fields of respective\nbtrfs_balance_args structs initialized.  Profile reducing code in this\ncase will pick restriper\u0027s target profile if it\u0027s available instead of\ndoing a blind reduce.  If target profile is not yet available it goes\nback to a plain reduce.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "70922617b0099f420deceb53d5dc7f4fb30d08d0",
      "tree": "6353dff7355863b92b48001e76c3f00bf180916b",
      "parents": [
        "ea67176ae8c024f64d85ec33873e5eadf1af7247"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: do not reduce profile in do_chunk_alloc()\n\nEvery caller of do_chunk_alloc() feeds it the reduced allocation\nprofile, so stop trying to reduce it one more time.  Instead check the\nvalidity of the passed profile.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "ea67176ae8c024f64d85ec33873e5eadf1af7247",
      "tree": "d3674d6a4807074dbaadfdd260e2aaa3011eab5e",
      "parents": [
        "94e60d5a5c4b98a32b1077dec88df09ada712376"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: virtual address space subset filter\n\nSelect chunks which have at least one byte located inside a given\n[vstart, vend) virtual address space range.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "94e60d5a5c4b98a32b1077dec88df09ada712376",
      "tree": "149b9c9f68b64c7aa6e4b07bf12940a6e27591ca",
      "parents": [
        "409d404b461afa9738619f249fd7f62a366b68c2"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: devid subset filter\n\nSelect chunks which have at least one byte of at least one stripe\nlocated on a device with devid X in a given [pstart,pend) physical\naddress range.\n\nThis filter only works when devid filter is turned on.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "409d404b461afa9738619f249fd7f62a366b68c2",
      "tree": "38092a3be26e6bcedc5202c04c5915e12b1d64a8",
      "parents": [
        "5ce5b3c0916ba3a2e34cf648b94044adc5ef9e76"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: devid filter\n\nRelocate chunks which have at least one stripe located on a device with\ndevid X.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "5ce5b3c0916ba3a2e34cf648b94044adc5ef9e76",
      "tree": "0cfbc8eeea18b9491275c59b8a7eed1471a2abd3",
      "parents": [
        "ed25e9b26f898d8d63ae4a836489f1923534143b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: usage filter\n\nSelect chunks that are less than X percent full.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "ed25e9b26f898d8d63ae4a836489f1923534143b",
      "tree": "89ee253d15ef46b430de0435c068b66267ce829b",
      "parents": [
        "f43ffb60fd94e98be02780944e182ade6653b916"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: profiles filter\n\nSelect chunks based on a given profile mask.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "f43ffb60fd94e98be02780944e182ade6653b916",
      "tree": "50cab47a03c223d0641d8fe62805e71f5cffef1a",
      "parents": [
        "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic infrastructure for selective balancing\n\nThis allows to have a separate set of filters for each chunk type\n(data,meta,sys).  The code however is generic and switch on chunk type\nis only done once.\n\nThis commit also adds a type filter: it allows to balance for example\nmeta and system chunks w/o touching data ones.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc",
      "tree": "22d695a7a461068c773b327e5c89a045ade5d8a3",
      "parents": [
        "10ea00f55a07f8f9536d9112b95108a86f700bab"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic restriper infrastructure\n\nAdd basic restriper infrastructure: extended balancing ioctl and all\nrelated ioctl data structures, add data structure for tracking\nrestriper\u0027s state to fs_info, etc.  The semantics of the old balancing\nioctl are fully preserved.\n\nExplicitly disallow any volume operations when balance is in progress.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "10ea00f55a07f8f9536d9112b95108a86f700bab",
      "tree": "83887f41d8a876d919f74f83cda26eb18b10deca",
      "parents": [
        "a46d11a8b06dd0431a3888fbc4856ea13a8e634f"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: make avail_*_alloc_bits fields dynamic\n\nCurrently when new chunks are created respective avail_alloc_bits field\nis updated to reflect profiles of all chunks present in the system.\nHowever when chunks are removed profile bits are never cleared.\n\nThis patch clears profile bit of respective avail_alloc_bits field when\nthe last chunk with that profile is removed.  Restriper needs this to\nproperly operate when \"downgrading\".\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a46d11a8b06dd0431a3888fbc4856ea13a8e634f",
      "tree": "2aebc4d3ef2318a08cb067bb4a597a51e2455a65",
      "parents": [
        "52ba692972532f8d652080214b6599ece3dd51b9"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add BTRFS_AVAIL_ALLOC_BIT_SINGLE bit\n\nRight now on-disk BTRFS_BLOCK_GROUP_* profile bits are used for\navail_{data,metadata,system}_alloc_bits fields, which gather info about\navailable allocation profiles in the FS.  When chunk is created or read\nfrom disk, its profile is OR\u0027ed with the corresponding avail_alloc_bits\nfield.  Since SINGLE is denoted by 0 in the on-disk format, currently\nthere is no way to tell when such chunks become avaialble.  Restriper\nneeds that information, so add a separate bit for SINGLE profile.\n\nThis bit is going to be in-memory only, it should never be written out\nto disk, so it\u0027s not a disk format change.  However to avoid remappings\nin future, reserve corresponding on-disk bit.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "52ba692972532f8d652080214b6599ece3dd51b9",
      "tree": "d4c60bad0a7813d964988c7c40aeceadfb54cc1d",
      "parents": [
        "6fef8df1dcb9b586268caff66df1d71ce8610132"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: introduce masks for chunk type and profile\n\nChunk\u0027s type and profile are encoded in u64 flags field.  Introduce\nmasks to easily access them.  Also fix the type of BTRFS_BLOCK_GROUP_*\nconstants, it should be ULL.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "6fef8df1dcb9b586268caff66df1d71ce8610132",
      "tree": "03488bc99771dda6354a3cb3113bee96f55aac47",
      "parents": [
        "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: get rid of *_alloc_profile fields\n\n{data,metadata,system}_alloc_profile fields have been unused for a long\ntime now.  Get rid of them.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "b367e47fb3a70f5d24ebd6faf7d42436d485fb2d",
      "tree": "5acc05bae14070f2dad3433a1482fe3a7bab0744",
      "parents": [
        "c7c144db531fda414e532adac56e965ce332e2a5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 07 11:38:24 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:54 2012 +0800"
      },
      "message": "Btrfs: fix possible deadlock when opening a seed device\n\nThe correct lock order is uuid_mutex -\u003e volume_mutex -\u003e chunk_mutex,\nbut when we mount a filesystem which has backing seed devices, we have\nthis lock chain:\n\n    open_ctree()\n        lock(chunk_mutex);\n        read_chunk_tree();\n            read_one_dev();\n                open_seed_devices();\n                    lock(uuid_mutex);\n\nand then we hit a lockdep splat.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "c7c144db531fda414e532adac56e965ce332e2a5",
      "tree": "8dc29815a0821e7441ebaa41f15adba0699ef730",
      "parents": [
        "7fe1e641502616220437079258506196bc4d8cbf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 07 10:39:22 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:52 2012 +0800"
      },
      "message": "Btrfs: update global block_rsv when creating a new block group\n\nA bug was triggered while using seed device:\n\n    # mkfs.btrfs /dev/loop1\n    # btrfstune -S 1 /dev/loop1\n    # mount -o /dev/loop1 /mnt\n    # btrfs dev add /dev/loop2 /mnt\n\nbtrfs: block rsv returned -28\n------------[ cut here ]------------\nWARNING: at fs/btrfs/extent-tree.c:5969 btrfs_alloc_free_block+0x166/0x396 [btrfs]()\n...\nCall Trace:\n...\n[\u003cf7b7c31c\u003e] btrfs_cow_block+0x101/0x147 [btrfs]\n[\u003cf7b7eaa6\u003e] btrfs_search_slot+0x1b8/0x55f [btrfs]\n[\u003cf7b7f844\u003e] btrfs_insert_empty_items+0x42/0x7f [btrfs]\n[\u003cf7b7f8c1\u003e] btrfs_insert_item+0x40/0x7e [btrfs]\n[\u003cf7b8ac02\u003e] btrfs_make_block_group+0x243/0x2aa [btrfs]\n[\u003cf7bb3f53\u003e] __btrfs_alloc_chunk+0x672/0x70e [btrfs]\n[\u003cf7bb41ff\u003e] init_first_rw_device+0x77/0x13c [btrfs]\n[\u003cf7bb5a62\u003e] btrfs_init_new_device+0x664/0x9fd [btrfs]\n[\u003cf7bbb65a\u003e] btrfs_ioctl+0x694/0xdbe [btrfs]\n[\u003cc04f55f7\u003e] do_vfs_ioctl+0x496/0x4cc\n[\u003cc04f5660\u003e] sys_ioctl+0x33/0x4f\n[\u003cc07b9edf\u003e] sysenter_do_call+0x12/0x38\n---[ end trace 906adac595facc7d ]---\n\nSince seed device is readonly, there\u0027s no usable space in the filesystem.\nAfterwards we add a sprout device to it, and the kernel creates a METADATA\nblock group and a SYSTEM block group where comes free space we can reserve,\nbut we still get revervation failure because the global block_rsv hasn\u0027t\nbeen updated accordingly.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "7fe1e641502616220437079258506196bc4d8cbf",
      "tree": "da48e34d3e826f1bfe87bf7f7743bbb0e47ab2c3",
      "parents": [
        "ec9ef7a13be4dcce964c8503e8999087945e5b9e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 29 14:47:27 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:48 2012 +0800"
      },
      "message": "Btrfs: rewrite btrfs_trim_block_group()\n\nThere are various bugs in block group trimming:\n\n- It may trim from offset smaller than user-specified offset.\n- It may trim beyond user-specified range.\n- It may leak free space for extents smaller than specified minlen.\n- It may truncate the last trimmed extent thus leak free space.\n- With mixed extents+bitmaps, some extents may not be trimmed.\n- With mixed extents+bitmaps, some bitmaps may not be trimmed (even\nnone will be trimmed). Even for those trimmed, not all the free space\nin the bitmaps will be trimmed.\n\nI rewrite btrfs_trim_block_group() and break it into two functions.\nOne is to trim extents only, and the other is to trim bitmaps only.\n\nBefore patching:\n\n\t# fstrim -v /mnt/\n\t/mnt/: 1496465408 bytes were trimmed\n\nAfter patching:\n\n\t# fstrim -v /mnt/\n\t/mnt/: 2193768448 bytes were trimmed\n\nAnd this matches the total free space:\n\n\t# btrfs fi df /mnt\n\tData: total\u003d3.58GB, used\u003d1.79GB\n\tSystem, DUP: total\u003d8.00MB, used\u003d4.00KB\n\tSystem: total\u003d4.00MB, used\u003d0.00\n\tMetadata, DUP: total\u003d205.12MB, used\u003d97.14MB\n\tMetadata: total\u003d8.00MB, used\u003d0.00\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "ec9ef7a13be4dcce964c8503e8999087945e5b9e",
      "tree": "afd97976c76c45fca7b659f8d81cbcd4995d2a7e",
      "parents": [
        "de11cc12df17337979e0929d2831887432f236ca"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 01 14:06:42 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:46 2012 +0800"
      },
      "message": "Btrfs: simplfy calculation of stripe length for discard operation\n\nFor btrfs raid, while discarding a range of space, we\u0027ll need to know\nthe start offset and length to discard for each device, and it\u0027s done\nin btrfs_map_block().\n\nHowever the calculation is a bit complex for raid0 and raid10, so I\nreimplement it based on a fact that:\n\n        dev1          dev2           dev3    (raid0)\n        -----------------------------------\n        s0 s3 s6      s1 s4 s7       s2 s5\n\nEach device has (total_stripes / nr_dev) stripes, or plus one.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "de11cc12df17337979e0929d2831887432f236ca",
      "tree": "a9232dd3531707f49c5e56523019a1e0ce081876",
      "parents": [
        "125ccb0ae6806dbec31abf4a85448971df3b4e39"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 01 12:55:47 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:44 2012 +0800"
      },
      "message": "Btrfs: don\u0027t pre-allocate btrfs bio\n\nWe pre-allocate a btrfs bio with fixed size, and then may re-allocate\nmemory if we find stripes are bigger than the fixed size. But this\npre-allocation is not necessary.\n\nAlso we don\u0027t have to calcuate the stripe number twice.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "125ccb0ae6806dbec31abf4a85448971df3b4e39",
      "tree": "f530e85bea0639379997000a37e914d180e9e5b4",
      "parents": [
        "4da6f1a332f6c16b6594c7892f13c31459b9b1c8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 08 15:07:24 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:42 2012 +0800"
      },
      "message": "Btrfs: don\u0027t pass a trans handle unnecessarily in volumes.c\n\nSome functions never use the transaction handle passed to them.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "4da6f1a332f6c16b6594c7892f13c31459b9b1c8",
      "tree": "e647af08d851ccb13e89312394c9dd1fdaa785c6",
      "parents": [
        "f062abf089ff705e09bbaa6fa1e2fd7688a0f2ea"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 29 13:39:50 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:39 2012 +0800"
      },
      "message": "Btrfs: reserve metadata space in btrfs_ioctl_setflags()\n\nCheck and reserve space for btrfs_update_inode().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "f062abf089ff705e09bbaa6fa1e2fd7688a0f2ea",
      "tree": "02ed40f0c73ed1d6f8dbdaf5ce725b520036a9b7",
      "parents": [
        "706efc6630c2722602541a6a2fc5900a4e38456a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 29 13:36:45 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:38 2012 +0800"
      },
      "message": "Btrfs: remove BUG_ON()s in btrfs_ioctl_setflags()\n\nWe can recover from errors and return -errno to user space.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "706efc6630c2722602541a6a2fc5900a4e38456a",
      "tree": "bba227c9b49146e6c1bb6b529224088dbb9b8811",
      "parents": [
        "a1ee5a45818acc7f9c13e560827cf3e8735ac919"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jan 09 14:36:28 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:36 2012 +0800"
      },
      "message": "Btrfs: check the return value of io_ctl_init()\n\nIt can return -ENOMEM.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "a1ee5a45818acc7f9c13e560827cf3e8735ac919",
      "tree": "984505e8c99a6965453819651ff0ea91a4ca8d4b",
      "parents": [
        "db804f23a72bada58f083dfad6a65d019ddb3bd4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jan 09 14:27:42 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:34 2012 +0800"
      },
      "message": "Btrfs: avoid possible NULL deref in io_ctl_drop_pages()\n\nIf we run into some failure path in io_ctl_prepare_pages(),\nio_ctl-\u003epages[] array may have some NULL pointers.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "db804f23a72bada58f083dfad6a65d019ddb3bd4",
      "tree": "24c7a53995b61b5f98d87b8db136fc908a3a035f",
      "parents": [
        "d25223a0d22f7ec4203ec285dc6e51f696591ba3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jan 10 16:41:01 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:31 2012 +0800"
      },
      "message": "Btrfs: add pinned extents to on-disk free space cache correctly\n\nI got this while running xfstests:\n\n[24256.836098] block group 317849600 has an wrong amount of free space\n[24256.836100] btrfs: failed to load free space cache for block group 317849600\n\nWe should clamp the extent returned by find_first_extent_bit(),\nso the start of the extent won\u0027t smaller than the start of the\nblock group.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "d25223a0d22f7ec4203ec285dc6e51f696591ba3",
      "tree": "f54428e64f692edfa5bf75f8eb301329e32a895f",
      "parents": [
        "396e6e49c58bb23d1814d3c240c736c9f01523c5",
        "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 09:54:49 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 09:54:49 2012 +0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs into for-linus\n"
    },
    {
      "commit": "1bb91902dc90e25449893e693ad45605cb08fbe5",
      "tree": "17f514fb0f2c1b0de7681638ba3b2cc69cf28d01",
      "parents": [
        "fc7c1077ceb99c35e5f9d0ce03dc7740565bb2bf"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "lxoliva@fsfla.org",
        "time": "Fri Oct 14 12:10:36 2011 -0300"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jan 07 19:15:15 2012 -0500"
      },
      "message": "Btrfs: revamp clustered allocation logic\n\nParameterize clusters on minimum total size, minimum chunk size and\nminimum contiguous size for at least one chunk, without limits on\ncluster, window or gap sizes.  Don\u0027t tolerate any fragmentation for\nSSD_SPREAD; accept it for metadata, but try to keep data dense.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fc7c1077ceb99c35e5f9d0ce03dc7740565bb2bf",
      "tree": "ae10e2989f33b45529c2474a5668b5cecc65bf08",
      "parents": [
        "a5f6f719a5cd7caeee8ed8137cf3f94c3bbebc65"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "lxoliva@fsfla.org",
        "time": "Mon Nov 28 12:36:17 2011 -0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jan 07 19:15:14 2012 -0500"
      },
      "message": "Btrfs: don\u0027t set up allocation result twice\n\nWe store the allocation start and length twice in ins, once right\nafter the other, but with intervening calls that may prevent the\nduplicate from being optimized out by the compiler.  Remove one of the\nassignments.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a5f6f719a5cd7caeee8ed8137cf3f94c3bbebc65",
      "tree": "622a4a4399eae8e81b152670aa71c621d31b1878",
      "parents": [
        "1100373f8aa69e377386499350496e3d8565605f"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "lxoliva@fsfla.org",
        "time": "Mon Dec 12 04:48:19 2011 -0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:48:21 2012 -0500"
      },
      "message": "Btrfs: test free space only for unclustered allocation\n\nSince the clustered allocation may be taking extents from a different\nblock group, there\u0027s no point in spin-locking and testing the current\nblock group free space before attempting to allocate space from a\ncluster, even more so when we might refrain from even trying the\ncluster in the current block group because, after the cluster was set\nup, not enough free space remained.  Furthermore, cluster creation\nattempts fail fast when the block group doesn\u0027t have enough free\nspace, so the test was completely superfluous.\n\nI\u0027ve move the free space test past the cluster allocation attempt,\nwhere it is more useful, and arranged for a cluster in the current\nblock group to be released before trying an unclustered allocation,\nwhen we reach the LOOP_NO_EMPTY_SIZE stage, so that the free space in\nthe cluster stands a chance of being combined with additional free\nspace in the block group so as to succeed in the allocation attempt.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1100373f8aa69e377386499350496e3d8565605f",
      "tree": "e090858231ee4f3bf0b51ba4cf3dc592f4e007e8",
      "parents": [
        "cf1d72c9ceec391d34c48724da57282e97f01122"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:47:38 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:47:38 2012 -0500"
      },
      "message": "Btrfs: use bigger metadata chunks on bigger filesystems\n\nThe 256MB chunk is a little small on a huge FS.  This scales up the\nchunk size.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cf1d72c9ceec391d34c48724da57282e97f01122",
      "tree": "addcb347d4c00d724f86d309ad26b75438b7a814",
      "parents": [
        "203bf287cb01a5dc26c20bd3737cecf3aeba1d48"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:41:34 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:41:34 2012 -0500"
      },
      "message": "Btrfs: lower the bar for chunk allocation\n\nThe chunk allocation code has tried to keep a pretty tight lid on creating new\nmetadata chunks.  This is partially because in the past the reservation\ncode didn\u0027t give us an accurate idea of how much space was being used.\n\nThe new code is much more accurate, so we\u0027re able to get rid of some of these\nchecks.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "203bf287cb01a5dc26c20bd3737cecf3aeba1d48",
      "tree": "f9ce9d7c82360bd6059b5ef16166cf79d16b1380",
      "parents": [
        "c1111b1fcee6359922ad8e5f6d72ed43815ad8f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:23:57 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 06 15:23:57 2012 -0500"
      },
      "message": "Btrfs: run chunk allocations while we do delayed refs\n\nBtrfs tries to batch extent allocation tree changes to improve performance\nand reduce metadata trashing.  But it doesn\u0027t allocate new metadata chunks\nwhile it is doing allocations for the extent allocation tree.\n\nThis commit changes the delayed refence code to do chunk allocations if we\u0027re\ngetting low on room.  It prevents crashes and improves performance.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6bf7e080d5bcb0d399ee38ce3dabbfad64448192",
      "tree": "954fc4c3ae899b1bb4b89af03582a81546eda4bf",
      "parents": [
        "4692cf58aa7b81f721c1653d48db99ea41421d58"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 01 14:35:19 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 05 15:11:55 2012 +0100"
      },
      "message": "Btrfs: make sure we\u0027re not using obsolete code in btrfs_get_extent\n\nThere\u0027s code in btrfs_get_extent that should never be used. This patch turns\na WARN_ON(1) into a BUG(), hoping we can remove the transaction code from\nbtrfs_get_extent soon.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "4692cf58aa7b81f721c1653d48db99ea41421d58",
      "tree": "0a5bf889142252d91bcc8df33a9c63c18024fe70",
      "parents": [
        "8da6d5815c592b713ecaf4f4f8b631f8359c96c4"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Dec 02 14:56:41 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 05 10:49:43 2012 +0100"
      },
      "message": "Btrfs: new backref walking code\n\nThe old backref iteration code could only safely be used on commit roots.\nBesides this limitation, it had bugs in finding the roots for these\nreferences. This commit replaces large parts of it by btrfs_find_all_roots()\nwhich a) really finds all roots and the correct roots, b) works correctly\nunder heavy file system load, c) considers delayed refs.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "805a6af8dba5dfdd35ec35dc52ec0122400b2610",
      "tree": "f6f7009c0b6a896ff1ea22aac7f17f23bd5a9e4f",
      "parents": [
        "869682384e78605897f9332700fe26c358ecf21c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:55:44 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:55:44 2012 -0800"
      },
      "message": "Linux 3.2\n"
    },
    {
      "commit": "869682384e78605897f9332700fe26c358ecf21c",
      "tree": "8b0654cec2ccfbf70f163caa66c98f6316b91f0d",
      "parents": [
        "d6042eac44b54dc5c7cb839175eb51dfd03d7633",
        "d8f46ff11081f03b09efe82245a3257bab6bf60e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:03:49 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:03:49 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:\n  fix CAN MAINTAINERS SCM tree type\n  mwifiex: fix crash during simultaneous scan and connect\n  b43: fix regression in PIO case\n  ath9k: Fix kernel panic in AR2427 in AP mode\n  CAN MAINTAINERS update\n  net: fsl: fec: fix build for mx23-only kernel\n  sch_qfq: fix overflow in qfq_update_start()\n  Revert \"Bluetooth: Increase HCI reset timeout in hci_dev_do_close\"\n"
    },
    {
      "commit": "d6042eac44b54dc5c7cb839175eb51dfd03d7633",
      "tree": "b2a1c5878771f4d7a5aada868bdbc7eafc4eba3b",
      "parents": [
        "8a88951b5878dc475dcd841cefc767e36397d14e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Wed Jan 04 10:51:03 2012 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:03:06 2012 -0800"
      },
      "message": "minixfs: misplaced checks lead to dentry leak\n\nbitmap size sanity checks should be done *before* allocating -\u003es_root;\nthere their cleanup on failure would be correct.  As it is, we do iput()\non root inode, but leak the root dentry...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Josh Boyer \u003cjwboyer@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a88951b5878dc475dcd841cefc767e36397d14e",
      "tree": "c31fd8cdfa08dce4768f42e556d97929deac2343",
      "parents": [
        "50b8d257486a45cba7b65ca978986ed216bbcc10"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jan 04 17:29:20 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:01:59 2012 -0800"
      },
      "message": "ptrace: ensure JOBCTL_STOP_SIGMASK is not zero after detach\n\nThis is the temporary simple fix for 3.2, we need more changes in this\narea.\n\n1. do_signal_stop() assumes that the running untraced thread in the\n   stopped thread group is not possible. This was our goal but it is\n   not yet achieved: a stopped-but-resumed tracee can clone the running\n   thread which can initiate another group-stop.\n\n   Remove WARN_ON_ONCE(!current-\u003eptrace).\n\n2. A new thread always starts with -\u003ejobctl \u003d 0. If it is auto-attached\n   and this group is stopped, __ptrace_unlink() sets JOBCTL_STOP_PENDING\n   but JOBCTL_STOP_SIGMASK part is zero, this triggers WANR_ON(!signr)\n   in do_jobctl_trap() if another debugger attaches.\n\n   Change __ptrace_unlink() to set the artificial SIGSTOP for report.\n\n   Alternatively we could change ptrace_init_task() to copy signr from\n   current, but this means we can copy it for no reason and hide the\n   possible similar problems.\n\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[3.1]\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50b8d257486a45cba7b65ca978986ed216bbcc10",
      "tree": "0bcbb7eefaaf3da47a23c259e91baf414319ff96",
      "parents": [
        "8d9cbf8240023f5b6d19f2106aff3d7077fc4a3b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Jan 04 17:29:02 2012 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 15:01:59 2012 -0800"
      },
      "message": "ptrace: partially fix the do_wait(WEXITED) vs EXIT_DEAD-\u003eEXIT_ZOMBIE race\n\nTest-case:\n\n\tint main(void)\n\t{\n\t\tint pid, status;\n\n\t\tpid \u003d fork();\n\t\tif (!pid) {\n\t\t\tfor (;;) {\n\t\t\t\tif (!fork())\n\t\t\t\t\treturn 0;\n\t\t\t\tif (waitpid(-1, \u0026status, 0) \u003c 0) {\n\t\t\t\t\tprintf(\"ERR!! wait: %m\\n\");\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tassert(ptrace(PTRACE_ATTACH, pid, 0,0) \u003d\u003d 0);\n\t\tassert(waitpid(-1, NULL, 0) \u003d\u003d pid);\n\n\t\tassert(ptrace(PTRACE_SETOPTIONS, pid, 0,\n\t\t\t\t\tPTRACE_O_TRACEFORK) \u003d\u003d 0);\n\n\t\tdo {\n\t\t\tptrace(PTRACE_CONT, pid, 0, 0);\n\t\t\tpid \u003d waitpid(-1, NULL, 0);\n\t\t} while (pid \u003e 0);\n\n\t\treturn 1;\n\t}\n\nIt fails because -\u003ereal_parent sees its child in EXIT_DEAD state\nwhile the tracer is going to change the state back to EXIT_ZOMBIE\nin wait_task_zombie().\n\nThe offending commit is 823b018e which moved the EXIT_DEAD check,\nbut in fact we should not blame it. The original code was not\ncorrect as well because it didn\u0027t take ptrace_reparented() into\naccount and because we can\u0027t really trust -\u003eptrace.\n\nThis patch adds the additional check to close this particular\nrace but it doesn\u0027t solve the whole problem. We simply can\u0027t\nrely on -\u003eptrace in this case, it can be cleared if the tracer\nis multithreaded by the exiting -\u003eparent.\n\nI think we should kill EXIT_DEAD altogether, we should always\nremove the soon-to-be-reaped child from -\u003echildren or at least\nwe should never do the DEAD-\u003eZOMBIE transition. But this is too\ncomplex for 3.2.\n\nReported-and-tested-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nTested-by: Lukasz Michalik \u003clmi@ift.uni.wroc.pl\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[3.0+]\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8d9cbf8240023f5b6d19f2106aff3d7077fc4a3b",
      "tree": "f795383da4de9b99efb933f02b26d2bdf2746f0d",
      "parents": [
        "f423fc627b05f47bc9305f9661630fce30f208f9",
        "225de11e31c1cecd04839b859a0b8f81d490a50b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 14:57:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 14:57:55 2012 -0800"
      },
      "message": "Merge git://git.samba.org/sfrench/cifs-2.6\n\n* git://git.samba.org/sfrench/cifs-2.6:\n  [CIFS] default ntlmv2 for cifs mount delayed to 3.3\n  cifs: fix bad buffer length check in coalesce_t2\n"
    },
    {
      "commit": "d8f46ff11081f03b09efe82245a3257bab6bf60e",
      "tree": "fe47a5fe5ef62920ee3e1ffe5a2fd7a29918c6b0",
      "parents": [
        "405cc2736527bd506fd8f652308b03b2c8a1e8b9",
        "b015dbc0f95eef34819515bd403a62569bca23df"
      ],
      "author": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jan 04 11:37:30 2012 -0500"
      },
      "committer": {
        "name": "John W. Linville",
        "email": "linville@tuxdriver.com",
        "time": "Wed Jan 04 11:37:30 2012 -0500"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem\n"
    },
    {
      "commit": "f423fc627b05f47bc9305f9661630fce30f208f9",
      "tree": "f2d9589bc443e99c8843a8ca18c44956d61fcf28",
      "parents": [
        "157e8bf8b4823bfcdefa6c1548002374b61f61df"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 07:57:22 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jan 04 07:57:22 2012 -0800"
      },
      "message": "Revert \"rtc: Expire alarms after the time is set.\"\n\nThis reverts commit 93b2ec0128c431148b216b8f7337c1a52131ef03.\n\nThe call to \"schedule_work()\" in rtc_initialize_alarm() happens too\nearly, and can cause oopses at bootup\n\nNeil Brown explains why we do it:\n\n  \"If you set an alarm in the future, then shutdown and boot again after\n   that time, then you will end up with a timer_queue node which is in\n   the past.\n\n   When this happens the queue gets stuck.  That entry-in-the-past won\u0027t\n   get removed until and interrupt happens and an interrupt won\u0027t happen\n   because the RTC only triggers an interrupt when the alarm is \"now\".\n\n   So you\u0027ll find that e.g.  \"hwclock\" will always tell you that\n   \u0027select\u0027 timed out.\n\n   So we force the interrupt work to happen at the start just in case.\"\n\nand has a patch that convert it to do things in-process rather than with\nthe worker thread, but right now it\u0027s too late to play around with this,\nso we just revert the patch that caused problems for now.\n\nReported-by: Sander Eikelenboom \u003clinux@eikelenboom.it\u003e\nRequested-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nRequested-by: John Stultz \u003cjohn.stultz@linaro.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8da6d5815c592b713ecaf4f4f8b631f8359c96c4",
      "tree": "1dac6f55dd37193eee821b9d29ff59ee61edb853",
      "parents": [
        "a168650c08300434e1456abe7b6451f1448230d3"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Nov 23 18:55:04 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Jan 04 16:26:38 2012 +0100"
      },
      "message": "Btrfs: added btrfs_find_all_roots()\n\nThis function gets a byte number (a data extent), collects all the leafs\npointing to it and walks up the trees to find all fs roots pointing to those\nleafs. It also returns the list of all leafs pointing to that extent.\n\nIt does proper locking for the involved trees, can be used on busy file\nsystems and honors delayed refs.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "a168650c08300434e1456abe7b6451f1448230d3",
      "tree": "addddb060b018eb569e97c11e1a1451feef11c7a",
      "parents": [
        "d1270cd91f308c9d22b2804720c36ccd32dbc35e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Dec 12 16:10:07 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Jan 04 16:12:48 2012 +0100"
      },
      "message": "Btrfs: add waitqueue instead of doing busy waiting for more delayed refs\n\nNow that we may be holding back delayed refs for a limited period, we\nmight end up having no runnable delayed refs. Without this commit, we\u0027d\ndo busy waiting in that thread until another (runnable) ref arives.\nInstead, we\u0027re detecting this situation and use a waitqueue, such that\nwe only try to run more refs after\n\ta) another runnable ref was added  or\n\tb) delayed refs are no longer held back\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "d1270cd91f308c9d22b2804720c36ccd32dbc35e",
      "tree": "3dfa3109f7df9983ce88dad5bcb4515f7d4b26b5",
      "parents": [
        "00f04b88791ff49dc64ada18819d40a5b0671709"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Tue Sep 13 15:16:43 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed Jan 04 16:12:45 2012 +0100"
      },
      "message": "Btrfs: put back delayed refs that are too new\n\nWhen processing a delayed ref, first check if there are still old refs in\nthe process of being added. If so, put this ref back to the tree. To avoid\nlooping on this ref, choose a newer one in the next loop.\nbtrfs_find_ref_cluster has to take care of that.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    }
  ],
  "next": "00f04b88791ff49dc64ada18819d40a5b0671709"
}
