)]}'
{
  "log": [
    {
      "commit": "51eab603f5c86dd1eae4c525df3e7f7eeab401d6",
      "tree": "e7a8c6214b072db126cca62d39008b3620134798",
      "parents": [
        "419f4319495043a9507ac3e616be9ca60af09744",
        "1e20932a23578bb1ec59107843574e259b96193f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:37:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:37:31 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs updates from Chris Mason:\n \"This includes a fairly large change from Josef around data writeback\n  completion.  Before, the writeback wasn\u0027t completed until the metadata\n  insertions for the extent were done, and this made for fairly large\n  latency spikes on the last page of each ordered extent.\n\n  We already had a separate mechanism for tracking pending metadata\n  insertions, so Josef just needed to tweak things a little to end\n  writeback earlier on the page.  Overall it makes us much friendly to\n  memory reclaim and lowers latencies quite a lot for synchronous IO.\n\n  Jan Schmidt has finished some background work required to track btree\n  blocks as they go through changes in ownership.  It\u0027s the missing\n  piece he needed for both btrfs send/receive and subvolume quotas.\n  Neither of those are ready yet, but the new tracking code is included\n  here.  Most of the time, the new code is off.  It is only used by\n  scrub and other backref walkers.\n\n  Stefan Behrens has added io failure tracking.  This includes counters\n  for which drives are causing the most trouble so the admin (or an\n  automated tool) can choose to kick them out.  We\u0027re tracking IO\n  errors, crc errors, and generation checks we do on each metadata\n  block.\n\n  RAID5/6 did miss the cut this time because I\u0027m having trouble with\n  corruptions.  I\u0027ll nail it down next week and post as a beta testing\n  before 3.6\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (58 commits)\n  Btrfs: fix tree mod log rewinded level and rewinding of moved keys\n  Btrfs: fix tree mod log del_ptr\n  Btrfs: add tree_mod_dont_log helper\n  Btrfs: add missing spin_lock for insertion into tree mod log\n  Btrfs: add inodes before dropping the extent lock in find_all_leafs\n  Btrfs: use delayed ref sequence numbers for all fs-tree updates\n  Btrfs: fix false positive in check-integrity on unmount\n  Btrfs: fix runtime warning in check-integrity check data mode\n  Btrfs: set ioprio of scrub readahead to idle\n  Btrfs: fix return code in drop_objectid_items\n  Btrfs: check to see if the inode is in the log before fsyncing\n  Btrfs: return value of btrfs_read_buffer is checked correctly\n  Btrfs: read device stats on mount, write modified ones during commit\n  Btrfs: add ioctl to get and reset the device stats\n  Btrfs: add device counters for detected IO and checksum errors\n  btrfs: Drop unused function btrfs_abort_devices()\n  Btrfs: fix the same inode id problem when doing auto defragment\n  Btrfs: fall back to non-inline if we don\u0027t have enough space\n  Btrfs: fix how we deal with the orphan block rsv\n  Btrfs: convert the inode bit field to use the actual bit operations\n  ...\n"
    },
    {
      "commit": "1e20932a23578bb1ec59107843574e259b96193f",
      "tree": "844ae54293c4414fc4c232a36d0e4d4939dc35aa",
      "parents": [
        "cfc442b69696b593cb442f09997dcb4cb5748171",
        "c31931088fd6cf953bd0868a2647b6c3928e6c96"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:50:28 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:49:53 2012 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/ulist.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "733f4fbbc1083aa343da739f46ee839705d6cfe3",
      "tree": "0c6dab9e8610eb9b4ccd9a6453caa1588583b1b8",
      "parents": [
        "c11d2c236cc260b36ef644700fbe99bcc7e7da33"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:10 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:41 2012 -0400"
      },
      "message": "Btrfs: read device stats on mount, write modified ones during commit\n\nThe device statistics are written into the device tree with each\ntransaction commit. Only modified statistics are written.\nWhen a filesystem is mounted, the device statistics for each involved\ndevice are read from the device tree and used to initialize the\ncounters.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "442a4f6308e694e0fa6025708bd5e4e424bbf51c",
      "tree": "e782db1bcbec25283048d77871e0bed7ad04567c",
      "parents": [
        "d07eb9117050c9ed3f78296ebcc06128b52693be"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:08 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:39 2012 -0400"
      },
      "message": "Btrfs: add device counters for detected IO and checksum errors\n\nThe goal is to detect when drives start to get an increased error rate,\nwhen drives should be replaced soon. Therefore statistic counters are\nadded that count IO errors (read, write and flush). Additionally, the\nsoftware detected errors like checksum errors and corrupted blocks are\ncounted.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "d07eb9117050c9ed3f78296ebcc06128b52693be",
      "tree": "e4328e49440b4330d5a58416e40ec13e738d5dad",
      "parents": [
        "762f2263260d576504aeb23d20f90120acdb025f"
      ],
      "author": {
        "name": "Asias He",
        "email": "asias@redhat.com",
        "time": "Fri May 25 11:10:21 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:39 2012 -0400"
      },
      "message": "btrfs: Drop unused function btrfs_abort_devices()\n\n1) This function is not used anywhere.\n\n2) Using the blk_abort_queue() to abort the queue seems not correct.\nblk_abort_queue() is used for timeout handling (block/blk-timeout.c).\n\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: linux-btrfs@vger.kernel.org\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Asias He \u003casias@redhat.com\u003e\n"
    },
    {
      "commit": "8a35d95ff4680a456d3ce47df9638f33d4f54f20",
      "tree": "8adb116747b84209406d29767b56e2a6ade2f2f4",
      "parents": [
        "72ac3c0d7921f943d92d1ef42a549fb52e56817d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 23 14:26:42 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:37 2012 -0400"
      },
      "message": "Btrfs: fix how we deal with the orphan block rsv\n\nCeph was hitting this race where we would remove an inode from the per-root\norphan list before we would release the space we had reserved for the inode.\nWe actually don\u0027t need a list or anything, we just need to make sure the\nroot doesn\u0027t try to free up the orphan reserve until after the inodes have\nreleased their reservations.  So use an atomic counter instead of a list on\nthe root and only decrement the counter after we\u0027ve released our\nreservation.  I\u0027ve tested this as well as several others and we no longer\nsee the warnings that you would see while running ceph.  Thanks,\nBtrfs: fix how we deal with the orphan block rsv\n\nCeph was hitting this race where we would remove an inode from the per-root\norphan list before we would release the space we had reserved for the inode.\nWe actually don\u0027t need a list or anything, we just need to make sure the\nroot doesn\u0027t try to free up the orphan reserve until after the inodes have\nreleased their reservations.  So use an atomic counter instead of a list on\nthe root and only decrement the counter after we\u0027ve released our\nreservation.  I\u0027ve tested this as well as several others and we no longer\nsee the warnings that you would see while running ceph.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "72ac3c0d7921f943d92d1ef42a549fb52e56817d",
      "tree": "c8825a2b3848f201a2b67b3a2ec0aaf9669f9ed3",
      "parents": [
        "cd023e7b17fe86c530475da210b3348421c40e5f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 23 14:13:11 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:36 2012 -0400"
      },
      "message": "Btrfs: convert the inode bit field to use the actual bit operations\n\nMiao pointed this out while I was working on an orphan problem that messing\nwith a bitfield where different ranges are protected by different locks\ndoesn\u0027t work out right.  Turns out we\u0027ve been doing this forever where we\nhave different parts of the bit field protected by either no lock at all or\ndifferent locks which could cause all sorts of weird problems including the\nissue I was hitting.  So instead make a runtime_flags thing that we use the\nnormal bit operations on that are all atomic so we can keep having our\nno/different locking for the different flags and then make force_compress\nit\u0027s own thing so it can be treated normally.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5fd02043553b02867b29de1ac9fff2ec16b84def",
      "tree": "f378b1042b4fbd366185b8b12b082bce4fd4fac4",
      "parents": [
        "4e89915220e2f1341c757b610d0f0c3821f3a65f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 02 14:00:54 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:33 2012 -0400"
      },
      "message": "Btrfs: finish ordered extents in their own thread\n\nWe noticed that the ordered extent completion doesn\u0027t really rely on having\na page and that it could be done independantly of ending the writeback on a\npage.  This patch makes us not do the threaded endio stuff for normal\nbuffered writes and direct writes so we can end page writeback as soon as\npossible (in irq context) and only start threads to do the ordered work when\nit is actually done.  Compression needs to be reworked some to take\nadvantage of this as well, but atm it has to do a find_get_page in its endio\nhandler so it must be done in its own thread.  This makes direct writes\nquite a bit faster.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f29021b29a85701c08afadfd51d87163fb078059",
      "tree": "b3d0bd17f97ae92c1c70031704ddf833b3bd8a7f",
      "parents": [
        "815a51c74ad14864d0a8fff5eea983819c18feae"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:55:38 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:54 2012 +0200"
      },
      "message": "Btrfs: add tree mod log to fs_info\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "5581a51a59a1f5f51ac3d4bacafb738d35e0350b",
      "tree": "d7e291e139d08f2be7870c9da602658df8f51ce8",
      "parents": [
        "976b1908d97bd8cbd024ba7aafaa3fb637ea8e13"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:04:52 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:53 2012 +0200"
      },
      "message": "Btrfs: don\u0027t set for_cow parameter for tree block functions\n\nThree callers of btrfs_free_tree_block or btrfs_alloc_tree_block passed\nparameter for_cow \u003d 1. In fact, these two functions should never mark\ntheir tree modification operations as for_cow, because they can change\nthe number of blocks referenced by a tree.\n\nHence, we remove the extra for_cow parameter from these functions and\nmake them pass a zero down.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "e8650a08232e75274304b812ff04cfce9af9671c",
      "tree": "0609c942e6ca99016e788ff2ee2bbed1bb9215a4",
      "parents": [
        "3c2c4b73aa79e4a1b601710b59e092441175f4bb",
        "f70d4a95edc7da87f39cd8b603ba131df2c198ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 19:22:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 19:22:50 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial updates from Jiri Kosina:\n \"As usual, it\u0027s mostly typo fixes, redundant code elimination and some\n  documentation updates.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (57 commits)\n  edac, mips: don\u0027t change code that has been removed in edac/mips tree\n  xtensa: Change mail addresses of Hannes Weiner and Oskar Schirmer\n  lib: Change mail address of Oskar Schirmer\n  net: Change mail address of Oskar Schirmer\n  arm/m68k: Change mail address of Sebastian Hess\n  i2c: Change mail address of Oskar Schirmer\n  net: Fix tcp_build_and_update_options comment in struct tcp_sock\n  atomic64_32.h: fix parameter naming mismatch\n  Kconfig: replace \"--- help ---\" with \"---help---\"\n  c2port: fix bogus Kconfig \"default no\"\n  edac: Fix spelling errors.\n  qla1280: Remove redundant NULL check before release_firmware() call\n  remoteproc: remove redundant NULL check before release_firmware()\n  qla2xxx: Remove redundant NULL check before release_firmware() call.\n  aic94xx: Get rid of redundant NULL check before release_firmware() call\n  tehuti: delete redundant NULL check before release_firmware()\n  qlogic: get rid of a redundant test for NULL before call to release_firmware()\n  bna: remove redundant NULL test before release_firmware()\n  tg3: remove redundant NULL test before release_firmware() call\n  typhoon: get rid of redundant conditional before all to release_firmware()\n  ...\n"
    },
    {
      "commit": "b9fab919b748c7b39c19ff236ed6c5682c266dde",
      "tree": "49e5a6f8041a7f0a9be0c1a39cd9088e3faa1df2",
      "parents": [
        "ea9947b4395fa34666086b2fa6f686e94903e047"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 06 07:23:47 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 06 07:23:47 2012 -0400"
      },
      "message": "Btrfs: avoid sleeping in verify_parent_transid while atomic\n\nverify_parent_transid needs to lock the extent range to make\nsure no IO is underway, and so it can safely clear the\nuptodate bits if our checks fail.\n\nBut, a few callers are using it with spinlocks held.  Most\nof the time, the generation numbers are going to match, and\nwe don\u0027t want to switch to a blocking lock just for the error\ncase.  This adds an atomic flag to verify_parent_transid,\nand changes it to return EAGAIN if it needs to block to\nproperly verifiy things.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5cf1ab56133ad7b712673c071b439d4a555a2d1e",
      "tree": "c7b301296750707f47487f508398f1baec81f48b",
      "parents": [
        "48d282326b3ce5f435835f5fb0e3231c399f4f9a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 16 09:42:26 2012 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:30 2012 +0200"
      },
      "message": "Btrfs: always store the mirror we read the eb from\n\nA user reported a panic where we were trying to fix a bad mirror but the\nmirror number we were giving was 0, which is invalid.  This is because we\ndon\u0027t do the transid verification until after the read, so as far as the\nread code is concerned the read was a success.  So instead store the mirror\nwe read from so that if there is some failure post read we know which mirror\nto try next and which mirror needs to be fixed if we find a good copy of the\nblock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8d082fb727ac11930ea20bf1612e334ea7c2b697",
      "tree": "417f84a4e3743bf0af435e0e339ef3fc54520a68",
      "parents": [
        "207a232ccac0a8cb79d304bd17298dbc96e2e082"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Tue Apr 03 09:56:53 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:13 2012 +0200"
      },
      "message": "Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE\n\nOur code is not ready to cope with a sectorsize that\u0027s not equal to PAGE_SIZE.\nIt will lead to hanging-on while writing something.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "e75d660672ddd11704b7f0fdb8ff21968587b266",
      "tree": "ccb9c107744c10b553c0373e450bee3971d16c00",
      "parents": [
        "61282f37927143e45b03153f3e7b48d6b702147a",
        "0034102808e0dbbf3a2394b82b1bb40b5778de9e"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Sun Apr 08 21:48:52 2012 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Sun Apr 08 21:48:52 2012 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nMerge with latest Linus\u0027 tree, as I have incoming patches\nthat fix code that is newer than current HEAD of for-next.\n\nConflicts:\n\tdrivers/net/ethernet/realtek/r8169.c\n"
    },
    {
      "commit": "9c017abc50f00e80aee6a705a9207fa818a48dda",
      "tree": "d0ad22f00111f4cf76a3d5570afe12c637bf376f",
      "parents": [
        "04bd27aed1459ff4d63d1ab6b0ac26b1e550a121"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Mon Feb 27 00:04:56 2012 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Apr 05 17:07:14 2012 -0700"
      },
      "message": "btrfs: assignment in write_dev_flush() doesn\u0027t need two semi-colons\n\nOne is enough.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "bc3f116fec194f1d7329b160c266fe16b9266a1e",
      "tree": "67f9be8d4527c37c1ad85bdcbc1b6cca7328f49c",
      "parents": [
        "e1f041e14cfb322f41f41a308bfede00f1b080cd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 17:02:47 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 17:02:47 2012 -0400"
      },
      "message": "Btrfs: update the checks for mixed block groups with big metadata blocks\n\nDave Sterba had put in patches to look for mixed data/metadata groups\nwith metadata bigger than 4KB.  But these ended up in the wrong place\nand it wasn\u0027t testing the feature flag correctly.\n\nThis updates the tests to make sure our sizes are matching\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3c4bb26b213e618473e486776483a5bad15ba6da",
      "tree": "7a20f6ff0f6ec4dd9f0d7a51d787f2f65d89aa74",
      "parents": [
        "98961a7e431735c791dbaaf0337029e219a5db5a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 27 18:56:56 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:58 2012 -0400"
      },
      "message": "Btrfs: flush out and clean up any block device pages during mount\n\nBtrfs puts the filesystem metadata into its own address space, and\nsomehow the block device address space isn\u0027t getting onto disk properly\nbefore a mount.  The end result is that a loop of mkfs and mounting the\nfilesystem will sometimes find stale or incorrect data.\n\nThis commit should fix it by sprinkling fdatawrites and invalidate_bdev\ncalls around.  This is a short term measure to make sure it is fixed.\nThe block devices really should be flushed and cleaned up higher in the\nstack.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225",
      "tree": "a7dde6312ec24eb6368cad7a3efedbf368a5a70c",
      "parents": [
        "b5d67f64f9bc656970dacba245410f0faedad18e",
        "65139ed99234d8505948cdb7a835452eb5c191f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "message": "Merge branch \u0027error-handling\u0027 into for-linus\n\nConflicts:\n\tfs/btrfs/ctree.c\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/inode.c\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "65139ed99234d8505948cdb7a835452eb5c191f9",
      "tree": "92e2c5e62c55d19bbac1a74e1699321323e65542",
      "parents": [
        "fcd1f065daca593badb7f99d473639cf3b551795"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Fri Feb 17 12:26:09 2012 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:30:28 2012 -0400"
      },
      "message": "btrfs: disallow unequal data/metadata blocksize for mixed block groups\n\nWith support for bigger metadata blocks, we must avoid mounting a\nfilesystem with different block size for mixed block groups, this causes\ncorruption (found by xfstests/083).\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "fcd1f065daca593badb7f99d473639cf3b551795",
      "tree": "b4dda48c9db913270d66344a2787829149b3a2bd",
      "parents": [
        "914b20070b413ca10f832c45a58b2894990f065f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Mar 06 00:06:18 2012 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:30:28 2012 -0400"
      },
      "message": "Btrfs: enhance superblock sanity checks\n\nValidate checksum algorithm during mount and prevent BUG_ON later in\nbtrfs_super_csum_size.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "ea466794084f55d8fcc100711cf17923bf57e962",
      "tree": "9905d556655ff0f036936ea51f9aa214bd2cbce8",
      "parents": [
        "f3f266ab1bfe4770375d24fa8e72a03278e9450a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 26 21:57:36 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 21:57:36 2012 -0400"
      },
      "message": "Btrfs: deal with read errors on extent buffers differently\n\nSince we need to read and write extent buffers in their entirety we can\u0027t use\nthe normal bio_readpage_error stuff since it only works on a per page basis.  So\ninstead make it so that if we see an io error in endio we just mark the eb as\nhaving an IO error and then in btree_read_extent_buffer_pages we will manually\ntry other mirrors and then overwrite the bad mirror if we find a good copy.\nThis works with larger than page size blocks.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f3f266ab1bfe4770375d24fa8e72a03278e9450a",
      "tree": "7b3e7f79cad427e978230da6afa8d51a4aa6b58f",
      "parents": [
        "f7c79f30cb2d3883488e70cafc9e3a7edd4b9fdb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 23 10:22:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:24 2012 -0400"
      },
      "message": "Btrfs: don\u0027t use threaded IO completion helpers for metadata writes\n\nThe metadata write IO completion code is now simple enough that we\ndon\u0027t need the threaded helpers anymore.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b32f4bbb423f02acee6d43cd442f5f0775db7e0",
      "tree": "1963e5420071e70274bf77c05373dabd43bac675",
      "parents": [
        "5df4235ea15bd39f441ef334d8329b3d46b2cc57"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Mar 13 09:38:00 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:23 2012 -0400"
      },
      "message": "Btrfs: ensure an entire eb is written at once\n\nThis patch simplifies how we track our extent buffers.  Previously we could exit\nwritepages with only having written half of an extent buffer, which meant we had\nto track the state of the pages and the state of the extent buffers differently.\nNow we only read in entire extent buffers and write out entire extent buffers,\nthis allows us to simply set bits in our bflags to indicate the state of the eb\nand we no longer have to do things like track uptodate with our iotree.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3083ee2e18b701122a3b841db83448543a87a583",
      "tree": "0265021499da54e5b4667a041f8b82c6d1a8667e",
      "parents": [
        "115391d2315239164e400a8259b26392afccf3bd"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Mar 09 16:01:49 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:51:08 2012 -0400"
      },
      "message": "Btrfs: introduce free_extent_buffer_stale\n\nBecause btrfs cow\u0027s we can end up with extent buffers that are no longer\nnecessary just sitting around in memory.  So instead of evicting these pages, we\ncould end up evicting things we actually care about.  Thus we have\nfree_extent_buffer_stale for use when we are freeing tree blocks.  This will\nmake it so that the ref for the eb being in the radix tree is dropped as soon as\npossible and then is freed when the refcount hits 0 instead of waiting to be\nreleased by releasepage.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4f2de97acee6532b36dd6e995b858343771ad126",
      "tree": "240ee16e76f2f2e4850e6fe2e90174e7cd794a9b",
      "parents": [
        "727011e07cbdf87772fcc1999cccd15cc915eb62"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Mar 07 16:20:05 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:51:07 2012 -0400"
      },
      "message": "Btrfs: set page-\u003eprivate to the eb\n\nWe spend a lot of time looking up extent buffers from pages when we could just\nstore the pointer to the eb the page is associated with in page-\u003eprivate.  This\npatch does just that, and it makes things a little simpler and reduces a bit of\nCPU overhead involved with doing metadata IO.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "727011e07cbdf87772fcc1999cccd15cc915eb62",
      "tree": "05405dc1e9c86d67dbb02ddf063bd0c137ce6707",
      "parents": [
        "81c9ad237c604adec79fd4d4034264c6669e0ab3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Aug 06 13:21:20 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 16:50:37 2012 -0400"
      },
      "message": "Btrfs: allow metadata blocks larger than the page size\n\nA few years ago the btrfs code to support blocks lager than\nthe page size was disabled to fix a few corner cases in the\npage cache handling.  This fixes the code to properly support\nlarge metadata blocks again.\n\nSince current kernels will crash early and often with larger\nmetadata blocks, this adds an incompat bit so that older kernels\ncan\u0027t mount it.\n\nThis also does away with different blocksizes for nodes and leaves.\nYou get a single block size for all tree blocks.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "914b20070b413ca10f832c45a58b2894990f065f",
      "tree": "1c1f6af7f0f1243e9585a4b726065d579eebc3e9",
      "parents": [
        "79787eaab46121d4713ed03c8fc63b9ec3eaec76"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Mar 12 16:05:50 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:53:11 2012 +0100"
      },
      "message": "btrfs: Fix busyloop in transaction_kthread()\n\nWhen a filesystem got aborted due do error, transaction_kthread() will\nbusyloop.  Fix it by going to sleep in that case as well. Maybe we should\njust stop transaction_kthread() when filesystem is aborted but that would be\nmore complex.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "49b25e0540904be0bf558b84475c69d72e4de66e",
      "tree": "5a89b2f5d6e5bd8b1ff39bdb387071ec1cb2a615",
      "parents": [
        "4da35113426d16673aa1fb0613c14ca2e419e7fd"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 17:24:58 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:40 2012 +0100"
      },
      "message": "btrfs: enhance transaction abort infrastructure\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "d0082371cf086e0ba2bbd0367b2c9920532df24f",
      "tree": "4ae3fb6565f36fd606ab6e4b83d489e66b3b86d7",
      "parents": [
        "143bede527b054a271053f41bfaca2b57baa9408"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: drop gfp_t from lock_extent\n\n lock_extent and unlock_extent are always called with GFP_NOFS, drop the\n argument and use GFP_NOFS consistently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "355808c296c6923db6705f43639969a80b16d15d",
      "tree": "c8f7e1877935fcbfdb0937fea7cd2b29dc474f71",
      "parents": [
        "3444a97255de907f32562741fb6d104620b9fce3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:14 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: -\u003esubmit_bio_hook error push-up\n\nThis pushes failures from the submit_bio_hook callbacks,\nbtrfs_submit_bio_hook and btree_submit_bio_hook into the callers, including\ncallers of submit_one_bio where it catches the failures with BUG_ON.\n\nIt also pushes up through the -\u003ereadpage_io_failed_hook to\nend_bio_extent_writepage where the error is already caught with BUG_ON.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "200a5c17677e1ee8b78382046f3748c9f5816281",
      "tree": "aca0964b50af798d919ca3b710cfcd9c69498170",
      "parents": [
        "6763af84a69f23c1c79f00720982e74fcff4d1f3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:43 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:32 2012 +0100"
      },
      "message": "btrfs: find_and_setup_root error push-up\n\nfind_and_setup_root BUGs when it encounters an error from\nbtrfs_find_last_root, which can occur if a path can\u0027t be allocated.\n\nThis patch pushes it up to its callers where it is already handled.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "d5c13f927fe77b11a67f79559808c68b26474c77",
      "tree": "4725c8b83309fa8431fea85bf9acc99b8e015291",
      "parents": [
        "d16cb050e5b1c3a9d754fed7098eefb8237877d1"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:27 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:31 2012 +0100"
      },
      "message": "btrfs: clean_tree_block should panic on observed memory corruption and return void\n\n The only error condition in clean_tree_block is an accounting bug.\n Returning without modifying dirty_metadata_bytes and as if the cleaning\n as been performed may cause problems later so it should panic instead.\n\n It should probably be a BUG_ON but we have btrfs_panic now.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "855a85f704026d5fe7de94fb1b765fe03404507f",
      "tree": "553817c0f7230e104623dc7e8a900bbbcc881d3e",
      "parents": [
        "ee3253241a928f6c5c40960629d7071eb6a4b23c",
        "e77266e4c4be6f9dc91bf688bce015a8babd5fe0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nQuoth Chris:\n \"This is later than I wanted because I got backed up running through\n  btrfs bugs from the Oracle QA teams.  But they are all bug fixes that\n  we\u0027ve queued and tested since rc1.\n\n  Nothing in particular stands out, this just reflects bug fixing and QA\n  done in parallel by all the btrfs developers.  The most user visible\n  of these is:\n\n    Btrfs: clear the extent uptodate bits during parent transid failures\n\n  Because that helps deal with out of date drives (say an iscsi disk\n  that has gone away and come back).  The old code wasn\u0027t always\n  properly retrying the other mirror for this type of failure.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)\n  Btrfs: fix compiler warnings on 32 bit systems\n  Btrfs: increase the global block reserve estimates\n  Btrfs: clear the extent uptodate bits during parent transid failures\n  Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n  Btrfs: make sure we update latest_bdev\n  Btrfs: improve error handling for btrfs_insert_dir_item callers\n  Btrfs: be less strict on finding next node in clear_extent_bit\n  Btrfs: fix a bug on overcommit stuff\n  Btrfs: kick out redundant stuff in convert_extent_bit\n  Btrfs: skip states when they does not contain bits to clear\n  Btrfs: check return value of lookup_extent_mapping() correctly\n  Btrfs: fix deadlock on page lock when doing auto-defragment\n  Btrfs: fix return value check of extent_io_ops\n  btrfs: honor umask when creating subvol root\n  btrfs: silence warning in raid array setup\n  btrfs: fix structs where bitfields and spinlock/atomic share 8B word\n  btrfs: delalloc for page dirtied out-of-band in fixup worker\n  Btrfs: fix memory leak in load_free_space_cache()\n  btrfs: don\u0027t check DUP chunks twice\n  Btrfs: fix trim 0 bytes after a device delete\n  ...\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": "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": "67d2433ee7aa631bc3ab14c2af6bbc1d44d13a00",
      "tree": "eb29e1489f9f4a99308e08568328de73fb89fc2e",
      "parents": [
        "1c36ab1a318ab5b3b502e7e4fff3628d1a97861f",
        "9998eb703490589c3e8f1bf09b15203156776edb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 28 17:00:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 28 17:00:19 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: fix reservations in btrfs_page_mkwrite\n  Btrfs: advance window_start if we\u0027re using a bitmap\n  btrfs: mask out gfp flags in releasepage\n  Btrfs: fix enospc error caused by wrong checks of the chunk\n  Btrfs: do not defrag a file partially\n  Btrfs: fix warning for 32-bit build of fs/btrfs/check-integrity.c\n  Btrfs: use cluster-\u003ewindow_start when allocating from a cluster bitmap\n  Btrfs: Check for NULL page in extent_range_uptodate\n  btrfs: Fix busyloops in transaction waiting code\n  Btrfs: make sure a bitmap has enough bytes\n  Btrfs: fix uninit warning in backref.c\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": "d65773b22b749252b2805dcf96bdeb951a9481d8",
      "tree": "1839656e894933267e7466e32ba6ad73b24fa60a",
      "parents": [
        "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
        "f84a8bd60e3ee49eacc9ba824babf149ba3dad7e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "message": "Merge branch \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  btrfs: take allocation of -\u003etree_root into open_ctree()\n  btrfs: let -\u003es_fs_info point to fs_info, not root...\n  btrfs: consolidate failure exits in btrfs_mount() a bit\n  btrfs: make free_fs_info() call -\u003ekill_sb() unconditional\n  btrfs: merge free_fs_info() calls on fill_super failures\n  btrfs: kill pointless reassignment of -\u003es_fs_info in btrfs_fill_super()\n  btrfs: make open_ctree() return int\n  btrfs: sanitizing -\u003efs_info, part 5\n  btrfs: sanitizing -\u003efs_info, part 4\n  btrfs: sanitizing -\u003efs_info, part 3\n  btrfs: sanitizing -\u003efs_info, part 2\n  btrfs: sanitizing -\u003efs_info, part 1\n  btrfs: fix a deadlock in btrfs_scan_one_device()\n  btrfs: fix mount/umount race\n  btrfs: get -\u003ekill_sb() of its own\n  btrfs: preparation to fixing mount/umount race\n"
    },
    {
      "commit": "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
      "tree": "7bd26fc9a111c6af1601ecd2d1b0ab60da32f3f0",
      "parents": [
        "67175b855bfd6ed95ffeff95532173c07de6432d",
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)\n  Btrfs: use larger system chunks\n  Btrfs: add a delalloc mutex to inodes for delalloc reservations\n  Btrfs: space leak tracepoints\n  Btrfs: protect orphan block rsv with spin_lock\n  Btrfs: add allocator tracepoints\n  Btrfs: don\u0027t call btrfs_throttle in file write\n  Btrfs: release space on error in page_mkwrite\n  Btrfs: fix btrfsck error 400 when truncating a compressed\n  Btrfs: do not use btrfs_end_transaction_throttle everywhere\n  Btrfs: add balance progress reporting\n  Btrfs: allow for resuming restriper after it was paused\n  Btrfs: allow for canceling restriper\n  Btrfs: allow for pausing restriper\n  Btrfs: add skip_balance mount option\n  Btrfs: recover balance on mount\n  Btrfs: save balance parameters to disk\n  Btrfs: soft profile changing mode (aka soft convert)\n  Btrfs: implement online profile changing\n  Btrfs: do not reduce profile in do_chunk_alloc()\n  Btrfs: virtual address space subset filter\n  ...\n\nFix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new\nmnt_drop_write_file() helper.\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": "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": "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": "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": "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": "a6bc32b899223a877f595ef9ddc1e89ead5072b8",
      "tree": "a9529f7af2cf8e77bb6670acea32169c891a2b76",
      "parents": [
        "66199712e9eef5aede09dbcd9dfff87798a66917"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:43 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: introduce sync-light migration for use by compaction\n\nThis patch adds a lightweight sync migrate operation MIGRATE_SYNC_LIGHT\nmode that avoids writing back pages to backing storage.  Async compaction\nmaps to MIGRATE_ASYNC while sync compaction maps to MIGRATE_SYNC_LIGHT.\nFor other migrate_pages users such as memory hotplug, MIGRATE_SYNC is\nused.\n\nThis avoids sync compaction stalling for an excessive length of time,\nparticularly when copying files to a USB stick where there might be a\nlarge number of dirty pages backed by a filesystem that does not support\n-\u003ewritepages.\n\n[aarcange@redhat.com: This patch is heavily based on Andrea\u0027s work]\n[akpm@linux-foundation.org: fix fs/nfs/write.c build]\n[akpm@linux-foundation.org: fix fs/btrfs/disk-io.c build]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b969c4ab9f182a6e1b2a0848be349f99714947b0",
      "tree": "dc1c6e4375cfec7b15f13a37307eba8a9e07f40f",
      "parents": [
        "7335084d446b83cbcb15da80497d03f0c1dc9e21"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Thu Jan 12 17:19:34 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:09 2012 -0800"
      },
      "message": "mm: compaction: determine if dirty pages can be migrated without blocking within -\u003emigratepage\n\nAsynchronous compaction is used when allocating transparent hugepages to\navoid blocking for long periods of time.  Due to reports of stalling,\nthere was a debate on disabling synchronous compaction but this severely\nimpacted allocation success rates.  Part of the reason was that many dirty\npages are skipped in asynchronous compaction by the following check;\n\n\tif (PageDirty(page) \u0026\u0026 !sync \u0026\u0026\n\t\tmapping-\u003ea_ops-\u003emigratepage !\u003d migrate_page)\n\t\t\trc \u003d -EBUSY;\n\nThis skips over all mapping aops using buffer_migrate_page() even though\nit is possible to migrate some of these pages without blocking.  This\npatch updates the -\u003emigratepage callback with a \"sync\" parameter.  It is\nthe responsibility of the callback to fail gracefully if migration would\nblock.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andy Isaacson \u003cadi@hexapodia.org\u003e\nCc: Nai Xia \u003cnai.xia@gmail.com\u003e\nCc: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "f84a8bd60e3ee49eacc9ba824babf149ba3dad7e",
      "tree": "8c2eeefe7660147385bfd6f7f36457c58025fe84",
      "parents": [
        "815745cf3e46681241ad8025602ffbf2a452d514"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 15:57:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:37:02 2012 -0500"
      },
      "message": "btrfs: take allocation of -\u003etree_root into open_ctree()\n\nnow that we don\u0027t need it for sget() anymore...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "815745cf3e46681241ad8025602ffbf2a452d514",
      "tree": "7902ae81b199b383b5552e71b6d1cd21aff17fdb",
      "parents": [
        "59553edf110e5576d91be9dd5bd53d110e0d0290"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 15:40:49 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:35:37 2012 -0500"
      },
      "message": "btrfs: let -\u003es_fs_info point to fs_info, not root...\n\nthe latter can be obtained from the former (by looking as -\u003etree_root)\njust as cheaply as we currently are doing the other way round.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be7e0950def403e90b5295ff2192c39967bf2aec",
      "tree": "ee468d0b63e30ac8270e1daabc823b51e4759f25",
      "parents": [
        "29db78aa0ac82319b764b87a1c5030d74523e296"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:40:05 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:40 2012 -0500"
      },
      "message": "btrfs: merge free_fs_info() calls on fill_super failures\n\n... all the way up into btrfs_mount().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ad2b2c802be2d3e8ed8364fef5ffaddabe448219",
      "tree": "5927c2170cd4edb1d930cabae0c6f0006aa972fd",
      "parents": [
        "e3029d9fd426c8f582210ba35551ae5506218345"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:10:02 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:39 2012 -0500"
      },
      "message": "btrfs: make open_ctree() return int\n\nIt returns either ERR_PTR(-ve) or sb-\u003es_fs_info.  The latter can\nbe found by caller just as well, TYVM, no need to return it.  Just\nreturn -ve or 0...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e3029d9fd426c8f582210ba35551ae5506218345",
      "tree": "629376e0a5db20e91d5f6b40cc2ab26c2bc35883",
      "parents": [
        "6f07e42ee6fcc252a210781d7262f4051e9fd8f6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 00:56:18 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:38 2012 -0500"
      },
      "message": "btrfs: sanitizing -\u003efs_info, part 5\n\nclose_ctree() uses a weird mix of accesses to root-\u003efs_info and\nits value at the beginning of function stored in local variable.\nSince -\u003efs_info *never* changes, let\u0027s just use the local variable\nto avoid confusion.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6f07e42ee6fcc252a210781d7262f4051e9fd8f6",
      "tree": "70686d28678c69586570032c47ecdc4636c7a4f3",
      "parents": [
        "38a77db49ad8f78369dcdfb693b8e5a818a60104"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 00:46:16 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:38 2012 -0500"
      },
      "message": "btrfs: sanitizing -\u003efs_info, part 4\n\nA new helper: btrfs_alloc_root(fs_info); allocates btrfs_root\nand sets -\u003efs_info.  All places allocating the suckers converted\nto it.  At that point we *never* reassign -\u003efs_info of btrfs_root;\nit\u0027s set before anyone sees the address of newly allocated\nstruct btrfs_root and never assigned anywhere else.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "38a77db49ad8f78369dcdfb693b8e5a818a60104",
      "tree": "0987ff5d4029c016b173f72c7e1883ab9cbc59a9",
      "parents": [
        "1233f546ec29ac32424327baf6ae5df81e3d9eae"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 00:38:54 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:37 2012 -0500"
      },
      "message": "btrfs: sanitizing -\u003efs_info, part 3\n\nmove assignments to -\u003efs_info in open_ctree() up, to the place\njust after the original allocations.  Assignment for tree_root\nbecomes a no-op - we\u0027d obtained fs_info from tree_root-\u003efs_info\nin the first place.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1233f546ec29ac32424327baf6ae5df81e3d9eae",
      "tree": "43a9e1a6ea99627ee0d54641572a98ec165172de",
      "parents": [
        "2eb34cd368b3e5cef960ae9d9971a037cd6fa9d3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 00:34:00 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:37 2012 -0500"
      },
      "message": "btrfs: sanitizing -\u003efs_info, part 2\n\nlift assignment to callers of find_and_setup_root()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2eb34cd368b3e5cef960ae9d9971a037cd6fa9d3",
      "tree": "44a64d151c1d3c6b7941b2aa059d08fe7d175974",
      "parents": [
        "10f6327b5d26660e06120ba17cff993cb616b1d2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 00:32:06 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:36 2012 -0500"
      },
      "message": "btrfs: sanitizing -\u003efs_info, part 1\n\ntake assignment of -\u003efs_info to callers of __setup_root()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98c7089c769048f941bd5c5285287f8fc301f8b1",
      "tree": "3e31f46b43fb1b533dc720db7a9d84da3b148433",
      "parents": [
        "48fa57ac2c30a8a0b770b7ad50b4b30c1d12f005"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:00:31 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:33:22 2012 -0500"
      },
      "message": "btrfs: preparation to fixing mount/umount race\n\nWe need fs_info and root to live until the moment when the victim\nsuperblock leaves the list, so we need to postpone free_fs_info()\nuntil after -\u003eput_super().  The call is buried in close_ctree(),\nthough, so we need to lift it into the callers (including\nbtrfs_put_super()) first.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "66d7e7f09f77456fe68683247d77721032a00ee5",
      "tree": "bbf7df3933ed47aa202d60d835864543d25df82d",
      "parents": [
        "c7d22a3c3cdb73d8a0151e2ccc8cf4a48c48310b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon Sep 12 15:26:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 22 16:22:27 2011 +0100"
      },
      "message": "Btrfs: mark delayed refs as for cow\n\nAdd a for_cow parameter to add_delayed_*_ref and pass the appropriate value\nfrom every call site. The for_cow parameter will later on be used to\ndetermine if a ref will change anything with respect to qgroups.\n\nDelayed refs coming from relocation are always counted as for_cow, as they\ndon\u0027t change subvol quota.\n\nAlso pass in the fs_info for later use.\n\nbtrfs_find_all_roots() will use this as an optimization, as changes that are\nfor_cow will not change anything with respect to which root points to a\ncertain leaf. Thus, we don\u0027t need to add the current sequence number to\nthose 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": "b00f4dc5ff022cb9cbaffd376d9454d7fa1e496f",
      "tree": "40f1b232e2f1e8ac365317a14fdcbcb331722b46",
      "parents": [
        "1eac8111e0763853266a171ce11214da3a347a0a",
        "b9e26dfdad5a4f9cbdaacafac6998614cc9c41bc"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 21:59:45 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 21:59:45 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into pm-sleep\n\n* master: (848 commits)\n  SELinux: Fix RCU deref check warning in sel_netport_insert()\n  binary_sysctl(): fix memory leak\n  mm/vmalloc.c: remove static declaration of va from __get_vm_area_node\n  ipmi_watchdog: restore settings when BMC reset\n  oom: fix integer overflow of points in oom_badness\n  memcg: keep root group unchanged if creation fails\n  nilfs2: potential integer overflow in nilfs_ioctl_clean_segments()\n  nilfs2: unbreak compat ioctl\n  cpusets: stall when updating mems_allowed for mempolicy or disjoint nodemask\n  evm: prevent racing during tfm allocation\n  evm: key must be set once during initialization\n  mmc: vub300: fix type of firmware_rom_wait_states module parameter\n  Revert \"mmc: enable runtime PM by default\"\n  mmc: sdhci: remove \"state\" argument from sdhci_suspend_host\n  x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT\n  IB/qib: Correct sense on freectxts increment and decrement\n  RDMA/cma: Verify private data length\n  cgroups: fix a css_set not found bug in cgroup_attach_proc\n  oprofile: Fix uninitialized memory access when writing to writing to oprofilefs\n  Revert \"xen/pv-on-hvm kexec: add xs_reset_watches to shutdown watches from old kernel\"\n  ...\n\nConflicts:\n\tkernel/cgroup_freezer.c\n"
    },
    {
      "commit": "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546",
      "tree": "208c3ab6ad8bb35937b21c4d54e45e46d99557ff",
      "parents": [
        "f11e4d7f533249ddfa110116200c5c3a509f9218"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed Nov 09 13:44:05 2011 +0100"
      },
      "committer": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed Dec 21 19:14:17 2011 +0100"
      },
      "message": "Btrfs: integrate integrity check module into btrfs\n\nThis is the last part of the patch series. It modifies the btrfs\ncode to use the integrity check module if configured to do so\nwith the define BTRFS_FS_CHECK_INTEGRITY. If this define is not set,\nthe only effective change is that code is added that handles the\nmount option to activate the integrity check. If the mount option is\nset and the define BTRFS_FS_CHECK_INTEGRITY is not set, that code\ncomplains in the log and the mount fails with EINVAL.\n\nAdd the mount option to activate the usage of the integrity check\ncode.\nAdd invocation of btrfs integrity check code init and cleanup\nfunction on mount and umount, respectively.\nAdd hook to call btrfs integrity check code version of\nsubmit_bh/submit_bio.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "c9a7fe9672612c0b595633d2945f52257ad92b20",
      "tree": "df251545a12fdbb895c07ec9dccde10163624b7f",
      "parents": [
        "2cfab8d74ebfbe06ce2947117945c4f45a5915ec",
        "d85c8a6f1bc083279215ff6e79b7c292bf3ec905",
        "142349f541d0bb6bc3e0d4563268105aada42b0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "message": "Merge branches \u0027for-linus\u0027 and \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: unplug every once and a while\n  Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code\n  Btrfs: only set cache_generation if we setup the block group\n  Btrfs: don\u0027t panic if orphan item already exists\n  Btrfs: fix leaked space in truncate\n  Btrfs: fix how we do delalloc reservations and how we free reservations on error\n  Btrfs: deal with enospc from dirtying inodes properly\n  Btrfs: fix num_workers_starting bug and other bugs in async thread\n  BTRFS: Establish i_ops before calling d_instantiate\n  Btrfs: add a cond_resched() into the worker loop\n  Btrfs: fix ctime update of on-disk inode\n  btrfs: keep orphans for subvolume deletion\n  Btrfs: fix inaccurate available space on raid0 profile\n  Btrfs: fix wrong disk space information of the files\n  Btrfs: fix wrong i_size when truncating a file to a larger size\n  Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror\n\n* \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: lower the dirty balance poll interval\n"
    },
    {
      "commit": "0dc3b84a73267f47a75468f924f5d58a840e3152",
      "tree": "0c2f64c2884a0de54e3fe15971e960f71a722afb",
      "parents": [
        "5dbc8fca8ef5d719014f22345d990e957dcfc692"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 18 14:37:27 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:21 2011 -0500"
      },
      "message": "Btrfs: fix num_workers_starting bug and other bugs in async thread\n\nAl pointed out we have some random problems with the way we account for\nnum_workers_starting in the async thread stuff.  First of all we need to make\nsure to decrement num_workers_starting if we fail to start the worker, so make\n__btrfs_start_workers do this.  Also fix __btrfs_start_workers so that it\ndoesn\u0027t call btrfs_stop_workers(), there is no point in stopping everybody if we\nfailed to create a worker.  Also check_pending_worker_creates needs to call\n__btrfs_start_work in it\u0027s work function since it already increments\nnum_workers_starting.\n\nPeople only start one worker at a time, so get rid of the num_workers argument\neverywhere, and make btrfs_queue_worker a void since it will always succeed.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "986b11c3ee9e0eace25fe74a502205f7fe8c179b",
      "tree": "2271bc519eac458fd92799f5731e2ef604f69341",
      "parents": [
        "bb58dd5d1ffad6c2d21c69698ba766dad4ae54e6",
        "24b7ead3fb0bae267c2ee50898eb4c13aedd1e9f"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Nov 23 21:09:02 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Nov 23 21:09:02 2011 +0100"
      },
      "message": "Merge branch \u0027pm-freezer\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into pm-freezer\n\n* \u0027pm-freezer\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc: (24 commits)\n  freezer: fix wait_event_freezable/__thaw_task races\n  freezer: kill unused set_freezable_with_signal()\n  dmatest: don\u0027t use set_freezable_with_signal()\n  usb_storage: don\u0027t use set_freezable_with_signal()\n  freezer: remove unused @sig_only from freeze_task()\n  freezer: use lock_task_sighand() in fake_signal_wake_up()\n  freezer: restructure __refrigerator()\n  freezer: fix set_freezable[_with_signal]() race\n  freezer: remove should_send_signal() and update frozen()\n  freezer: remove now unused TIF_FREEZE\n  freezer: make freezing() test freeze conditions in effect instead of TIF_FREEZE\n  cgroup_freezer: prepare for removal of TIF_FREEZE\n  freezer: clean up freeze_processes() failure path\n  freezer: kill PF_FREEZING\n  freezer: test freezable conditions while holding freezer_lock\n  freezer: make freezing indicate freeze condition in effect\n  freezer: use dedicated lock instead of task_lock() + memory barrier\n  freezer: don\u0027t distinguish nosig tasks on thaw\n  freezer: remove racy clear_freeze_flag() and set PF_NOFREEZE on dead tasks\n  freezer: rename thaw_process() to __thaw_task() and simplify the implementation\n  ...\n"
    },
    {
      "commit": "af36d15f58a3560617f1497ae011c3192049e40e",
      "tree": "f754dd93f4b14745c5e7b8caf52349716f7f7652",
      "parents": [
        "8ba8ed54de4dd79bb88ab6cd7dbf2e83d58d6d57",
        "24a70313969fc3fc440216b40babdb42564acff3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 22 08:53:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 22 08:53:40 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: remove free-space-cache.c WARN during log replay\n  Btrfs: sectorsize align offsets in fiemap\n  Btrfs: clear pages dirty for io and set them extent mapped\n  Btrfs: wait on caching if we\u0027re loading the free space cache\n  Btrfs: prefix resize related printks with btrfs:\n  btrfs: fix stat blocks accounting\n  Btrfs: avoid unnecessary bitmap search for cluster setup\n  Btrfs: fix to search one more bitmap for cluster setup\n  btrfs: mirror_num should be int, not u64\n  btrfs: Fix up 32/64-bit compatibility for new ioctls\n  Btrfs: fix barrier flushes\n  Btrfs: fix tree corruption after multi-thread snapshots and inode_cache flush\n"
    },
    {
      "commit": "a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6",
      "tree": "0b763388360a5a9043986e1f2201e43df74ebc46",
      "parents": [
        "3a7cbd50f74907580eb47a8d08e1f29741b81abf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "message": "freezer: unexport refrigerator() and update try_to_freeze() slightly\n\nThere is no reason to export two functions for entering the\nrefrigerator.  Calling refrigerator() instead of try_to_freeze()\ndoesn\u0027t save anything noticeable or removes any race condition.\n\n* Rename refrigerator() to __refrigerator() and make it return bool\n  indicating whether it scheduled out for freezing.\n\n* Update try_to_freeze() to return bool and relay the return value of\n  __refrigerator() if freezing().\n\n* Convert all refrigerator() users to try_to_freeze().\n\n* Update documentation accordingly.\n\n* While at it, add might_sleep() to try_to_freeze().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "32240a913d9f3a5aad42175d7696590ea1bfdb08",
      "tree": "444fa1d89ac8f58196943efecc96fe453d739de0",
      "parents": [
        "745c4d8e160afaf6c75e887c27ea4b75c8142b26"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:14 2011 -0500"
      },
      "message": "btrfs: mirror_num should be int, not u64\n\nMy previous patch introduced some u64 for failed_mirror variables, this one\nmakes it consistent again.\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": "387125fc722a8ed432066b85a552917343bdafca",
      "tree": "cbb37a682f73f17b9ea728be84dcca135914a294",
      "parents": [
        "f1ebcc74d5b2159f44c96b479b6eb8afc7829095"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 18 15:07:51 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:21:14 2011 -0500"
      },
      "message": "Btrfs: fix barrier flushes\n\nWhen btrfs is writing the super blocks, it send barrier flushes to make\nsure writeback caching drives get all the metadata on disk in the\nright order.\n\nBut, we have two bugs in the way these are sent down.  When doing\nfull commits (not via the tree log), we are sending the barrier down\nbefore the last super when it should be going down before the first.\n\nIn multi-device setups, we should be waiting for the barriers to\ncomplete on all devices before writing any of the supers.\n\nBoth of these bugs can cause corruptions on power failures.  We fix it\nwith some new code to send down empty barriers to all devices before\nwriting the first super.\n\nAlexandre Oliva found the multi-device bug.  Arne Jansen did the async\nbarrier loop.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReported-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\n"
    },
    {
      "commit": "c1f4246716392ec8693c23cffb969bd73c1b0910",
      "tree": "6160ac2507b28cf7625be79dd539a286c9fe4e43",
      "parents": [
        "fe10e6f4b24ef8ca12cb4d2368deb4861ab1861b",
        "8965593e41dd2d0e2a2f1e6f245336005ea94a2c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 11 23:47:06 2011 -0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 11 23:47:06 2011 -0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: rename the option to nospace_cache\n  Btrfs: handle bio_add_page failure gracefully in scrub\n  Btrfs: fix deadlock caused by the race between relocation\n  Btrfs: only map pages if we know we need them when reading the space cache\n  Btrfs: fix orphan backref nodes\n  Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}\n  Btrfs: fix unreleased path in btrfs_orphan_cleanup()\n  Btrfs: fix no reserved space for writing out inode cache\n  Btrfs: fix nocow when deleting the item\n  Btrfs: tweak the delayed inode reservations again\n  Btrfs: rework error handling in btrfs_mount()\n  Btrfs: close devices on all error paths in open_ctree()\n  Btrfs: avoid null dereference and leaks when bailing from open_ctree()\n  Btrfs: fix subvol_name leak on error in btrfs_mount()\n  Btrfs: fix memory leak in btrfs_parse_early_options()\n  Btrfs: fix our reservations for updating an inode when completing io\n  Btrfs: fix oops on NULL trans handle in btrfs_truncate\n  btrfs: fix double-free \u0027tree_root\u0027 in \u0027btrfs_mount()\u0027\n"
    },
    {
      "commit": "586e46e2813c589d26258a599580421fb6fb576b",
      "tree": "dfbdacfd14bec153909e13f8ab23480e292e41f6",
      "parents": [
        "4d34b2789538befa45a68a191dc12e0886a69f7d"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 13:26:37 2011 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 22:53:38 2011 +0200"
      },
      "message": "Btrfs: close devices on all error paths in open_ctree()\n\nFix a bug introduced by 7e662854 where we would leave devices busy on\ncertain error paths in open_ctree().  fs_info is guaranteed to be\nnon-NULL now so it\u0027s safe to dereference it on all error paths.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "4d34b2789538befa45a68a191dc12e0886a69f7d",
      "tree": "83f8e67439f0562ee9d4aa51cf1a3a0166d78f99",
      "parents": [
        "f23c8af8ca2789eeb0ab9ea90c214f9694d96cc5"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 00:08:15 2011 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 22:53:38 2011 +0200"
      },
      "message": "Btrfs: avoid null dereference and leaks when bailing from open_ctree()\n\nFix bugs introduced by 6c41761f.  Firstly, after failing to allocate any\nof the tree roots (first \u0027goto fail\u0027 in open_ctree()) we would\ndereference a NULL fs_info pointer in free_fs_info().  Secondly, after\nfailures from init_srcu_struct(), setup_bdi() and new_inode() we would\nleak all earlier allocated roots: fs_info fields haven\u0027t been\ninitialized yet so free_fs_info() is rendered useless.\n\nFix this by initializing fs_info pointer and fs_info fields before any\nallocations happen.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "6a6662ced4153f6dbcfc40d7225c3cc45416039c",
      "tree": "77ad5d577333f02cd854e44827a407dd0388d4eb",
      "parents": [
        "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
        "7c7e82a77fe3d89ae50824aa7c897454675eb4c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (114 commits)\n  Btrfs: check for a null fs root when writing to the backup root log\n  Btrfs: fix race during transaction joins\n  Btrfs: fix a potential btrfs_bio leak on scrub fixups\n  Btrfs: rename btrfs_bio multi -\u003e bbio for consistency\n  Btrfs: stop leaking btrfs_bios on readahead\n  Btrfs: stop the readahead threads on failed mount\n  Btrfs: fix extent_buffer leak in the metadata IO error handling\n  Btrfs: fix the new inspection ioctls for 32 bit compat\n  Btrfs: fix delayed insertion reservation\n  Btrfs: ClearPageError during writepage and clean_tree_block\n  Btrfs: be smarter about committing the transaction in reserve_metadata_bytes\n  Btrfs: make a delayed_block_rsv for the delayed item insertion\n  Btrfs: add a log of past tree roots\n  btrfs: separate superblock items out of fs_info\n  Btrfs: use the global reserve when truncating the free space cache inode\n  Btrfs: release metadata from global reserve if we have to fallback for unlink\n  Btrfs: make sure to flush queued bios if write_cache_pages waits\n  Btrfs: fix extent pinning bugs in the tree log\n  Btrfs: make sure btrfs_remove_free_space doesn\u0027t leak EAGAIN\n  Btrfs: don\u0027t wait as long for more batches during SSD log commit\n  ...\n"
    },
    {
      "commit": "7c7e82a77fe3d89ae50824aa7c897454675eb4c4",
      "tree": "de7ac71aa9fa00d3ce2b1849c97733f37799900c",
      "parents": [
        "d43317dcd074818d4bd12ddd4184a29aff98907b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 18:50:56 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 18:50:56 2011 -0500"
      },
      "message": "Btrfs: check for a null fs root when writing to the backup root log\n\nDuring log replay, can commit the transaction before the fs_root\npointers are setup, so we have to make sure they are not null before\ntrying to use them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "306c8b68c82dfe6b7c9e5b61985760ad5d089205",
      "tree": "bf720bdfe5de076d4006bee3c1dfc84d5efcb003",
      "parents": [
        "c674e04e1cd6049715e7b9446790f4b441e547c0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 03 15:21:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:09:41 2011 -0500"
      },
      "message": "Btrfs: stop the readahead threads on failed mount\n\nIf we don\u0027t stop them, they linger around corrupting\nmemory by using pointers to freed things.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c674e04e1cd6049715e7b9446790f4b441e547c0",
      "tree": "a84d0488a8c8a2fc45abd7f54e054ccd2fcf8a83",
      "parents": [
        "740c3d226cbba6cd6a32adfb66809c94938f3e57"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 03 22:23:13 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:09:10 2011 -0500"
      },
      "message": "Btrfs: fix extent_buffer leak in the metadata IO error handling\n\nThe scrub readahead branch brought in a new error handling hook,\nbut it was leaking extent_buffer references.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
      "tree": "63efdfe9b192243fefb76be3921b9a2aaa26291e",
      "parents": [
        "c06a0e120a4e381a1c291c1fce3c6155c5791cae",
        "7a26285eea8eb92e0088db011571d887d4551b0f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:05:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:05:08 2011 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://github.com/sensille/linux into integration\n\nConflicts:\n\tfs/btrfs/ctree.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6d668dda0caec537fbf28c4d91e6d18181af3cff",
      "tree": "bfc4afce43435e0dc354e58150745fcf2c6072f0",
      "parents": [
        "af31f5e5b84b5bf2bcec464153a5130b170b2770"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 03 22:54:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:18 2011 -0500"
      },
      "message": "Btrfs: make a delayed_block_rsv for the delayed item insertion\n\nI\u0027ve been hitting warnings in use_block_rsv when running the delayed insertion\nstuff.  It\u0027s because we will readjust global block rsv based on what is in use,\nwhich means we could end up discarding reservations that are for the delayed\ninsertion stuff.  So instead create a seperate block rsv for the delayed\ninsertion stuff.  This will also make it easier to debug problems with the\ndelayed insertion reservations since we will know that only the delayed\ninsertion code touches this block_rsv.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "af31f5e5b84b5bf2bcec464153a5130b170b2770",
      "tree": "f8f5d8f18a115431e8826fa1c46580311dc1e485",
      "parents": [
        "6c41761fc6efe1503103a1afe03a6635c0b5d4ec"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 03 15:17:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:15 2011 -0500"
      },
      "message": "Btrfs: add a log of past tree roots\n\nThis takes some of the free space in the btrfs super block\nto record information about most of the roots in the last four\ncommits.\n\nIt also adds a -o recovery to use the root history log when\nwe\u0027re not able to read the tree of tree roots, the extent\ntree root, the device tree root or the csum root.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "01d658f2ca3c85c1ffb20b306e30d16197000ce7",
      "tree": "eda62586bb95967a4001f8fb70e6955b531cf801",
      "parents": [
        "e688b7252f784c2479d559f9f70ca8354752c5e7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 01 10:08:06 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:48 2011 -0500"
      },
      "message": "Btrfs: make sure to flush queued bios if write_cache_pages waits\n\nwrite_cache_pages tries to build up a large bio to stuff down the pipe.\nBut if it needs to wait for a page lock, it needs to make sure and send\ndown any pending writes so we don\u0027t deadlock with anyone who has the\npage lock and is waiting for writeback of things inside the bio.\n\nDave Sterba triggered this as a deadlock between the autodefrag code and\nthe extent write_cache_pages\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "2bf64758fd6290797a5ce97d4b9c698a4ed1cbad",
      "tree": "61c7cedc6d7870d288c11333596da6ec673fae95",
      "parents": [
        "8f6d7f4f45f18a5b669dbbf068c74b3d5be59dbf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Sep 26 17:12:22 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:50 2011 -0400"
      },
      "message": "Btrfs: allow us to overcommit our enospc reservations\n\nOne of the things that kills us is the fact that our ENOSPC reservations are\nhorribly over the top in most normal cases.  There isn\u0027t too much that can be\ndone about this because when we are completely full we really need them to work\nlike this so we don\u0027t under reserve.  However if there is plenty of unallocated\nchunks on the disk we can use that to gauge how much we can overcommit.  So this\npatch adds chunk free space accounting so we always know how much unallocated\nspace we have.  Then if we fail to make a reservation within our allocated\nspace, check to see if we can overcommit.  In the normal flushing case (like\nwith delalloc metadata reservations) we\u0027ll take the free space and divide it by\n2 if our metadata profile is setup for DUP or any of those, and then divide it\nby 8 to make sure we don\u0027t overcommit too much.  Then if we\u0027re in a non-flushing\ncase (we really need this reservation now!) we only limit ourselves to half of\nthe free space.  This makes this fio test\n\n[torrent]\nfilename\u003dtorrent-test\nrw\u003drandwrite\nsize\u003d4g\nioengine\u003dsync\ndirectory\u003d/mnt/btrfs-test\n\ngo from taking around 45 minutes to 10 seconds on my freshly formatted 3 TiB\nfile system.  This doesn\u0027t seem to break my other enospc tests, but could really\nuse some more testing as this is a super scary change.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "300e4f8a56f263797568c95b71c949f9f02e4534",
      "tree": "ecb4f4ba0cd499f73876476f92c3fc6306aaa140",
      "parents": [
        "4a33854257764c2ec6337ee0c8ecafb64f8e29e1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Aug 29 14:06:00 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:41 2011 -0400"
      },
      "message": "Btrfs: put the block group cache after we commit the super\n\nIn moving some enospc stuff around I noticed that when we unmount we are often\nevicting the free space cache inodes before we do our last commit.  This isn\u0027t\nbad, but it makes us constantly have to re-read the inodes back.  So instead\ndon\u0027t evict the cache until after we do our last commit, this will make things a\nlittle less crappy and makes a future enospc change work properly.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "37be25bcb6d731914e126f8de59c4367f0d66b80",
      "tree": "d9e78eb4440f60a7697f8f7c56a37c163734cf66",
      "parents": [
        "dba68306f3fae681b1005137f130f5bcfdfed34a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Aug 05 10:25:38 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:32 2011 -0400"
      },
      "message": "Btrfs: kill the durable block rsv stuff\n\nThis is confusing code and isn\u0027t used by anything anymore, so delete it.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4bb31e928d1a47f5bd046ecb176b8eff7c589fc0",
      "tree": "61693e91f7a179b75cc43f5bcb504d50a342ecb7",
      "parents": [
        "7414a03fbf9e75fbbf2a3c16828cd862e572aa44"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 13:55:54 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sun Oct 02 08:48:44 2011 +0200"
      },
      "message": "btrfs: hooks for readahead\n\nThis adds the hooks needed for readahead. In the readpage_end_io_hook,\nthe extent state is checked for the EXTENT_READAHEAD flag. Only in this\ncase the readahead hook is called, to keep the impact on non-ra as low\nas possible.\nAdditionally, a hook for a failed IO is added, otherwise readahead would\nwait indefinitely for the extent to finish.\n\nChanges for v2:\n - eliminate race condition\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "90519d66abbccc251d14719ac76f191f70826e40",
      "tree": "93cad519db9f4f0c97abd89d405ea1e0fec306a7",
      "parents": [
        "ab0fff03055d2d1b01a7581badeba18db9c4f55c"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon May 23 14:30:00 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sun Oct 02 08:48:30 2011 +0200"
      },
      "message": "btrfs: state information for readahead\n\nAdd state information for readahead to btrfs_fs_info and btrfs_device\n\nChanges v2:\n - don\u0027t wait in radix_trees\n - add own set of workers for readahead\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "ab0fff03055d2d1b01a7581badeba18db9c4f55c",
      "tree": "3bc6fbbdc7188623783db379eff8fbf23cdcb514",
      "parents": [
        "bb82ab88dfdb12948af58989c75bfe904bc1b09d"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon May 23 14:25:41 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sun Oct 02 08:47:57 2011 +0200"
      },
      "message": "btrfs: add READAHEAD extent buffer flag\n\nAdd a READAHEAD extent buffer flag.\nAdd a function to trigger a read with this flag set.\n\nChanges v2:\n - use extent buffer flags instead of extent state flags\n\nChanges v5:\n - adapt to changed read_extent_buffer_pages interface\n - don\u0027t return eb from reada_tree_block_flagged if it has CORRUPT flag set\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "bb82ab88dfdb12948af58989c75bfe904bc1b09d",
      "tree": "1311f5b5ec398cad99aa0da120aed0ee8a224a36",
      "parents": [
        "286d6e70aa6cf0f0235653eb1049bfc04610b4fb"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Jun 10 14:06:53 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sun Oct 02 08:47:55 2011 +0200"
      },
      "message": "btrfs: add an extra wait mode to read_extent_buffer_pages\n\nread_extent_buffer_pages currently has two modes, either trigger a read\nwithout waiting for anything, or wait for the I/O to finish. The former\nalso bails when it\u0027s unable to lock the page. This patch now adds an\nadditional parameter to allow it to block on page lock, but don\u0027t wait\nfor completion.\n\nChanges v5:\n - merge the 2 wait parameters into one and define WAIT_NONE, WAIT_COMPLETE and\n   WAIT_PAGE_LOCK\n\nChange v6:\n - fix bug introduced in v5\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "8ddc7d9cd0a00062247c732b96386ec2462bdbc7",
      "tree": "ea855863b3f6429002bfe31a3e522b4370d59d55",
      "parents": [
        "193ea74b2729e6ddc08fb6bde6e15a3bd4d94071"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 20:02:58 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs: add mirror_num to extent_read_full_page\n\nCurrently, extent_read_full_page always assumes we are trying to read mirror\n0, which generally is the best we can do. To add flexibility, pass it as a\nparameter. This will be needed by scrub fixup code.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "22712200e175e0df5c7f9edfe6c6bf5c94c23b83",
      "tree": "a3e332aab7f5a953ff4f12e67af2a0e5f32f5be5",
      "parents": [
        "597a67e0ba758e3d2239c81fbb648c6e69ec30a2",
        "ff95acb6733d41a8d45feb0e18b96df25e610e78"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: make sure reserve_metadata_bytes doesn\u0027t leak out strange errors\n  Btrfs: use the commit_root for reading free_space_inode crcs\n  Btrfs: reduce extent_state lock contention for metadata\n  Btrfs: remove lockdep magic from btrfs_next_leaf\n  Btrfs: make a lockdep class for each root\n  Btrfs: switch the btrfs tree locks to reader/writer\n  Btrfs: fix deadlock when throttling transactions\n  Btrfs: stop using highmem for extent_buffers\n  Btrfs: fix BUG_ON() caused by ENOSPC when relocating space\n  Btrfs: tag pages for writeback in sync\n  Btrfs: fix enospc problems with delalloc\n  Btrfs: don\u0027t flush delalloc arbitrarily\n  Btrfs: use find_or_create_page instead of grab_cache_page\n  Btrfs: use a worker thread to do caching\n  Btrfs: fix how we merge extent states and deal with cached states\n  Btrfs: use the normal checksumming infrastructure for free space cache\n  Btrfs: serialize flushers in reserve_metadata_bytes\n  Btrfs: do transaction space reservation before joining the transaction\n  Btrfs: try to only do one btrfs_search_slot in do_setxattr\n"
    },
    {
      "commit": "85d4e461117b40eb10722f774566b19bd5e77879",
      "tree": "56b7c66d03a72008e0db0bf4f58edbee5170fee1",
      "parents": [
        "bd681513fa6f2ff29aa391f01e413a2d1c59fd77"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 26 16:11:19 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:46 2011 -0400"
      },
      "message": "Btrfs: make a lockdep class for each root\n\nThis patch was originally from Tejun Heo.  lockdep complains about the btrfs\nlocking because we sometimes take btree locks from two different trees at the\nsame time.  The current classes are based only on level in the btree, which\nisn\u0027t enough information for lockdep to figure out if the lock is safe.\n\nThis patch makes a class for each type of tree, and lumps all the FS trees that\nactually have files and directories into the same class.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a65917156e345946dbde3d7effd28124c6d6a8c2",
      "tree": "dc5478189be0f6a321bfc23ee0545f71de67763b",
      "parents": [
        "199c36eaa95077a47ae1bc55532fc0fbeb80cc95"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jul 19 12:04:14 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:45 2011 -0400"
      },
      "message": "Btrfs: stop using highmem for extent_buffers\n\nThe extent_buffers have a very complex interface where\nwe use HIGHMEM for metadata and try to cache a kmap mapping\nto access the memory.\n\nThe next commit adds reader/writer locks, and concurrent use\nof this kmap cache would make it even more complex.\n\nThis commit drops the ability to use HIGHMEM with extent buffers,\nand rips out all of the related code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bab39bf998133510f2dad08158006197ec0dabea",
      "tree": "0ea50b2b07a9f75988829de6c42b6936e2355545",
      "parents": [
        "df98b6e2c52f65665eaf0fc23e647fb64335b289"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jun 30 14:42:28 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:25 2011 -0400"
      },
      "message": "Btrfs: use a worker thread to do caching\n\nA user reported a deadlock when copying a bunch of files.  This is because they\nwere low on memory and kthreadd got hung up trying to migrate pages for an\nallocation when starting the caching kthread.  The page was locked by the person\nstarting the caching kthread.  To fix this we just need to use the async thread\nstuff so that the threads are already created and we don\u0027t have to worry about\ndeadlocks.  Thanks,\n\nReported-by: Roman Mamedov \u003crm@romanrm.ru\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    }
  ],
  "next": "0ee5dc676a5f8fadede608c7281dfedb1ae714ea"
}
