)]}'
{
  "log": [
    {
      "commit": "827fa4c762fa81fbfcd262505588feeeae7a3b66",
      "tree": "1dbbfcfb0e3a6e6a453f630bfa008fba6bf78daf",
      "parents": [
        "5d219c6b9fa28b990b22e8e3b08a1a1f34400b4f",
        "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 23 14:58:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 23 14:58:39 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: call d_instantiate after all ops are setup\n  Btrfs: fix worker lock misuse in find_worker\n"
    },
    {
      "commit": "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f",
      "tree": "f618c94aa612781c911e18440df7eb16aed8697b",
      "parents": [
        "8d532b2afb2eacc84588db709ec280a3d1219be3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Dec 23 07:58:13 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 23 08:02:26 2011 -0500"
      },
      "message": "Btrfs: call d_instantiate after all ops are setup\n\nThis closes races where btrfs is calling d_instantiate too soon during\ninode creation.  All of the callers of btrfs_add_nondir are updated to\ninstantiate after the inode is fully setup in memory.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8d532b2afb2eacc84588db709ec280a3d1219be3",
      "tree": "27a4353e75d67bc41e9d2172702dbed1109095eb",
      "parents": [
        "d85c8a6f1bc083279215ff6e79b7c292bf3ec905"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 23 07:53:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 23 07:53:00 2011 -0500"
      },
      "message": "Btrfs: fix worker lock misuse in find_worker\n\nDan Carpenter noticed that we were doing a double unlock on the worker\nlock, and sometimes picking a worker thread without the lock held.\n\nThis fixes both errors.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\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": "142349f541d0bb6bc3e0d4563268105aada42b0b",
      "tree": "c86e13b5cf8b87b3b4f3c5218442e221ce17f67b",
      "parents": [
        "dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Fri Dec 16 12:32:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 16 12:32:57 2011 -0500"
      },
      "message": "btrfs: lower the dirty balance poll interval\n\nTests show that the original large intervals can easily make the dirty\nlimit exceeded on 100 concurrent dd\u0027s. So adapt to as large as the\nnext check point selected by the dirty throttling algorithm.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d85c8a6f1bc083279215ff6e79b7c292bf3ec905",
      "tree": "a816e64b9c9fa84ae3033ecf12a21a429a7301d9",
      "parents": [
        "567a45e917343c952806bb9f5c19aab0139bd519"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 15:38:41 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 15:38:41 2011 -0500"
      },
      "message": "Btrfs: unplug every once and a while\n\nThe btrfs io submission threads can build up massive plug lists.  This\nkeeps things more reasonable so we don\u0027t hand over huge dumps of IO at\nonce.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "567a45e917343c952806bb9f5c19aab0139bd519",
      "tree": "b1d6dac31a3a2836d24662139f21bb1ddc2522d3",
      "parents": [
        "e755d9ab387c4c2401dce5b6f435432a829f41cb",
        "e65cbb94e036058128a5dec6398be2fd64cf88ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of http://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into integration\n\nConflicts:\n\tfs/btrfs/inode.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e755d9ab387c4c2401dce5b6f435432a829f41cb",
      "tree": "fcec42ac109be4c291e03de111603fd7086fd91a",
      "parents": [
        "ad19db71f498fd858dd84ce603efcf97e321f184"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:36:29 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:36:29 2011 -0500"
      },
      "message": "Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code\n\nbtrfs_update_inode is sometimes called with a null reservation.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e65cbb94e036058128a5dec6398be2fd64cf88ba",
      "tree": "1ad4bba788cc283545d1e240c529eadeab7155aa",
      "parents": [
        "ee4d89f0c4967c624c92516fcc37b41069bfdc23"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Dec 13 16:04:54 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:24 2011 -0500"
      },
      "message": "Btrfs: only set cache_generation if we setup the block group\n\nA user reported a problem booting into a new kernel with the old format inodes.\nHe was panicing in cow_file_range while writing out the inode cache.  This is\nbecause if the block group is not cached we\u0027ll just skip writing out the cache,\nhowever if it gets dirtied again in the same transaction and it finished caching\nwe\u0027d go ahead and write it out, but since we set cache_generation to the transid\nwe think we\u0027ve already truncated it and will just carry on, running into\ncow_file_range and blowing up.  We need to make sure we only set\ncache_generation if we\u0027ve done the truncate.  The user tested this patch and\nverified that the panic no longer occured.  Thanks,\n\nReported-and-Tested-by: Klaus Bitto \u003cklaus.bitto@gmail.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "ee4d89f0c4967c624c92516fcc37b41069bfdc23",
      "tree": "bec733b7d6f2794a86622ad76948c0be2c152170",
      "parents": [
        "7041ee97281c30a78658904140c7bd9373a36142"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Dec 13 12:55:58 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:24 2011 -0500"
      },
      "message": "Btrfs: don\u0027t panic if orphan item already exists\n\nI\u0027ve been hitting this BUG_ON() in btrfs_orphan_add when running xfstest 269 in\na loop.  This is because we will add an orphan item, do the truncate, the\ntruncate will fail for whatever reason (*cough*ENOSPC*cough*) and then we\u0027re\nleft with an orphan item still in the fs.  Then we come back later to do another\ntruncate and it blows up because we already have an orphan item.  This is ok so\njust fix the BUG_ON() to only BUG() if ret is not EEXIST.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7041ee97281c30a78658904140c7bd9373a36142",
      "tree": "7e0426127ca6cbe1c78e3def77b85488c69193ca",
      "parents": [
        "660d3f6cde552323578b85fc5a09a6742f1fe804"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 13:26:22 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:23 2011 -0500"
      },
      "message": "Btrfs: fix leaked space in truncate\n\nWe were occasionaly leaking space when running xfstest 269.  This is because if\nwe failed to start the transaction in the truncate loop we\u0027d just goto out, but\nwe need to break so that the inode is removed from the orphan list and the space\nis properly freed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "660d3f6cde552323578b85fc5a09a6742f1fe804",
      "tree": "7273af0b2a6fe7f9be685cb0586534802c807924",
      "parents": [
        "22c44fe65adacd20a174f3f54686509ee94ef7be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 11:18:51 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:22 2011 -0500"
      },
      "message": "Btrfs: fix how we do delalloc reservations and how we free reservations on error\n\nRunning xfstests 269 with some tracing my scripts kept spitting out errors about\nreleasing bytes that we didn\u0027t actually have reserved.  This took me down a huge\nrabbit hole and it turns out the way we deal with reserved_extents is wrong,\nwe need to only be setting it if the reservation succeeds, otherwise the free()\nmethod will come in and unreserve space that isn\u0027t actually reserved yet, which\ncan lead to other warnings and such.  The math was all working out right in the\nend, but it caused all sorts of other issues in addition to making my scripts\nyell and scream and generally make it impossible for me to track down the\noriginal issue I was looking for.  The other problem is with our error handling\nin the reservation code.  There are two cases that we need to deal with\n\n1) We raced with free.  In this case free won\u0027t free anything because csum_bytes\nis modified before we dro the lock in our reservation path, so free rightly\ndoesn\u0027t release any space because the reservation code may be depending on that\nreservation.  However if we fail, we need the reservation side to do the free at\nthat point since that space is no longer in use.  So as it stands the code was\ndoing this fine and it worked out, except in case #2\n\n2) We don\u0027t race with free.  Nobody comes in and changes anything, and our\nreservation fails.  In this case we didn\u0027t reserve anything anyway and we just\nneed to clean up csum_bytes but not free anything.  So we keep track of\ncsum_bytes before we drop the lock and if it hasn\u0027t changed we know we can just\ndecrement csum_bytes and carry on.\n\nBecause of the case where we can race with free()\u0027s since we have to drop our\nspin_lock to do the reservation, I\u0027m going to serialize all reservations with\nthe i_mutex.  We already get this for free in the heavy use paths, truncate and\nfile write all hold the i_mutex, just needed to add it to page_mkwrite and\nvarious ioctl/balance things.  With this patch my space leak scripts no longer\nscream bloody murder.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "22c44fe65adacd20a174f3f54686509ee94ef7be",
      "tree": "1d590b9e0d238970debd73a730c4e6553c2f7f1b",
      "parents": [
        "0dc3b84a73267f47a75468f924f5d58a840e3152"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 30 10:45:38 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:21 2011 -0500"
      },
      "message": "Btrfs: deal with enospc from dirtying inodes properly\n\nNow that we\u0027re properly keeping track of delayed inode space we\u0027ve been getting\na lot of warnings out of btrfs_dirty_inode() when running xfstest 83.  This is\nbecause a bunch of people call mark_inode_dirty, which is void so we can\u0027t\nreturn ENOSPC.  This needs to be fixed in a few areas\n\n1) file_update_time - this updates the mtime and such when writing to a file,\nwhich will call mark_inode_dirty.  So copy file_update_time into btrfs so we can\ncall btrfs_dirty_inode directly and return an error if we get one appropriately.\n\n2) fix symlinks to use btrfs_setattr for -\u003esetattr.  For some reason we weren\u0027t\nsetting -\u003esetattr for symlinks, even though we should have been.  This catches\none of the cases where we were getting errors in mark_inode_dirty.\n\n3) Fix btrfs_setattr and btrfs_setsize to call btrfs_dirty_inode directly\ninstead of mark_inode_dirty.  This lets us return errors properly for truncate\nand chown/anything related to setattr.\n\n4) Add a new btrfs_fs_dirty_inode which will just call btrfs_dirty_inode and\nprint an error if we have one.  The only remaining user we can\u0027t control for\nthis is touch_atime(), but we don\u0027t really want to keep people from walking\ndown the tree if we don\u0027t have space to save the atime update, so just complain\nbut don\u0027t worry about it.\n\nWith this patch xfstests 83 complains a handful of times instead of hundreds of\ntimes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\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": "ad19db71f498fd858dd84ce603efcf97e321f184",
      "tree": "2e78aa71cf3108ce34fc3e97ca1fecfad63047d2",
      "parents": [
        "8f3b65a3d66bcc086e1eb040b7545e70681f2ed1"
      ],
      "author": {
        "name": "Casey Schaufler",
        "email": "casey@schaufler-ca.com",
        "time": "Thu Dec 15 10:09:07 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:38 2011 -0500"
      },
      "message": "BTRFS: Establish i_ops before calling d_instantiate\n\nThe Smack LSM hook for security_d_instantiate checks\nthe inode\u0027s i_op-\u003egetxattr value to determine if the\ncontaining filesystem supports extended attributes.\nThe BTRFS filesystem sets the inode\u0027s i_op value only\nafter it has instantiated the inode. This results in\nSmack incorrectly giving new BTRFS inodes attributes\nfrom the filesystem defaults on the assumption that\nvalues can\u0027t be stored on the filesystem. This patch\nmoves the assignment of inode operation vectors ahead\nof the calls to d_instantiate, letting Smack know that\nthe filesystem supports extended attributes. There\nshould be no impact on the performance or behavior of\nBTRFS.\n\nSigned-off-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8f3b65a3d66bcc086e1eb040b7545e70681f2ed1",
      "tree": "3111f24d0e0391f8a1dac3f0a7fb9bff05e2b4bd",
      "parents": [
        "306424cc880a0fbbdc99eee1f43d056a301a180f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 09:29:43 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:38 2011 -0500"
      },
      "message": "Btrfs: add a cond_resched() into the worker loop\n\nIf we have a constant stream of end_io completions or crc work,\nwe can hit softlockup messages from the async helper threads.  This\nadds a cond_resched() into the loop to avoid them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "306424cc880a0fbbdc99eee1f43d056a301a180f",
      "tree": "7c6b3b851fcd325c65724f3a7875311407998a6d",
      "parents": [
        "f8e9e0b07be0464e12366631da3da73a1a62449c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:37 2011 -0500"
      },
      "message": "Btrfs: fix ctime update of on-disk inode\n\nTo reproduce the bug:\n\n    # touch /mnt/tmp\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:23.412105981 +0800\n    # chattr +i /mnt/tmp\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:43.198105295 +0800\n    # umount /mnt\n    # mount /dev/loop1 /mnt\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:23.412105981 +0800\n\nWe should update ctime of in-memory inode before calling\nbtrfs_update_inode().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f8e9e0b07be0464e12366631da3da73a1a62449c",
      "tree": "3950d7dfe50186637b0bcca0d38943a64c9dff8c",
      "parents": [
        "39fb26c398ddf8d7794a85e896cfe1a42e55524b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:37 2011 -0500"
      },
      "message": "btrfs: keep orphans for subvolume deletion\n\nSince we have the free space caches, btrfs_orphan_cleanup also runs for\nthe tree_root. Unfortunately this also cleans up the orphans used to mark\nsubvol deletions in progress.\n\nCurrently if a subvol deletion gets interrupted twice by umount/mount, the\ndeletion will not be continued and the space permanently lost, though it\nwould be possible to write a tool to recover those lost subvol deletions.\nThis patch checks if the orphan belongs to a subvol (dead root) and skips\nthe deletion.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "39fb26c398ddf8d7794a85e896cfe1a42e55524b",
      "tree": "6a7c1132f8ad0b9b70a2e5cccf55d74ab3095b48",
      "parents": [
        "3642320e07444cc46327b24977d752f99706dac2"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:36 2011 -0500"
      },
      "message": "Btrfs: fix inaccurate available space on raid0 profile\n\nWhen we use raid0 as the data profile, df command may show us a very\ninaccurate value of the available space, which may be much less than the\nreal one. It may make the users puzzled. Fix it by changing the calculation\nof the available space, and making it be more similar to a fake chunk\nallocation.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3642320e07444cc46327b24977d752f99706dac2",
      "tree": "1ae0d347b6cd2330ca99041d2234672919ebffac",
      "parents": [
        "f4a2f4c548296168832ad4ab7e7f7b0cd0bf1214"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:36 2011 -0500"
      },
      "message": "Btrfs: fix wrong disk space information of the files\n\nBtrfsck report errors after the 83th case of xfstests was run, The error\nnumber is 400, it means the used disk space of the file is wrong.\n\nThe reason of this bug is that:\nThe file truncation may fail when the space of the file system is not enough,\nand leave some file extents, whose offset are beyond the end of the files.\nWhen we want to expand those files, we will drop those file extents, and\nput in dummy file extents, and then we should update the i-node. But btrfs\nforgets to do it.\n\nThis patch adds the forgotten i-node update.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f4a2f4c548296168832ad4ab7e7f7b0cd0bf1214",
      "tree": "10df3e81cc6a10253bb007858ee862a91c596335",
      "parents": [
        "5dbc8fca8ef5d719014f22345d990e957dcfc692"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:01 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:35 2011 -0500"
      },
      "message": "Btrfs: fix wrong i_size when truncating a file to a larger size\n\nBtrfsck report error 100 after the 83th case of xfstests was run, it means\nthe i_size of the file is wrong.\n\nThe reason of this bug is that:\nBtrfs increased i_size of the file at the beginning, but it failed to expand\nthe file, and failed to update the i_size to the old size because there is no\nenough space in the file system, so we found a wrong i_size.\n\nThis patch fixes this bug by updating the i_size just when we pass the file\nexpanding and get enough space to update i-node.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5dbc8fca8ef5d719014f22345d990e957dcfc692",
      "tree": "adf84c6e10a33cf5cab21487b2443f80a8129509",
      "parents": [
        "1cf4ffdb3289624a6462c94f2ce05545b32ef736"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 09 11:07:37 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 09 11:07:37 2011 -0500"
      },
      "message": "Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror\n\nbtrfs_end_bio checks the number of errors on a bio against the max\nnumber of errors allowed before sending any EIOs up to the higher\nlevels.\n\nIf we got enough copies of the bio done for a given raid level, it is\nsupposed to clear the bio error flag and return success.\n\nWe have pointers to the original bio sent down by the higher layers and\npointers to any cloned bios we made for raid purposes.  If the original\nbio happens to be the one that got an io error, but not the last one to\nfinish, it might not have the BIO_UPTODATE bit set.\n\nThen, when the last bio does finish, we\u0027ll call bio_end_io on the\noriginal bio.  It won\u0027t have the uptodate bit set and we\u0027ll end up\nsending EIO to the higher layers.\n\nWe already had a check for this, it just was conditional on getting the\nIO error on the very last bio.  Make the check unconditional so we eat\nthe EIOs properly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fb38f9b8fe98a9c1f6b1e57d1b08b1102b293929",
      "tree": "81282b9875595ece0c3d61a4ea1741aecba0191a",
      "parents": [
        "8bd1c8815fc23fa4db2376bf667ef885827b48c9",
        "1cf4ffdb3289624a6462c94f2ce05545b32ef736"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 08 13:18:59 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 08 13:18:59 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: drop spin lock when memory alloc fails\n  Btrfs: check if the to-be-added device is writable\n  Btrfs: try cluster but don\u0027t advance in search list\n  Btrfs: try to allocate from cluster even at LOOP_NO_EMPTY_SIZE\n"
    },
    {
      "commit": "1cf4ffdb3289624a6462c94f2ce05545b32ef736",
      "tree": "f8a981628e108b8a97d4abb3e0be3d8f13824e55",
      "parents": [
        "a5d16333612718569ffd26064270e535cb9c3928"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Dec 07 20:08:40 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 08 08:55:47 2011 -0500"
      },
      "message": "Btrfs: drop spin lock when memory alloc fails\n\nDrop spin lock in convert_extent_bit() when memory alloc fails,\notherwise, it will be a deadlock.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a5d16333612718569ffd26064270e535cb9c3928",
      "tree": "8c91371ea5f77630ce3683bf4971bd3e6012cd0c",
      "parents": [
        "274bd4fb3ed6b72c1d77ef8850511f09fc6b8e4d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 07 20:08:40 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 08 08:55:46 2011 -0500"
      },
      "message": "Btrfs: check if the to-be-added device is writable\n\nIf we call ioctl(BTRFS_IOC_ADD_DEV) directly, we\u0027ll succeed in adding\na readonly device to a btrfs filesystem, and btrfs will write to\nthat device, emitting kernel errors:\n\n[ 3109.833692] lost page write due to I/O error on loop2\n[ 3109.833720] lost page write due to I/O error on loop2\n...\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "274bd4fb3ed6b72c1d77ef8850511f09fc6b8e4d",
      "tree": "c9a637653e547f24ed488d0d5956b314b4257597",
      "parents": [
        "062c05c46bd4358aad7a0e0cb5ffeb98ab935286"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Dec 07 20:08:40 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 08 08:55:40 2011 -0500"
      },
      "message": "Btrfs: try cluster but don\u0027t advance in search list\n\nWhen we find an existing cluster, we switch to its block group as the\ncurrent block group, possibly skipping multiple blocks in the process.\nFurthermore, under heavy contention, multiple threads may fail to\nallocate from a cluster and then release just-created clusters just to\nproceed to create new ones in a different block group.\n\nThis patch tries to allocate from an existing cluster regardless of its\nblock group, and doesn\u0027t switch to that group, instead proceeding to\ntry to allocate a cluster from the group it was iterating before the\nattempt.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "062c05c46bd4358aad7a0e0cb5ffeb98ab935286",
      "tree": "1d5b9a84d299fab9345f811b6e246d935200a39b",
      "parents": [
        "f4a8e6563ea5366f563cb741a27fe90c5fa7f0fc"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Dec 07 19:50:42 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 07 19:50:42 2011 -0500"
      },
      "message": "Btrfs: try to allocate from cluster even at LOOP_NO_EMPTY_SIZE\n\nIf we reach LOOP_NO_EMPTY_SIZE, we won\u0027t even try to use a cluster that\nothers might have set up.  Odds are that there won\u0027t be one, but if\nsomeone else succeeded in setting it up, we might as well use it, even\nif we don\u0027t try to set up a cluster again.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b930c26416c4ea6855726fd977145ccea9afbdda",
      "tree": "ae18b550c5918ba36f92d0971cc7f2cc8918a05d",
      "parents": [
        "11d814a20166461358e1cefaf6bcd425698b8460",
        "f4a8e6563ea5366f563cb741a27fe90c5fa7f0fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 01 08:28:53 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 01 08:28:53 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: fix meta data raid-repair merge problem\n  Btrfs: skip allocation attempt from empty cluster\n  Btrfs: skip block groups without enough space for a cluster\n  Btrfs: start search for new cluster at the beginning\n  Btrfs: reset cluster\u0027s max_size when creating bitmap\n  Btrfs: initialize new bitmaps\u0027 list\n  Btrfs: fix oops when calling statfs on readonly device\n  Btrfs: Don\u0027t error on resizing FS to same size\n  Btrfs: fix deadlock on metadata reservation when evicting a inode\n  Fix URL of btrfs-progs git repository in docs\n  btrfs scrub: handle -ENOMEM from init_ipath()\n"
    },
    {
      "commit": "f4a8e6563ea5366f563cb741a27fe90c5fa7f0fc",
      "tree": "e51f3968c45fdce8372f16d4e815d44fe6a0272a",
      "parents": [
        "be064d113906f04ea13088a8260e1e68ae0a4050"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 01 09:30:36 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 01 09:30:36 2011 -0500"
      },
      "message": "Btrfs: fix meta data raid-repair merge problem\n\nCommit 4a54c8c16 introduced raid-repair, killing the individual\nreadpage_io_failed_hook entries from inode.c and disk-io.c. Commit\n4bb31e92 introduced new readahead code, adding a readpage_io_failed_hook to\ndisk-io.c.\n\nThe raid-repair commit had logic to disable raid-repair, if\nreadpage_io_failed_hook is set. Thus, the readahead commit effectively\ndisabled raid-repair for meta data.\n\nThis commit changes the logic to always attempt raid-repair when needed and\ncall the readpage_io_failed_hook in case raid-repair fails. This is much\nmore straight forward and should have been like that from the beginning.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\nReported-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "be064d113906f04ea13088a8260e1e68ae0a4050",
      "tree": "0adeb137e165fbcc5c9ed66d00189ef3194781f4",
      "parents": [
        "425d83156ca27f74e2cc3f370138038c3c8947f8"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: skip allocation attempt from empty cluster\n\nIf we don\u0027t have a cluster, don\u0027t bother trying to allocate from it,\njumping right away to the attempt to allocate a new cluster.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "425d83156ca27f74e2cc3f370138038c3c8947f8",
      "tree": "67b452d423dc64aa3896078a2f90066922bbf384",
      "parents": [
        "1b22bad779be7fe07242be04749ec969164528b8"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: skip block groups without enough space for a cluster\n\nWe test whether a block group has enough free space to hold the\nrequested block, but when we\u0027re doing clustered allocation, we can\nsave some cycles by testing whether it has enough room for the cluster\nupfront, otherwise we end up attempting to set up a cluster and\nfailing.  Only in the NO_EMPTY_SIZE loop do we attempt an unclustered\nallocation, and by then we\u0027ll have zeroed the cluster size, so this\npatch won\u0027t stop us from using the block group as a last resort.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1b22bad779be7fe07242be04749ec969164528b8",
      "tree": "08f8974f216e609a43119c4285844033775f6f7f",
      "parents": [
        "b78d09bceb524ee6481c21b77bda22d766b10e6a"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: start search for new cluster at the beginning\n\nInstead of starting at zero (offset is always zero), request a cluster\nstarting at search_start, that denotes the beginning of the current\nblock group.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b78d09bceb524ee6481c21b77bda22d766b10e6a",
      "tree": "945f0f759dc1c32e091edfe1432f383153d76d19",
      "parents": [
        "f2d0f6765d6332f9be732965a0c6f3b8a55082b4"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: reset cluster\u0027s max_size when creating bitmap\n\nThe field that indicates the size of the largest contiguous chunk of\nfree space in the cluster is not initialized when setting up bitmaps,\nit\u0027s only increased when we find a larger contiguous chunk.  We end up\nretaining a larger value than appropriate for highly-fragmented\nclusters, which may cause pointless searches for large contiguous\ngroups, and even cause clusters that do not meet the density\nrequirements to be set up.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2d0f6765d6332f9be732965a0c6f3b8a55082b4",
      "tree": "c9855b6e259e6b464c95b7ff0b9419023d02d703",
      "parents": [
        "b772a86ea6d932ac29d5e50e67c977653c832f8a"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Mon Nov 28 12:04:43 2011 -0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:06 2011 +0100"
      },
      "message": "Btrfs: initialize new bitmaps\u0027 list\n\nWe\u0027re failing to create clusters with bitmaps because\nsetup_cluster_no_bitmap checks that the list is empty before inserting\nthe bitmap entry in the list for setup_cluster_bitmap, but the list\nfield is only initialized when it is restored from the on-disk free\nspace cache, or when it is written out to disk.\n\nBesides a potential race condition due to the multiple use of the list\nfield, filesystem performance severely degrades over time: as we use\nup all non-bitmap free extents, the try-to-set-up-cluster dance is\ndone at every metadata block allocation.  For every block group, we\nfail to set up a cluster, and after failing on them all up to twice,\nwe fall back to the much slower unclustered allocation.\n\nTo make matters worse, before the unclustered allocation, we try to\ncreate new block groups until we reach the 1% threshold, which\nintroduces additional bitmaps and thus block groups that we\u0027ll iterate\nover at each metadata block request.\n"
    },
    {
      "commit": "b772a86ea6d932ac29d5e50e67c977653c832f8a",
      "tree": "c142daf34c910b496ce578dfb391a8ebd929652e",
      "parents": [
        "ece7d20e8be6730fbb29f4550de6b19b1a3a9387"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Nov 28 16:43:00 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:05 2011 +0100"
      },
      "message": "Btrfs: fix oops when calling statfs on readonly device\n\nTo reproduce this bug:\n\n  # dd if\u003d/dev/zero of\u003dimg bs\u003d1M count\u003d256\n  # mkfs.btrfs img\n  # losetup -r /dev/loop1 img\n  # mount /dev/loop1 /mnt\n  OOPS!!\n\nIt triggered BUG_ON(!nr_devices) in btrfs_calc_avail_data_space().\n\nTo fix this, instead of checking write-only devices, we check all open\ndeivces:\n\n  # df -h /dev/loop1\n  Filesystem            Size  Used Avail Use% Mounted on\n  /dev/loop1            250M   28K  238M   1% /mnt\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "ece7d20e8be6730fbb29f4550de6b19b1a3a9387",
      "tree": "7c01770040d8dd86548610679ab629683ec94017",
      "parents": [
        "aa38a711a893accf5b5192f3d705a120deaa81e0"
      ],
      "author": {
        "name": "Mike Fleetwood",
        "email": "mike.fleetwood@googlemail.com",
        "time": "Fri Nov 18 18:55:01 2011 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:04 2011 +0100"
      },
      "message": "Btrfs: Don\u0027t error on resizing FS to same size\n\nIt seems overly harsh to fail a resize of a btrfs file system to the\nsame size when a shrink or grow would succeed.  User app GParted trips\nover this error.  Allow it by bypassing the shrink or grow operation.\n\nSigned-off-by: Mike Fleetwood \u003cmike.fleetwood@googlemail.com\u003e\n"
    },
    {
      "commit": "aa38a711a893accf5b5192f3d705a120deaa81e0",
      "tree": "59dbb3bca55b7141ba0e0fda1031452ae87a6935",
      "parents": [
        "b52f75a595e8a70ee453bd6fb8023ee294f7a729"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Nov 18 17:43:00 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:03 2011 +0100"
      },
      "message": "Btrfs: fix deadlock on metadata reservation when evicting a inode\n\nWhen I ran the xfstests, I found the test tasks was blocked on meta-data\nreservation.\n\nBy debugging, I found the reason of this bug:\n   start transaction\n        |\n\tv\n   reserve meta-data space\n\t|\n\tv\n   flush delay allocation -\u003e iput inode -\u003e evict inode\n\t^\t\t\t\t\t|\n\t|\t\t\t\t\tv\n   wait for delay allocation flush \u003c- reserve meta-data space\n\nAnd besides that, the flush on evicting inode will block the thread, which\nis reclaiming the memory, and make oom happen easily.\n\nFix this bug by skipping the flush step when evicting inode.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "26bdef541d26fd6a5ddffdf8949ace22f94f809f",
      "tree": "85e4db1a93d211a719cb2c1ecec384ff442e0cd9",
      "parents": [
        "24a70313969fc3fc440216b40babdb42564acff3"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Nov 16 11:28:01 2011 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:01 2011 +0100"
      },
      "message": "btrfs scrub: handle -ENOMEM from init_ipath()\n\ninit_ipath() can return an ERR_PTR(-ENOMEM).\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\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": "24a70313969fc3fc440216b40babdb42564acff3",
      "tree": "16c8840f4495369e771cff62bb2fd8aa81d65ee9",
      "parents": [
        "4d479cf010d56ec9c54f3099992d039918f1296b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 21 09:39:11 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 21 14:57:33 2011 -0500"
      },
      "message": "Btrfs: remove free-space-cache.c WARN during log replay\n\nThe log replay code only partially loads block groups, since\nthe block group caching code is able to detect and deal with\nextents the logging code has pinned down.\n\nWhile the logging code is pinning down block groups, there is\na bogus WARN_ON we\u0027re hitting if the code wasn\u0027t able to find\nan extent in the cache.  This commit removes the warning because\nit can happen any time there isn\u0027t a valid free space cache\nfor that block group.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4d479cf010d56ec9c54f3099992d039918f1296b",
      "tree": "efed635e7dc1d53c9a63787846912df1667e8a16",
      "parents": [
        "f7d61dcd6873c49bcc42be2caa2af1c2511aa915"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 17 11:34:31 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:17 2011 -0500"
      },
      "message": "Btrfs: sectorsize align offsets in fiemap\n\nWe\u0027ve been hitting BUG()\u0027s in btrfs_cont_expand and btrfs_fallocate and anywhere\nelse that calls btrfs_get_extent while running xfstests 13 in a loop.  This is\nbecause fiemap is calling btrfs_get_extent with non-sectorsize aligned offsets,\nwhich will end up adding mappings that are not sectorsize aligned, which will\ncause problems in some cases for subsequent calls to btrfs_get_extent for\nsimilar areas that are sectorsize aligned.  With this patch I ran xfstests 13 in\na loop for a couple of hours and didn\u0027t hit the problem that I could previously\nhit in at most 20 minutes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f7d61dcd6873c49bcc42be2caa2af1c2511aa915",
      "tree": "9619519c2eac1dd207bf822f348575cf9f98ba47",
      "parents": [
        "291c7d2f577428f896daa5002e784959328a80aa"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 15 09:31:24 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:17 2011 -0500"
      },
      "message": "Btrfs: clear pages dirty for io and set them extent mapped\n\nWhen doing the io_ctl helpers to clean up the free space cache stuff I stopped\nusing our normal prepare_pages stuff, which means I of course forgot to do\nthings like set the pages extent mapped, which will cause us all sorts of\nwonderful propblems.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "291c7d2f577428f896daa5002e784959328a80aa",
      "tree": "e18fdbc7bd0d8764444615a8efb1a3f74386204a",
      "parents": [
        "5bb1468238e20b15921909e9f9601e945f03bac7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 14 13:52:14 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:16 2011 -0500"
      },
      "message": "Btrfs: wait on caching if we\u0027re loading the free space cache\n\nWe\u0027ve been hitting panics when running xfstest 13 in a loop for long periods of\ntime.  And actually this problem has always existed so we\u0027ve been hitting these\nthings randomly for a while.  Basically what happens is we get a thread coming\ninto the allocator and reading the space cache off of disk and adding the\nentries to the free space cache as we go.  Then we get another thread that comes\nin and tries to allocate from that block group.  Since block_group-\u003ecached !\u003d\nBTRFS_CACHE_NO it goes ahead and tries to do the allocation.  We do this because\nif we\u0027re doing the old slow way of caching we don\u0027t want to hold people up and\nwait for everything to finish.  The problem with this is we could end up\ndiscarding the space cache at some arbitrary point in the future, which means we\ncould very well end up allocating space that is either bad, or when the real\ncaching happens it could end up thinking the space isn\u0027t in use when it really\nis and cause all sorts of other problems.\n\nThe solution is to add a new flag to indicate we are loading the free space\ncache from disk, and always try to cache the block group if cache-\u003ecached !\u003d\nBTRFS_CACHE_FINISHED.  That way if we are loading the space cache anybody else\nwho tries to allocate from the block group will have to wait until it\u0027s finished\nto make sure it completes successfully.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5bb1468238e20b15921909e9f9601e945f03bac7",
      "tree": "fdd730e4e974ce07dfc6f40be47f512178f3ff5c",
      "parents": [
        "fadc0d8be4dfca80f6c568bc5874931893c6709b"
      ],
      "author": {
        "name": "Arnd Hannemann",
        "email": "arnd@arndnet.de",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:16 2011 -0500"
      },
      "message": "Btrfs: prefix resize related printks with btrfs:\n\nFor the user it is confusing to find something like:\n[10197.627710] new size for /dev/mapper/vg0-usr_share is 3221225472\nin kernel log, because it doesn\u0027t point directly to btrfs.\n\nThis patch prefixes those messages with \"btrfs:\" like other btrfs\nrelated printks.\n\nSigned-off-by: Arnd Hannemann \u003carnd@arndnet.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fadc0d8be4dfca80f6c568bc5874931893c6709b",
      "tree": "a73dd18819b86cc14a1f01a7f58e34d94b8d84da",
      "parents": [
        "52621cb6ed0e0e14358bb317bda7cd5fbd5c2a27"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:15 2011 -0500"
      },
      "message": "btrfs: fix stat blocks accounting\n\nRound inode bytes and delalloc bytes up to real blocksize before\nconverting to sector size. Otherwise eg. files smaller than 512\nare reported with zero blocks due to incorrect rounding.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "52621cb6ed0e0e14358bb317bda7cd5fbd5c2a27",
      "tree": "5b4bc4c08c9f50e97779fcf527b1a8c7780a9e88",
      "parents": [
        "0f0fbf1d0e188d129756e9508090af4bdbfde00b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:15 2011 -0500"
      },
      "message": "Btrfs: avoid unnecessary bitmap search for cluster setup\n\nsetup_cluster_no_bitmap() searches all the extents and bitmaps starting\nfrom offset. Therefore if it returns -ENOSPC, all the bitmaps starting\nfrom offset are in the bitmaps list, so it\u0027s sufficient to search from\nthis list in setup_cluser_bitmap().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f0fbf1d0e188d129756e9508090af4bdbfde00b",
      "tree": "1c015e7be1e1ede9b2b654cb6264217fc110e598",
      "parents": [
        "32240a913d9f3a5aad42175d7696590ea1bfdb08"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "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: fix to search one more bitmap for cluster setup\n\nSuppose there are two bitmaps [0, 256], [256, 512] and one extent\n[100, 120] in the free space cache, and we want to setup a cluster\nwith offset\u003d100, bytes\u003d50.\n\nIn this case, there will be only one bitmap [256, 512] in the temporary\nbitmaps list, and then setup_cluster_bitmap() won\u0027t search bitmap [0, 256].\n\nThe cause is, the list is constructed in setup_cluster_no_bitmap(),\nand only bitmaps with bitmap_entry-\u003eoffset \u003e\u003d offset will be added\ninto the list, and the very bitmap that convers offset has\nbitmap_entry-\u003eoffset \u003c\u003d offset.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\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": "745c4d8e160afaf6c75e887c27ea4b75c8142b26",
      "tree": "b1e5b3725654f4119f06346cef3a1c94d34accf8",
      "parents": [
        "387125fc722a8ed432066b85a552917343bdafca"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun Nov 20 07:31:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:13 2011 -0500"
      },
      "message": "btrfs: Fix up 32/64-bit compatibility for new ioctls\n\n This patch casts to unsigned long before casting to a pointer and fixes\n the following warnings:\nfs/btrfs/extent_io.c:2289:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2933:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2937:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/ioctl.c:3020:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/scrub.c:275:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/backref.c:686:27: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\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": "ea441d1104cf1efb471fa81bc91e9fd1e6ae29fd",
      "tree": "32b7c4f7c78af47936a604e3f4e13e8e61f834a0",
      "parents": [
        "c13344958780b4046305ee6235d686c846535529"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 16 21:43:59 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 16 22:00:34 2011 -0500"
      },
      "message": "new helper: mount_subtree()\n\ntakes vfsmount and relative path, does lookup within that vfsmount\n(possibly triggering automounts) and returns the result as root\nof subtree suitable for return by -\u003emount() (i.e. a reference to\ndentry and an active reference to its superblock grabbed, superblock\nlocked exclusive).\n\nbtrfs and nfs switched to it instead of open-coding the sucker.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c13344958780b4046305ee6235d686c846535529",
      "tree": "aed2958283867030aa9e9f742c3fb94c895b2d5c",
      "parents": [
        "8d514bbf37eecf0a3e309284728637816a36764b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 16 16:12:14 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 16 16:12:14 2011 -0500"
      },
      "message": "switch create_mnt_ns() to saner calling conventions, fix double mntput() in nfs\n\nLife is much saner if create_mnt_ns(mnt) drops mnt in case of error...\nSwitch it to such calling conventions, switch callers, fix double mntput() in\nfs/nfs/super.c one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8d514bbf37eecf0a3e309284728637816a36764b",
      "tree": "1a7745397b545456a34d9f2fd37464b44b01aeff",
      "parents": [
        "6aaf05f472c97ebceff47d9eef464574f1a55727"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 16 16:06:09 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 16 16:06:09 2011 -0500"
      },
      "message": "btrfs: fix double mntput() in mount_subvol()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f1ebcc74d5b2159f44c96b479b6eb8afc7829095",
      "tree": "83d949e151f2f7e4a980396538cc0f2356bacfd4",
      "parents": [
        "8965593e41dd2d0e2a2f1e6f245336005ea94a2c"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Mon Nov 14 20:48:06 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 15 09:53:28 2011 -0500"
      },
      "message": "Btrfs: fix tree corruption after multi-thread snapshots and inode_cache flush\n\nThe btrfs snapshotting code requires that once a root has been\nsnapshotted, we don\u0027t change it during a commit.\n\nBut there are two cases to lead to tree corruptions:\n\n1) multi-thread snapshots can commit serveral snapshots in a transaction,\n   and this may change the src root when processing the following pending\n   snapshots, which lead to the former snapshots corruptions;\n\n2) the free inode cache was changing the roots when it root the cache,\n   which lead to corruptions.\n\nThis fixes things by making sure we force COW the block after we create a\nsnapshot during commiting a transaction, then any changes to the roots\nwill result in COW, and we get all the fs roots and snapshot roots to be\nconsistent.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\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": "8965593e41dd2d0e2a2f1e6f245336005ea94a2c",
      "tree": "0b8ac73ccccc05f08bd4abb2b8c0099a1383fd3d",
      "parents": [
        "69f4cb526bd02ae5af35846f9a710c099eec3347"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Fri Nov 11 10:14:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 11 10:14:57 2011 -0500"
      },
      "message": "btrfs: rename the option to nospace_cache\n\nRename no_space_cache option to nospace_cache to be more consistent with\nthe rest, where the simple prefix \u0027no\u0027 is used to negate an option.\n\nThe option has been introduced during the -rc1 cycle and there are has not been\nwidely used, so it\u0027s safe.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "69f4cb526bd02ae5af35846f9a710c099eec3347",
      "tree": "0fc400c20ab6293603b8b615467893a13426c82c",
      "parents": [
        "62f30c5462374b991e7e3f42d49ce2265c1b82f1"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Nov 11 08:17:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 11 08:17:10 2011 -0500"
      },
      "message": "Btrfs: handle bio_add_page failure gracefully in scrub\n\nCurrently scrub fails with ENOMEM when bio_add_page fails. Unfortunately\ndm based targets accept only one page per bio, thus making scrub always\nfails. This patch just submits the current bio when an error is encountered\nand starts a new one.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "62f30c5462374b991e7e3f42d49ce2265c1b82f1",
      "tree": "4d991bd451bcc9e619bb4b775b4acc6a0e3fca8f",
      "parents": [
        "2f120c05e67ae34c93786b1050c6828904314429"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: fix deadlock caused by the race between relocation\n\nWe can not do flushable reservation for the relocation when we create snapshot,\nbecause it may make the transaction commit task and the flush task wait for\neach other and the deadlock happens.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2f120c05e67ae34c93786b1050c6828904314429",
      "tree": "d14dfdb4e94b5b562ed35206a8525cd5908fc0db",
      "parents": [
        "76b9e23d25d5c99f994bee3172de39492e452e93"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: only map pages if we know we need them when reading the space cache\n\nPeople have been running into a warning when loading space cache because the\npage is already mapped when trying to read in a bitmap.  The way we read in\nentries and pages is kind of convoluted, so fix it so that io_ctl_read_entry\nmaps the entries if it needs to, and if it hits the end of the page it simply\nunmaps the page.  That way we can unconditionally unmap the io_ctl before\nreading in the bitmap and we should stop hitting these warnings.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76b9e23d25d5c99f994bee3172de39492e452e93",
      "tree": "458af244546eb4a131944d2b3a922f027ea15d54",
      "parents": [
        "61b520a9d0083b9b361638e456af45fd75150c87"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: fix orphan backref nodes\n\nIf the root node of a fs/file tree is in the block group that is\nbeing relocated, but the others are not in the other block groups.\nwhen we create a snapshot for this tree between the relocation tree\ncreation ends and -\u003ecreate_reloc_tree is set to 0, Btrfs will create\nsome backref nodes that are the lowest nodes of the backrefs cache.\nBut we forget to add them into -\u003eleaves list of the backref cache\nand deal with them, and at last, they will triggered BUG_ON().\n\n  kernel BUG at fs/btrfs/relocation.c:239!\n\nThis patch fixes it by adding them into -\u003eleaves list of backref cache.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "61b520a9d0083b9b361638e456af45fd75150c87",
      "tree": "9545d5f0a2e606bef5702437a7c4c3eca9f12db4",
      "parents": [
        "3254c87618354e58fa2a7b375c6664f567480c33"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}\n\nbtrfs_block_rsv_add{, _noflush}() have similar code, so abstract that code.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3254c87618354e58fa2a7b375c6664f567480c33",
      "tree": "735c06e860467f567e12c81cabee7956baeee258",
      "parents": [
        "ba38eb4de354d228f2792f93cde2c748a3a3f3b2"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: fix unreleased path in btrfs_orphan_cleanup()\n\nWhen we did stress test for the space relocation, the deadlock happened.\nBy debugging, We found it was caused by the carelessness that we forgot\nto unlock the read lock of the extent buffers in btrfs_orphan_cleanup()\nbefore we end the transaction handle, so the transaction commit task waited\nthe task, which called btrfs_orphan_cleanup(), to unlock the extent buffer,\nbut that task waited the commit task to end the transaction commit, and\nthe deadlock happened. Fix it.\n\nSigned-ff-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ba38eb4de354d228f2792f93cde2c748a3a3f3b2",
      "tree": "c88a2903398eae9ccd7f0c755f70ca600bcc162b",
      "parents": [
        "924cd8fbe41851eda2b68bf2ed501b2777fd77b4"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:04 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:04 2011 -0500"
      },
      "message": "Btrfs: fix no reserved space for writing out inode cache\n\nI-node cache forgets to reserve the space when writing out it. And when\nwe do some stress test, such as synctest, it will trigger WARN_ON() in\nuse_block_rsv().\n\nWARNING: at fs/btrfs/extent-tree.c:5718 btrfs_alloc_free_block+0xbf/0x281 [btrfs]()\n...\nCall Trace:\n [\u003cffffffff8104df86\u003e] warn_slowpath_common+0x80/0x98\n [\u003cffffffff8104dfb3\u003e] warn_slowpath_null+0x15/0x17\n [\u003cffffffffa0369c60\u003e] btrfs_alloc_free_block+0xbf/0x281 [btrfs]\n [\u003cffffffff810cbcb8\u003e] ? __set_page_dirty_nobuffers+0xfe/0x108\n [\u003cffffffffa035c040\u003e] __btrfs_cow_block+0x118/0x3b5 [btrfs]\n [\u003cffffffffa035c7ba\u003e] btrfs_cow_block+0x103/0x14e [btrfs]\n [\u003cffffffffa035e4c4\u003e] btrfs_search_slot+0x249/0x6a4 [btrfs]\n [\u003cffffffffa036d086\u003e] btrfs_lookup_inode+0x2a/0x8a [btrfs]\n [\u003cffffffffa03788b7\u003e] btrfs_update_inode+0xaa/0x141 [btrfs]\n [\u003cffffffffa036d7ec\u003e] btrfs_save_ino_cache+0xea/0x202 [btrfs]\n [\u003cffffffffa03a761e\u003e] ? btrfs_update_reloc_root+0x17e/0x197 [btrfs]\n [\u003cffffffffa0373867\u003e] commit_fs_roots+0xaa/0x158 [btrfs]\n [\u003cffffffffa03746a6\u003e] btrfs_commit_transaction+0x405/0x731 [btrfs]\n [\u003cffffffff810690df\u003e] ? wake_up_bit+0x25/0x25\n [\u003cffffffffa039d652\u003e] ? btrfs_log_dentry_safe+0x43/0x51 [btrfs]\n [\u003cffffffffa0381c5f\u003e] btrfs_sync_file+0x16a/0x198 [btrfs]\n [\u003cffffffff81122806\u003e] ? mntput+0x21/0x23\n [\u003cffffffff8112d150\u003e] vfs_fsync_range+0x18/0x21\n [\u003cffffffff8112d170\u003e] vfs_fsync+0x17/0x19\n [\u003cffffffff8112d316\u003e] do_fsync+0x29/0x3e\n [\u003cffffffff8112d348\u003e] sys_fsync+0xb/0xf\n [\u003cffffffff81468352\u003e] system_call_fastpath+0x16/0x1b\n\nSometimes it causes BUG_ON() in the reservation code of the delayed inode\nis triggered.\n\nSo we must reserve enough space for inode cache.\n\nNote: If we can not reserve the enough space for inode cache, we will\ngive up writing out it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "924cd8fbe41851eda2b68bf2ed501b2777fd77b4",
      "tree": "c31afbc9ba7dbc27eea43a0319a64732d180a3d2",
      "parents": [
        "f7d572188b7b2a6d07081688f8602dc407186e64"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:04 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:04 2011 -0500"
      },
      "message": "Btrfs: fix nocow when deleting the item\n\nbtrfs_previous_item() just search the b+ tree, do not COW the nodes or leaves,\nif we modify the result of it, the meta-data will be broken. fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7d572188b7b2a6d07081688f8602dc407186e64",
      "tree": "d6a386fbe7c44afcb05847e1f9d1405583b0fff9",
      "parents": [
        "2115133f8b9a8dbdb217d14080814df07ce90479",
        "04d21a244fdf79d0ac892eaaa9a46b682467277c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:42:53 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:42:53 2011 -0500"
      },
      "message": "Merge branch \u0027mount-fixes\u0027 of git://github.com/idryomov/btrfs-unstable into integration\n"
    },
    {
      "commit": "2115133f8b9a8dbdb217d14080814df07ce90479",
      "tree": "3b2f3d6839cdb1f6495ae10dd548f7fbfee70266",
      "parents": [
        "7fd2ae21a42d178982679b86086661292b4afe4a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:39:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:39:08 2011 -0500"
      },
      "message": "Btrfs: tweak the delayed inode reservations again\n\nJosef sent along an incremental to the inode reservation\ncode to make sure we try and fall back to directly updating\nthe inode item if things go horribly wrong.\n\nThis reworks that patch slightly, adding a fallback function\nthat will always try to update the inode item directly without\ngoing through the delayed_inode code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "04d21a244fdf79d0ac892eaaa9a46b682467277c",
      "tree": "da0cadb86766bbf34f30c4b3efddde01e3d6d677",
      "parents": [
        "586e46e2813c589d26258a599580421fb6fb576b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 14:41:22 2011 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 22:53:39 2011 +0200"
      },
      "message": "Btrfs: rework error handling in btrfs_mount()\n\nCommits 6c41761f and 45ea6095 introduced the possibility of NULL pointer\ndereference on error paths, also we would leave all devices busy and\nleak fs_info with all sub-structures on error when trying to mount an\nalready mounted fs to a different directory.\n\nFix this by doing all allocations before trying to open any of the\ndevices, adjust error path for mount-already-mounted-fs case.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\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": "f23c8af8ca2789eeb0ab9ea90c214f9694d96cc5",
      "tree": "e1acd02447bc510609f14372d4aa4c1349ed6000",
      "parents": [
        "a90e8b6fb80db43b029e1e76205452afa8bdc77a"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Nov 08 19:15:05 2011 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 22:53:38 2011 +0200"
      },
      "message": "Btrfs: fix subvol_name leak on error in btrfs_mount()\n\nbtrfs_parse_early_options() can fail due to error while scanning devices\n(-o device\u003d option), but still strdup() subvol_name string:\n\nmount -o subvol\u003dSUBV,device\u003dBAD_DEVICE \u003cdev\u003e \u003cmnt\u003e\n\nSo free subvol_name string on error.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a90e8b6fb80db43b029e1e76205452afa8bdc77a",
      "tree": "98a546a79e439f984f43c15f1cd6fecc8a082412",
      "parents": [
        "7fd2ae21a42d178982679b86086661292b4afe4a"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Tue Nov 08 16:47:55 2011 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Wed Nov 09 22:53:38 2011 +0200"
      },
      "message": "Btrfs: fix memory leak in btrfs_parse_early_options()\n\nDon\u0027t leak subvol_name string in case multiple subvol\u003d options are\ngiven.  \"The lastest option is effective\" behavior (consistent with\nsubvolid\u003d and subvolrootid\u003d options) is preserved.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "7fd2ae21a42d178982679b86086661292b4afe4a",
      "tree": "236c22d807ca5f2419a1b0394bd1092aab730cde",
      "parents": [
        "917c16b2b69fc2eeb432eabca73258f08c58361e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 08 15:47:34 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 15:47:34 2011 -0500"
      },
      "message": "Btrfs: fix our reservations for updating an inode when completing io\n\nPeople have been reporting ENOSPC crashes in finish_ordered_io.  This is because\nwe try to steal from the delalloc block rsv to satisfy a reservation to update\nthe inode.  The problem with this is we don\u0027t explicitly save space for updating\nthe inode when doing delalloc.  This is kind of a problem and we\u0027ve gotten away\nwith this because way back when we just stole from the delalloc reserve without\nany questions, and this worked out fine because generally speaking the leaf had\nbeen modified either by the mtime update when we did the original write or\nbecause we just updated the leaf when we inserted the file extent item, only on\nrare occasions had the leaf not actually been modified, and that was still ok\nbecause we\u0027d just use a block or two out of the over-reservation that is\ndelalloc.\n\nThen came the delayed inode stuff.  This is amazing, except it wants a full\nreservation for updating the inode since it may do it at some point down the\nroad after we\u0027ve written the blocks and we have to recow everything again.  This\nworked out because the delayed inode stuff just stole from the global reserve,\nthat is until recently when I changed that because it caused other problems.\n\nSo here we are, we\u0027re doing everything right and being screwed for it.  So take\nan extra reservation for the inode at delalloc reservation time and carry it\nthrough the life of the delalloc reservation.  If we need it we can steal it in\nthe delayed inode stuff.  If we have already stolen it try and do a normal\nmetadata reservation.  If that fails try to steal from the delalloc reservation.\nIf _that_ fails we\u0027ll get a WARN_ON() so I can start thinking of a better way to\nsolve this and in the meantime we\u0027ll steal from the global reserve.\n\nWith this patch I ran xfstests 13 in a loop for a couple of hours and didn\u0027t see\nany problems.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "917c16b2b69fc2eeb432eabca73258f08c58361e",
      "tree": "3eb8b7d59bbb8c7d6cb54876428b485e72878692",
      "parents": [
        "45ea6095c8f0d6caad5658306416a5d254f1205e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 14:49:59 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 14:49:59 2011 -0500"
      },
      "message": "Btrfs: fix oops on NULL trans handle in btrfs_truncate\n\nIf we fail to reserve space in the transaction during truncate, we can\nerror out with a NULL trans handle.  The cleanup code needs an extra\ncheck to make sure we aren\u0027t trying to use the bad handle.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "45ea6095c8f0d6caad5658306416a5d254f1205e",
      "tree": "84c25fabfb4b0a8e4fdbc16b5d29ba75ebf7a0ce",
      "parents": [
        "7c7e82a77fe3d89ae50824aa7c897454675eb4c4"
      ],
      "author": {
        "name": "slyich@gmail.com",
        "email": "slyich@gmail.com",
        "time": "Mon Nov 07 16:08:01 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 07 16:08:01 2011 -0500"
      },
      "message": "btrfs: fix double-free \u0027tree_root\u0027 in \u0027btrfs_mount()\u0027\n\nOn error path \u0027tree_root\u0027 is treed in \u0027free_fs_info()\u0027.\nNo need to free it explicitely. Noticed by SLUB in debug mode:\n\nComplete reproducer under usermode linux (discovered on real\nmachine):\n\n    bdev\u003d/dev/ubda\n    btr_root\u003d/btr\n    /mkfs.btrfs $bdev\n    mount $bdev $btr_root\n    mkdir $btr_root/subvols/\n    cd $btr_root/subvols/\n    /btrfs su cr foo\n    /btrfs su cr bar\n    mount $bdev -osubvol\u003dsubvols/foo $btr_root/subvols/bar\n    umount $btr_root/subvols/bar\n\nwhich gives\n\ndevice fsid 4d55aa28-45b1-474b-b4ec-da912322195e devid 1 transid 7 /dev/ubda\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nBUG kmalloc-2048: Object already free\n-----------------------------------------------------------------------------\n\nINFO: Allocated in btrfs_mount+0x389/0x7f0 age\u003d0 cpu\u003d0 pid\u003d277\nINFO: Freed in btrfs_mount+0x51c/0x7f0 age\u003d0 cpu\u003d0 pid\u003d277\nINFO: Slab 0x0000000062886200 objects\u003d15 used\u003d9 fp\u003d0x0000000070b4d2d0 flags\u003d0x4081\nINFO: Object 0x0000000070b4d2d0 @offset\u003d21200 fp\u003d0x0000000070b4a968\n...\nCall Trace:\n70b31948:  [\u003c6008c522\u003e] print_trailer+0xe2/0x130\n70b31978:  [\u003c6008c5aa\u003e] object_err+0x3a/0x50\n70b319a8:  [\u003c6008e242\u003e] free_debug_processing+0x142/0x2a0\n70b319e0:  [\u003c600ebf6f\u003e] btrfs_mount+0x55f/0x7f0\n70b319f8:  [\u003c6008e5c1\u003e] __slab_free+0x221/0x2d0\n\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\nCc: Arne Jansen \u003csensille@gmx.net\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.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": "208bca0860406d16398145ddd950036a737c3c9d",
      "tree": "7797a16c17d8bd155120126fa7976727fc6de013",
      "parents": [
        "6aad3738f6a79fd0ca480eaceefe064cc471f6eb",
        "0e175a1835ffc979e55787774e58ec79e41957d7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:02:23 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:02:23 2011 -0800"
      },
      "message": "Merge branch \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\n* \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Add a \u0027reason\u0027 to wb_writeback_work\n  writeback: send work item to queue_io, move_expired_inodes\n  writeback: trace event balance_dirty_pages\n  writeback: trace event bdi_dirty_ratelimit\n  writeback: fix ppc compile warnings on do_div(long long, unsigned long)\n  writeback: per-bdi background threshold\n  writeback: dirty position control - bdi reserve area\n  writeback: control dirty pause time\n  writeback: limit max dirty pause time\n  writeback: IO-less balance_dirty_pages()\n  writeback: per task dirty rate limit\n  writeback: stabilize bdi-\u003edirty_ratelimit\n  writeback: dirty rate control\n  writeback: add bg_threshold parameter to __bdi_update_bandwidth()\n  writeback: dirty position control\n  writeback: account per-bdi accumulated dirtied pages\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": "d43317dcd074818d4bd12ddd4184a29aff98907b",
      "tree": "233033cf8c7f3cb38dc549d2a1be7f0fc9ecfd80",
      "parents": [
        "56d2a48f81a1bde827c625b90221fade72fe9c61"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:26:19 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:26:19 2011 -0500"
      },
      "message": "Btrfs: fix race during transaction joins\n\nWhile we\u0027re allocating ram for a new transaction, we drop our spinlock.\nWhen we get the lock back, we do check to see if a transaction started\nwhile we slept, but we don\u0027t check to make sure it isn\u0027t blocked\nbecause a commit has already started.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "56d2a48f81a1bde827c625b90221fade72fe9c61",
      "tree": "162de09347589bc3bf9bd40f2c2ad6e32283798b",
      "parents": [
        "21ca543efc12674fddb22ddf4ea4906427f4e982"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Nov 04 09:41:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:11:29 2011 -0500"
      },
      "message": "Btrfs: fix a potential btrfs_bio leak on scrub fixups\n\nIn case we were able to map less than we wanted (length \u003c PAGE_SIZE\nclause is true) btrfs_bio is still allocated and we have to free it.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "21ca543efc12674fddb22ddf4ea4906427f4e982",
      "tree": "61cebcafbc7605800b6411ea279f634db9c9da15",
      "parents": [
        "9510dc4c62252e96dca44a94948327c76774f25b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Nov 04 09:41:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:11:21 2011 -0500"
      },
      "message": "Btrfs: rename btrfs_bio multi -\u003e bbio for consistency\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9510dc4c62252e96dca44a94948327c76774f25b",
      "tree": "945a5a2df3c4c84cec80dee60c1c67751e5489b8",
      "parents": [
        "306c8b68c82dfe6b7c9e5b61985760ad5d089205"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Nov 04 09:41:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:11:08 2011 -0500"
      },
      "message": "Btrfs: stop leaking btrfs_bios on readahead\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": "740c3d226cbba6cd6a32adfb66809c94938f3e57",
      "tree": "375a5d2ee3bdc66f29e69e99c3691c3200407820",
      "parents": [
        "806468f8bf76a3cb2b626dd282946a6c9c0a50f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 02 15:48:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:08:49 2011 -0500"
      },
      "message": "Btrfs: fix the new inspection ioctls for 32 bit compat\n\nThe new ioctls to follow backrefs are not clean for 32/64 bit\ncompat.  This reworks them for u64s everywhere.  They are brand new, so\nthere are no problems with changing the interface now.\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": "c06a0e120a4e381a1c291c1fce3c6155c5791cae",
      "tree": "a9d1c44610b37c701d25e439b005dacfa0f823c1",
      "parents": [
        "bf0da8c183a15656eee63c54f334c3794320872a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 04 19:56:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:20 2011 -0500"
      },
      "message": "Btrfs: fix delayed insertion reservation\n\nWe all keep getting those stupid warnings from use_block_rsv when running\nstress.sh, and it\u0027s because the delayed insertion stuff is being stupid.  It\u0027s\nnot the delayed insertion stuffs fault, it\u0027s all just stupid.  When marking an\ninode dirty for oh say updating the time on it, we just do a\nbtrfs_join_transaction, which doesn\u0027t reserve any space.  This is stupid because\nwe\u0027re going to have to have space reserve to make this change, but we do it\nbecause it\u0027s fast because chances are we\u0027re going to call it over and over again\nand it doesn\u0027t matter.  Well thanks to the delayed insertion stuff this is\nmostly the case, so we do actually need to make this reservation.  So if\ntrans-\u003ebytes_reserved is 0 then try to do a normal reservation.  If not return\nENOSPC which will make the btrfs_dirty_inode start a proper transaction which\nwill let it do the whole ENOSPC dance and reserve enough space for the delayed\ninsertion to steal the reservation from the transaction.\n\nThe other stupid thing we do is not reserve space for the inode when writing to\nthe thing.  Usually this is ok since we have to update the time so we\u0027d have\nalready done all this work before we get to the endio stuff, so it doesn\u0027t\nmatter.  But this is stupid because we could write the data after the\ntransaction commits where we changed the mtime of the inode so we have to cow\nall the way down to the inode anyway.  This used to be masked by the delalloc\nreservation stuff, but because we delay the update it doesn\u0027t get masked in this\ncase.  So again the delayed insertion stuff bites us in the ass.  So if our\ntrans-\u003eblock_rsv is delalloc, just steal the reservation from the delalloc\nreserve.  Hopefully this won\u0027t bite us in the ass, but I\u0027ve said that before.\n\nWith this patch stress.sh no longer spits out those stupid warnings (famous last\nwords).  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bf0da8c183a15656eee63c54f334c3794320872a",
      "tree": "dad92ff6ea5cba470d93664b9ea195ecab66b07b",
      "parents": [
        "663350ac38c67ca388acea6e876dc6d668c232b0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Nov 04 12:29:37 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:20 2011 -0500"
      },
      "message": "Btrfs: ClearPageError during writepage and clean_tree_block\n\nFailure testing was tripping up over stale PageError bits in\nmetadata pages.  If we have an io error on a block, and later on\nend up reusing it, nobody ever clears PageError on those pages.\n\nDuring commit, we\u0027ll find PageError and think we had trouble writing\nthe block, which will lead to aborts and other problems.\n\nThis changes clean_tree_block and the btrfs writepage code to\nclear the PageError bit.  In both cases we\u0027re either completely\ndone with the page or the page has good stuff and the error bit\nis no longer valid.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "663350ac38c67ca388acea6e876dc6d668c232b0",
      "tree": "d111c306c5dfd622c04a0568efde089bdc4577b3",
      "parents": [
        "6d668dda0caec537fbf28c4d91e6d18181af3cff"
      ],
      "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:19 2011 -0500"
      },
      "message": "Btrfs: be smarter about committing the transaction in reserve_metadata_bytes\n\nBecause of the overcommit stuff I had to make it so that we committed the\ntransaction all the time in reserve_metadata_bytes in case we had overcommitted\nbecause of delayed items.  This was because previously we had no way of knowing\nhow much space was reserved for delayed items.  Now that we have the\ndelayed_block_rsv we can check it to see if committing the transaction would get\nus anywhere.  This patch breaks out the committing logic into a helper function\nthat will check to see if committing the transaction would free enough space for\nus to get anything done.  With this patch xfstests 83 goes from taking 445\nseconds to taking 28 seconds on my box.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\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": "c8174313a8102e874aaa321e2fc4c7c460a87151",
      "tree": "366dc804d4b5d0d8c32d70cc554651efa552ba59",
      "parents": [
        "5a77d76c243be18d854aa1b14d697525f60e169a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 02 09:29:35 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:50 2011 -0500"
      },
      "message": "Btrfs: use the global reserve when truncating the free space cache inode\n\nWe no longer use the orphan block rsv for holding the reservation for truncating\nthe inode, so instead use the global block rsv and check to make sure it has\nenough space for us to truncate the space.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5a77d76c243be18d854aa1b14d697525f60e169a",
      "tree": "ddf15400e692085b5914297eb2d88989e5246c11",
      "parents": [
        "01d658f2ca3c85c1ffb20b306e30d16197000ce7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 01 14:32:23 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:49 2011 -0500"
      },
      "message": "Btrfs: release metadata from global reserve if we have to fallback for unlink\n\nI fixed a problem where we weren\u0027t reserving space for an orphan item when we\nhad to fallback to using the global reserve for an unlink, but I introduced\nanother problem.  I was migrating the bytes from the transaction reserve to the\nglobal reserve and then releasing from the global reserve in\nbtrfs_end_transaction().  The problem with this is that a migrate will jack up\nthe size for the destination, but leave the size alone for the source, with the\nidea that you can do a release normally on the source and it all washes out, and\nthen you can do a release again on the destination and it works out right.  My\nway was skipping the release on the trans_block_rsv which still had the jacked\nup size from our original reservation.  So instead release manually from the\nglobal reserve if this transaction was using it, and then set the\ntrans-\u003eblock_rsv back to the trans_block_rsv so that btrfs_end_transaction\ncleans everything up properly.  With this patch xfstest 83 doesn\u0027t emit warnings\nabout leaking space.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\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": "e688b7252f784c2479d559f9f70ca8354752c5e7",
      "tree": "3934b0a9c348b2900e08e8fc9c0e6819e80d0fff",
      "parents": [
        "1eae31e918972bbeefc119d23c1d67674f49a301"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 31 20:52:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:48 2011 -0500"
      },
      "message": "Btrfs: fix extent pinning bugs in the tree log\n\nThe tree log had two important bugs that could cause corruptions after a\ncrash.  Sometimes we were allowing tree log blocks to be reused after\nthe tree log was committed but before the transaction commit was done.\n\nThis allowed a future metadata write to overwrite the tree log data.  It\nis fixed by adding a new variant of freeing reserved extents that always\npins them.  Credit goes to Stefan Behrens and Arne Jansen for many many\nhours spent tracking this bug down.\n\nDuring tree log replay, we do a pass through the tree log and pin all\nthe extents we find.  This makes sure the replay code won\u0027t go in and\nuse any of those blocks for new allocations during replay.  The problem\nis the free space cache isn\u0027t honoring these pinned extents.  So the\nallocator can end up handing them out, leading to all kinds of problems\nduring replay.\n\nThe fix here is to force any free space cache to load while we pin the\nextents, and then to make sure we remove the pinned extents from the\nfree space rbtree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReported-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "1eae31e918972bbeefc119d23c1d67674f49a301",
      "tree": "b6c1df4d25699812a83f107187b407d53abeb82e",
      "parents": [
        "cd354ad613a393424f85333ceed6b15e07fb94ae"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 14 06:31:20 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:47 2011 -0500"
      },
      "message": "Btrfs: make sure btrfs_remove_free_space doesn\u0027t leak EAGAIN\n\nbtrfs_remove_free_space needs to make sure to set ret back to a\nvalid return value after setting it to EAGAIN, otherwise we return\nit to the callers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cd354ad613a393424f85333ceed6b15e07fb94ae",
      "tree": "98261d8cc0a0f3808fd34037629a92d31a670b19",
      "parents": [
        "dff51cd1c60856c28f5d22a571294c2b70b6b322"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 20 15:45:37 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:47 2011 -0500"
      },
      "message": "Btrfs: don\u0027t wait as long for more batches during SSD log commit\n\nWhen we\u0027re doing log commits, we try to wait for more writers to come in\nand make the commit bigger.  This helps improve performance on rotating\ndisks, but on SSDs it adds latencies.\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": "0e175a1835ffc979e55787774e58ec79e41957d7",
      "tree": "6ec4b65a8de4e9d1c12d26a1079079ed81d79450",
      "parents": [
        "ad4e38dd6a33bb3a4882c487d7abe621e583b982"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Fri Oct 07 21:54:10 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Oct 31 00:33:36 2011 +0800"
      },
      "message": "writeback: Add a \u0027reason\u0027 to wb_writeback_work\n\nThis creates a new \u0027reason\u0027 field in a wb_writeback_work\nstructure, which unambiguously identifies who initiates\nwriteback activity.  A \u0027wb_reason\u0027 enumeration has been\nadded to writeback.h, to enumerate the possible reasons.\n\nThe \u0027writeback_work_class\u0027 and tracepoint event class and\n\u0027writeback_queue_io\u0027 tracepoints are updated to include the\nsymbolic \u0027reason\u0027 in all trace events.\n\nAnd the \u0027writeback_inodes_sbXXX\u0027 family of routines has had\na wb_stats parameter added to them, so callers can specify\nwhy writeback is being started.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    }
  ],
  "next": "f362f98e7c445643d27c610bb7a86b79727b592e"
}
