)]}'
{
  "log": [
    {
      "commit": "f60d16a8923201bb27ad7c09016abab2818cf8ce",
      "tree": "7bb7f019dad20883b01cb7689d80195d483e37a4",
      "parents": [
        "a27202fbe92b12eec895c36644440175de01d7a6"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "meyering@redhat.com",
        "time": "Wed Apr 25 21:24:17 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:32 2012 -0400"
      },
      "message": "Btrfs: avoid buffer overrun in mount option handling\n\nThere is an off-by-one error: allocating room for a maximal result\nstring but without room for a trailing NUL.  That, can lead to\nreturning a transformed string that is not NUL-terminated, and\nthen to a caller reading beyond end of the malloc\u0027d buffer.\n\nRewrite to s/kzalloc/kmalloc/, remove unwarranted use of strncpy\n(the result is guaranteed to fit), remove dead strlen at end, and\nchange a few variable names and comments.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Jim Meyering \u003cmeyering@redhat.com\u003e\n"
    },
    {
      "commit": "f07c9a79f06cd33b1c9c2c4eacb60bafa7e3f310",
      "tree": "73e493a66005d90f73d00cb3b09c6dc8fd5c18a2",
      "parents": [
        "2eec6c8102c62c540c637176271cfdb13d828d7b"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "jim@meyering.net",
        "time": "Thu Apr 26 18:35:12 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:31 2012 -0400"
      },
      "message": "Btrfs: avoid buffer overrun in btrfs_printk\n\nThe buffer read-overrun would be triggered by a printk format\nstarting with \u003cN\u003e, where N is a single digit.  NUL-terminate\nafter strncpy.  Use memcpy, not strncpy, since we know the\nstring we\u0027re copying fits in the destination buffer and\ncontains no NUL byte.\n\nSigned-off-by: Jim Meyering \u003cmeyering@redhat.com\u003e\n"
    },
    {
      "commit": "0d2450abfa359ff94a2bee64a7daeba68c346c81",
      "tree": "b6b9f88d0d51fa325dfa059a203e7e40856fc36c",
      "parents": [
        "0885ef5b5601e9b007c383e77c172769b1f214fd"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Tue Apr 24 22:59:16 2012 +0300"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:30 2012 -0400"
      },
      "message": "btrfs: allow changing \u0027thread_pool\u0027 size at remount time\n\nChanging \u0027mount -oremount,thread_pool\u003d2 /\u0027 didn\u0027t make any effect:\n\nmaximum amount of worker threads is specified in 2 places:\n- in \u0027strict btrfs_fs_info::thread_pool_size\u0027\n- in each worker struct: \u0027struct btrfs_workers::max_workers\u0027\n\n\u0027mount -oremount\u0027 updated only \u0027btrfs_fs_info::thread_pool_size\u0027.\n\nFix it by pushing new maximum value to all created worker structures\nas well.\n\nCc: Josef Bacik \u003cjosef@redhat.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\n"
    },
    {
      "commit": "0c4d2d95d06e920e0c61707e62c7fffc9c57f63a",
      "tree": "5d6fa736c7fea0a0afd60eda8e6e0586df6fb606",
      "parents": [
        "a25c75d5ad04df0a7abd09585231b4021a91a358"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Apr 05 15:03:02 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:27 2012 -0400"
      },
      "message": "Btrfs: use i_version instead of our own sequence\n\nWe\u0027ve been keeping around the inode sequence number in hopes that somebody\nwould use it, but nobody uses it and people actually use i_version which\nserves the same purpose, so use i_version where we used the incore inode\u0027s\nsequence number and that way the sequence is updated properly across the\nboard, and not just in file write.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f7b006931751f029620ad2f8310ac7a1484fbdb4",
      "tree": "71120f4c4c51752902317fbf853e3b0316c2adb0",
      "parents": [
        "b990f9b3cb068578b8aefd3a34f8c8555661ef95",
        "dc7fdde39e4962b1a88741f7eba2a6b3be1285d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 09:30:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 09:30:07 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes from Chris Mason:\n \"This has our collection of bug fixes.  I missed the last rc because I\n  thought our patches were making NFS crash during my xfs test runs.\n  Turns out it was an NFS client bug fixed by someone else while I tried\n  to bisect it.\n\n  All of these fixes are small, but some are fairly high impact.  The\n  biggest are fixes for our mount -o remount handling, a deadlock due to\n  GFP_KERNEL allocations in readdir, and a RAID10 error handling bug.\n\n  This was tested against both 3.3 and Linus\u0027 master as of this morning.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (26 commits)\n  Btrfs: reduce lock contention during extent insertion\n  Btrfs: avoid deadlocks from GFP_KERNEL allocations during btrfs_real_readdir\n  Btrfs: Fix space checking during fs resize\n  Btrfs: fix block_rsv and space_info lock ordering\n  Btrfs: Prevent root_list corruption\n  Btrfs: fix repair code for RAID10\n  Btrfs: do not start delalloc inodes during sync\n  Btrfs: fix that check_int_data mount option was ignored\n  Btrfs: don\u0027t count CRC or header errors twice while scrubbing\n  Btrfs: fix btrfs_ioctl_dev_info() crash on missing device\n  btrfs: don\u0027t return EINTR\n  Btrfs: double unlock bug in error handling\n  Btrfs: always store the mirror we read the eb from\n  fs/btrfs/volumes.c: add missing free_fs_devices\n  btrfs: fix early abort in \u0027remount\u0027\n  Btrfs: fix max chunk size check in chunk allocator\n  Btrfs: add missing read locks in backref.c\n  Btrfs: don\u0027t call free_extent_buffer twice in iterate_irefs\n  Btrfs: Make free_ipath() deal gracefully with NULL pointers\n  Btrfs: avoid possible use-after-free in clear_extent_bit()\n  ...\n"
    },
    {
      "commit": "996d282c7ff470f150a467eb4815b90159d04c47",
      "tree": "e6dcab1fc9db79eff901aa3ea07d01ddc734999a",
      "parents": [
        "25cd999e1a685dab65292afbe9fa24d790d8a859"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 23 20:35:03 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:12 2012 -0400"
      },
      "message": "Btrfs: do not start delalloc inodes during sync\n\nbtrfs_start_delalloc_inodes will just walk the list of delalloc inodes and\nstart writing them out, but it doesn\u0027t splice the list or anything so as\nlong as somebody is doing work on the box you could end up in this section\n_forever_.  So just remove it, it\u0027s not needed anyway since sync will start\nwriteback on all inodes anyway, all we need to do is wait for ordered\nextents and then we can commit the transaction.  In my horrible torture test\nsync goes from taking 4 minutes to about 1.5 minutes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8a3db1849e9e2563727ea2dc32737502e0096641",
      "tree": "378c3527b32dea43c50a3cd1cf534d7901aab4be",
      "parents": [
        "37db63a400d3bac467795aa43901065fd8d903b7"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Mon Apr 16 06:44:37 2012 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:26 2012 +0200"
      },
      "message": "btrfs: fix early abort in \u0027remount\u0027\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\n"
    },
    {
      "commit": "9613bebb223dea3179c265dc31e1bb41ae39f321",
      "tree": "39bf883573d23775a53be3172323c0237fef5630",
      "parents": [
        "40380f1c7841a5dcbf0b20f0b6da11969211ef77",
        "bc3f116fec194f1d7329b160c266fe16b9266a1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes and features from Chris Mason:\n \"We\u0027ve merged in the error handling patches from SuSE.  These are\n  already shipping in the sles kernel, and they give btrfs the ability\n  to abort transactions and go readonly on errors.  It involves a lot of\n  churn as they clarify BUG_ONs, and remove the ones we now properly\n  deal with.\n\n  Josef reworked the way our metadata interacts with the page cache.\n  page-\u003eprivate now points to the btrfs extent_buffer object, which\n  makes everything faster.  He changed it so we write an whole extent\n  buffer at a time instead of allowing individual pages to go down,,\n  which will be important for the raid5/6 code (for the 3.5 merge\n  window ;)\n\n  Josef also made us more aggressive about dropping pages for metadata\n  blocks that were freed due to COW.  Overall, our metadata caching is\n  much faster now.\n\n  We\u0027ve integrated my patch for metadata bigger than the page size.\n  This allows metadata blocks up to 64KB in size.  In practice 16K and\n  32K seem to work best.  For workloads with lots of metadata, this cuts\n  down the size of the extent allocation tree dramatically and fragments\n  much less.\n\n  Scrub was updated to support the larger block sizes, which ended up\n  being a fairly large change (thanks Stefan Behrens).\n\n  We also have an assortment of fixes and updates, especially to the\n  balancing code (Ilya Dryomov), the back ref walker (Jan Schmidt) and\n  the defragging code (Liu Bo).\"\n\nFixed up trivial conflicts in fs/btrfs/scrub.c that were just due to\nremoval of the second argument to k[un]map_atomic() in commit\n7ac687d9e047.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (75 commits)\n  Btrfs: update the checks for mixed block groups with big metadata blocks\n  Btrfs: update to the right index of defragment\n  Btrfs: do not bother to defrag an extent if it is a big real extent\n  Btrfs: add a check to decide if we should defrag the range\n  Btrfs: fix recursive defragment with autodefrag option\n  Btrfs: fix the mismatch of page-\u003emapping\n  Btrfs: fix race between direct io and autodefrag\n  Btrfs: fix deadlock during allocating chunks\n  Btrfs: show useful info in space reservation tracepoint\n  Btrfs: don\u0027t use crc items bigger than 4KB\n  Btrfs: flush out and clean up any block device pages during mount\n  btrfs: disallow unequal data/metadata blocksize for mixed block groups\n  Btrfs: enhance superblock sanity checks\n  Btrfs: change scrub to support big blocks\n  Btrfs: minor cleanup in scrub\n  Btrfs: introduce common define for max number of mirrors\n  Btrfs: fix infinite loop in btrfs_shrink_device()\n  Btrfs: fix memory leak in resolver code\n  Btrfs: allow dup for data chunks in mixed mode\n  Btrfs: validate target profiles only if we are going to use them\n  ...\n"
    },
    {
      "commit": "98961a7e431735c791dbaaf0337029e219a5db5a",
      "tree": "e045f062c01075e1f88ab758717cbfd7a7ddd4ca",
      "parents": [
        "1c691b330a19a1344df89bcb0f4cacd99e8b289a",
        "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e565d4b962948e70f37f417603caf131a773621b",
      "tree": "e29c3f956cfae30d4b455801579e20b64fd060e3",
      "parents": [
        "a175423c831ea582c06784d1e172d2ce1d79923a"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 23 17:14:20 2012 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue Mar 27 14:51:17 2012 +0200"
      },
      "message": "Btrfs: actually call btrfs_init_lockdep\n\nbtrfs_init_lockdep only makes our lockdep class names look prettier, thus\nit did never hurt we forgot to actually call it. This turns our lockdep\nidentifier strings from lockdep auto-set #[id] into really pretty\n\"btrfs-fs-01\" or \"btrfs-csum-03\".\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "49b25e0540904be0bf558b84475c69d72e4de66e",
      "tree": "5a89b2f5d6e5bd8b1ff39bdb387071ec1cb2a615",
      "parents": [
        "4da35113426d16673aa1fb0613c14ca2e419e7fd"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 17:24:58 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:40 2012 +0100"
      },
      "message": "btrfs: enhance transaction abort infrastructure\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "4da35113426d16673aa1fb0613c14ca2e419e7fd",
      "tree": "32a72e44ec480ee127b860f2dc5bcc3698a352e5",
      "parents": [
        "3acd395317f22b4346a139571cd4723408c5d4af"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:30 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:40 2012 +0100"
      },
      "message": "btrfs: add varargs to btrfs_error\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "8c3429300181be44b30f9f017d53dc717da56caa",
      "tree": "76d2b3155bfff43ac4c96df7d6ccb723849c6e9f",
      "parents": [
        "c16fa4f2ad19908a47c63d8fa436a1178438c7e7"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:22:31 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:29 2012 +0100"
      },
      "message": "btrfs: Add btrfs_panic()\n\nAs part of the effort to eliminate BUG_ON as an error handling\ntechnique, we need to determine which errors are actual logic errors,\nwhich are on-disk corruption, and which are normal runtime errors\ne.g. -ENOMEM.\n\nAnnotating these error cases is helpful to understand and report them.\n\nThis patch adds a btrfs_panic() routine that will either panic\nor BUG depending on the new -ofatal_errors\u003d{panic,bug} mount option.\nSince there are still so many BUG_ONs, it defaults to BUG for now but I\nexpect that to change once the error handling effort has made\nsignificant progress.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d65773b22b749252b2805dcf96bdeb951a9481d8",
      "tree": "1839656e894933267e7466e32ba6ad73b24fa60a",
      "parents": [
        "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
        "f84a8bd60e3ee49eacc9ba824babf149ba3dad7e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "message": "Merge branch \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  btrfs: take allocation of -\u003etree_root into open_ctree()\n  btrfs: let -\u003es_fs_info point to fs_info, not root...\n  btrfs: consolidate failure exits in btrfs_mount() a bit\n  btrfs: make free_fs_info() call -\u003ekill_sb() unconditional\n  btrfs: merge free_fs_info() calls on fill_super failures\n  btrfs: kill pointless reassignment of -\u003es_fs_info in btrfs_fill_super()\n  btrfs: make open_ctree() return int\n  btrfs: sanitizing -\u003efs_info, part 5\n  btrfs: sanitizing -\u003efs_info, part 4\n  btrfs: sanitizing -\u003efs_info, part 3\n  btrfs: sanitizing -\u003efs_info, part 2\n  btrfs: sanitizing -\u003efs_info, part 1\n  btrfs: fix a deadlock in btrfs_scan_one_device()\n  btrfs: fix mount/umount race\n  btrfs: get -\u003ekill_sb() of its own\n  btrfs: preparation to fixing mount/umount race\n"
    },
    {
      "commit": "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
      "tree": "7bd26fc9a111c6af1601ecd2d1b0ab60da32f3f0",
      "parents": [
        "67175b855bfd6ed95ffeff95532173c07de6432d",
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)\n  Btrfs: use larger system chunks\n  Btrfs: add a delalloc mutex to inodes for delalloc reservations\n  Btrfs: space leak tracepoints\n  Btrfs: protect orphan block rsv with spin_lock\n  Btrfs: add allocator tracepoints\n  Btrfs: don\u0027t call btrfs_throttle in file write\n  Btrfs: release space on error in page_mkwrite\n  Btrfs: fix btrfsck error 400 when truncating a compressed\n  Btrfs: do not use btrfs_end_transaction_throttle everywhere\n  Btrfs: add balance progress reporting\n  Btrfs: allow for resuming restriper after it was paused\n  Btrfs: allow for canceling restriper\n  Btrfs: allow for pausing restriper\n  Btrfs: add skip_balance mount option\n  Btrfs: recover balance on mount\n  Btrfs: save balance parameters to disk\n  Btrfs: soft profile changing mode (aka soft convert)\n  Btrfs: implement online profile changing\n  Btrfs: do not reduce profile in do_chunk_alloc()\n  Btrfs: virtual address space subset filter\n  ...\n\nFix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new\nmnt_drop_write_file() helper.\n"
    },
    {
      "commit": "c126dea771be1b3c370c0ffc4a09e6a82d492a49",
      "tree": "99fc723ba2e89d767e260244cf8d19467bc68c8b",
      "parents": [
        "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
        "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:27:58 2012 -0500"
      },
      "message": "Merge branch \u0027integrity-check-patch-v2\u0027 of git://btrfs.giantdisaster.de/git/btrfs into integration\n\nConflicts:\n\tfs/btrfs/ctree.h\n\tfs/btrfs/super.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "27263e28321db438bc43dc0c0be432ce91526224",
      "tree": "b7571dd52d6c1d48528e383d273b330da94439bd",
      "parents": [
        "64e05503ab5c73b2ffb8d55d2f7aab74f34fc691",
        "19a39dce3b9bf0244d19a446718ad6f7605ff099"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:02 2012 -0500"
      },
      "message": "Merge branch \u0027restriper\u0027 of git://github.com/idryomov/btrfs-unstable into integration\n"
    },
    {
      "commit": "9555c6c180600b40f6e86bd4dc53bf47e06ed663",
      "tree": "74f95edee2368e183a2a054c24725d2940632a8f",
      "parents": [
        "596410151ed71819b9e8a8018c6c9992796b256d"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:48 2012 +0200"
      },
      "message": "Btrfs: add skip_balance mount option\n\nSince restriper kthread starts involuntarily on mount and can suck cpu\nand memory bandwidth add a mount option to forcefully skip it.  The\nrestriper in that case hangs around in paused state and can be resumed\nfrom userspace when it\u0027s convenient.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "f84a8bd60e3ee49eacc9ba824babf149ba3dad7e",
      "tree": "8c2eeefe7660147385bfd6f7f36457c58025fe84",
      "parents": [
        "815745cf3e46681241ad8025602ffbf2a452d514"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 15:57:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:37:02 2012 -0500"
      },
      "message": "btrfs: take allocation of -\u003etree_root into open_ctree()\n\nnow that we don\u0027t need it for sget() anymore...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "815745cf3e46681241ad8025602ffbf2a452d514",
      "tree": "7902ae81b199b383b5552e71b6d1cd21aff17fdb",
      "parents": [
        "59553edf110e5576d91be9dd5bd53d110e0d0290"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 15:40:49 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:35:37 2012 -0500"
      },
      "message": "btrfs: let -\u003es_fs_info point to fs_info, not root...\n\nthe latter can be obtained from the former (by looking as -\u003etree_root)\njust as cheaply as we currently are doing the other way round.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "59553edf110e5576d91be9dd5bd53d110e0d0290",
      "tree": "80db6c318f2cd766422ce1024dbb044364ede957",
      "parents": [
        "d22ca7de770e2a683eac000ba4db5a95e2f4c969"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:56:28 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:41 2012 -0500"
      },
      "message": "btrfs: consolidate failure exits in btrfs_mount() a bit\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d22ca7de770e2a683eac000ba4db5a95e2f4c969",
      "tree": "d84fb7d68173d3ea759e8a4f8bf1cd41fd0ad10f",
      "parents": [
        "be7e0950def403e90b5295ff2192c39967bf2aec"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:46:50 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:41 2012 -0500"
      },
      "message": "btrfs: make free_fs_info() call -\u003ekill_sb() unconditional\n\n... and don\u0027t bother with it after btrfs_fill_super() failure -\n-\u003ekill_sb() (unlike -\u003eput_super()) will be called even if we\nhave not got non-NULL -\u003es_root.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "be7e0950def403e90b5295ff2192c39967bf2aec",
      "tree": "ee468d0b63e30ac8270e1daabc823b51e4759f25",
      "parents": [
        "29db78aa0ac82319b764b87a1c5030d74523e296"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:40:05 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:40 2012 -0500"
      },
      "message": "btrfs: merge free_fs_info() calls on fill_super failures\n\n... all the way up into btrfs_mount().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "29db78aa0ac82319b764b87a1c5030d74523e296",
      "tree": "94ac498a9d6b0f02b1ebb22fd3e51d5a3ed6952d",
      "parents": [
        "ad2b2c802be2d3e8ed8364fef5ffaddabe448219"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:12:38 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:40 2012 -0500"
      },
      "message": "btrfs: kill pointless reassignment of -\u003es_fs_info in btrfs_fill_super()\n\nWe do not (fortunately) modify -\u003es_fs_info of superblock on the fly in\nbtrfs_fill_super(); apparent assignment is a no-op.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ad2b2c802be2d3e8ed8364fef5ffaddabe448219",
      "tree": "5927c2170cd4edb1d930cabae0c6f0006aa972fd",
      "parents": [
        "e3029d9fd426c8f582210ba35551ae5506218345"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:10:02 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:39 2012 -0500"
      },
      "message": "btrfs: make open_ctree() return int\n\nIt returns either ERR_PTR(-ve) or sb-\u003es_fs_info.  The latter can\nbe found by caller just as well, TYVM, no need to return it.  Just\nreturn -ve or 0...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6f07e42ee6fcc252a210781d7262f4051e9fd8f6",
      "tree": "70686d28678c69586570032c47ecdc4636c7a4f3",
      "parents": [
        "38a77db49ad8f78369dcdfb693b8e5a818a60104"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 00:46:16 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:34:38 2012 -0500"
      },
      "message": "btrfs: sanitizing -\u003efs_info, part 4\n\nA new helper: btrfs_alloc_root(fs_info); allocates btrfs_root\nand sets -\u003efs_info.  All places allocating the suckers converted\nto it.  At that point we *never* reassign -\u003efs_info of btrfs_root;\nit\u0027s set before anyone sees the address of newly allocated\nstruct btrfs_root and never assigned anywhere else.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6de1d09d9677dce7a04ef485d426821159ab7de9",
      "tree": "e906ecf66e13f5827df4a4c34adb327a45a73542",
      "parents": [
        "aea52e19dd2085617dd7d247afb76a90cf2ea40c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:29:09 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:33:23 2012 -0500"
      },
      "message": "btrfs: fix mount/umount race\n\nDo *NOT* skip doomed superblocks in btrfs_test_super(); we want\nsget() to wait for their shutdown to complete.  Since we don\u0027t\nmutilate -\u003es_fs_info in -\u003eput_super() anymore (or free what it\nused to point to until the superblock is past being findable\nby sget()), we can just DTRT there and report a match.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aea52e19dd2085617dd7d247afb76a90cf2ea40c",
      "tree": "d1416b60797f2a5f0c0f67062bcaaee6b227683a",
      "parents": [
        "98c7089c769048f941bd5c5285287f8fc301f8b1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:22:46 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:33:23 2012 -0500"
      },
      "message": "btrfs: get -\u003ekill_sb() of its own\n\n... and move free_fs_info() to that, out of -\u003eput_super().  Do NOT\nset -\u003es_fs_info to NULL in the latter; we need it for sget() to\nbe able to see and wait for fs in the middle of umount if we get a\nmount/umount race.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98c7089c769048f941bd5c5285287f8fc301f8b1",
      "tree": "3e31f46b43fb1b533dc720db7a9d84da3b148433",
      "parents": [
        "48fa57ac2c30a8a0b770b7ad50b4b30c1d12f005"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 01:00:31 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:33:22 2012 -0500"
      },
      "message": "btrfs: preparation to fixing mount/umount race\n\nWe need fs_info and root to live until the moment when the victim\nsuperblock leaves the list, so we need to postpone free_fs_info()\nuntil after -\u003eput_super().  The call is buried in close_ctree(),\nthough, so we need to lift it into the callers (including\nbtrfs_put_super()) first.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "34c80b1d93e6e20ca9dea0baf583a5b5510d92d4",
      "tree": "7dcbf0a4e09464247e6992c8f44fcc872867bd3a",
      "parents": [
        "a6322de67b58a00e3a783ad9c87c2a11b2d67b47"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 08 21:32:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:19:54 2012 -0500"
      },
      "message": "vfs: switch -\u003eshow_options() to struct dentry *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e407699ef56ed948739dd57a5578ba8cb5bd81b2",
      "tree": "830069801b88d2b7957c6bb0baf012e9637ec4fd",
      "parents": [
        "c5dc332eb93881fc8234d652f6e91a2825b06503"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 24 20:14:54 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:38 2012 -0500"
      },
      "message": "btrfs, nfs, apparmor: don\u0027t pull mnt_namespace.h for no reason...\n\nit\u0027s not needed anymore; we used to, back when we had to do\nmount_subtree() by hand, complete with put_mnt_ns() in it.\nNo more...  Apparmor didn\u0027t need it since the __d_path() fix.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "21adbd5cbb5344a3fca6bb7ddb2ab6cb03c44546",
      "tree": "208c3ab6ad8bb35937b21c4d54e45e46d99557ff",
      "parents": [
        "f11e4d7f533249ddfa110116200c5c3a509f9218"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed Nov 09 13:44:05 2011 +0100"
      },
      "committer": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed Dec 21 19:14:17 2011 +0100"
      },
      "message": "Btrfs: integrate integrity check module into btrfs\n\nThis is the last part of the patch series. It modifies the btrfs\ncode to use the integrity check module if configured to do so\nwith the define BTRFS_FS_CHECK_INTEGRITY. If this define is not set,\nthe only effective change is that code is added that handles the\nmount option to activate the integrity check. If the mount option is\nset and the define BTRFS_FS_CHECK_INTEGRITY is not set, that code\ncomplains in the log and the mount fails with EINVAL.\n\nAdd the mount option to activate the usage of the integrity check\ncode.\nAdd invocation of btrfs integrity check code init and cleanup\nfunction on mount and umount, respectively.\nAdd hook to call btrfs integrity check code version of\nsubmit_bh/submit_bio.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "c9a7fe9672612c0b595633d2945f52257ad92b20",
      "tree": "df251545a12fdbb895c07ec9dccde10163624b7f",
      "parents": [
        "2cfab8d74ebfbe06ce2947117945c4f45a5915ec",
        "d85c8a6f1bc083279215ff6e79b7c292bf3ec905",
        "142349f541d0bb6bc3e0d4563268105aada42b0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "message": "Merge branches \u0027for-linus\u0027 and \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: unplug every once and a while\n  Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code\n  Btrfs: only set cache_generation if we setup the block group\n  Btrfs: don\u0027t panic if orphan item already exists\n  Btrfs: fix leaked space in truncate\n  Btrfs: fix how we do delalloc reservations and how we free reservations on error\n  Btrfs: deal with enospc from dirtying inodes properly\n  Btrfs: fix num_workers_starting bug and other bugs in async thread\n  BTRFS: Establish i_ops before calling d_instantiate\n  Btrfs: add a cond_resched() into the worker loop\n  Btrfs: fix ctime update of on-disk inode\n  btrfs: keep orphans for subvolume deletion\n  Btrfs: fix inaccurate available space on raid0 profile\n  Btrfs: fix wrong disk space information of the files\n  Btrfs: fix wrong i_size when truncating a file to a larger size\n  Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror\n\n* \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: lower the dirty balance poll interval\n"
    },
    {
      "commit": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "f9d9ef62cd3ecbd6cbb7957a253c1e81f69d5586",
      "tree": "34e9cf9c3c5f2332e2e59500de8c5c1ff4065c7b",
      "parents": [
        "20bcd64934e4eb8f3f90a0dca54fb0ac2edd7795"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Sep 29 13:11:33 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:43:25 2011 +0200"
      },
      "message": "btrfs: do not allow mounting non-subvolumes via subvol option\n\nThere\u0027s a missing test whether the path passed to subvol\u003dpath option\nduring mount is a real subvolume, allowing any directory located in\ndefault subovlume to be passed and accepted for mount.\n\n(current btrfs progs prevent this early)\n$ btrfs subvol snapshot . p1-snap\nERROR: \u0027.\u0027 is not a subvolume\n\n(with \"is subvolume?\" test bypassed)\n$ btrfs subvol snapshot . p1-snap\nCreate a snapshot of \u0027.\u0027 in \u0027./p1-snap\u0027\n\n$ btrfs subvol list -p .\nID 258 parent 5 top level 5 path subvol\nID 259 parent 5 top level 5 path subvol1\nID 260 parent 5 top level 5 path default-subvol1\nID 262 parent 5 top level 5 path p1/p1-snapshot\nID 263 parent 259 top level 5 path subvol1/subvol1-snap\n\nThe problem I see is that this makes a false impression of snapshotting the\ngiven subvolume but in fact snapshots the default one: a user expects outcome\nlike ID 263 but in fact gets ID 262 .\n\nThis patch makes mount fail with EINVAL with a message in syslog.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "5f524444c351e145a5f7e28253594688a421bfe8",
      "tree": "1a29d2ffe81648da1328a33c3669a2a7eeedba39",
      "parents": [
        "068132bad1de70f85f5f6d12c36d64f8f7848d92"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Thu Oct 13 00:20:43 2011 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:20:36 2011 +0200"
      },
      "message": "Btrfs: fix a bug when opening seed devices\n\nInitialize fs_info-\u003ebdev_holder a bit earlier to be able to pass a\ncorrect holder id to blkdev_get() when opening seed devices with O_EXCL.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "83c8c9bde0add721f7509aa446455183b040b931",
      "tree": "0789b6246eb84e580d7c6eefe2f761314d18870a",
      "parents": [
        "5ca496604b5975d371bb669ee6c2394bcbea818f"
      ],
      "author": {
        "name": "Jeff Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Wed Sep 14 14:11:21 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:38 2011 +0200"
      },
      "message": "btrfs: trivial fix, a potential memory leak in btrfs_parse_early_options()\n\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\n"
    },
    {
      "commit": "73bc187680f94bed498f8a669103cad290e41180",
      "tree": "e4e8c9a6baa656dbeb470032956657b294610c61",
      "parents": [
        "e27425d614d68daa08f60735982a7c3a0230e855"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Oct 03 14:07:49 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:51 2011 -0400"
      },
      "message": "Btrfs: introduce mount option no_space_cache\n\nSome users have requested this and I\u0027ve found I needed a way to disable cache\nloading without actually clearing the cache, so introduce the no_space_cache\noption.  Before we check the super blocks cache generation field and if it was\npopulated we always turned space caching on.  Now we check this and set the\nspace cache option on, and then parse the mount options so that if we want it\noff it get\u0027s turned off.  Then we check the mount option all the places we do\nthe caching work instead of checking the super\u0027s cache generation.  This makes\nthings more consistent and lets us turn space caching off.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "830c4adbd04a79f806d4fa579546f36a71b727c1",
      "tree": "3701532975661460217d8e25e6f67e846a83b62c",
      "parents": [
        "ba5b8958dabbd7890a6929af1ffc0d87187765dc"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 25 15:55:42 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:29 2011 -0400"
      },
      "message": "Btrfs: fix how we mount subvol\u003d\u003cwhatever\u003e\n\nWe\u0027ve only been able to mount with subvol\u003d\u003cwhatever\u003e where whatever was a subvol\nwithin whatever root we had as the default.  This allows us to mount -o\nsubvol\u003dpath/to/subvol/you/want relative from the normal fs_tree root.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "ba5b8958dabbd7890a6929af1ffc0d87187765dc",
      "tree": "5d4776506d38b5ac463147cae754ba0d6b6394c0",
      "parents": [
        "0cbbdf7c9c46467bfb7129c30236f36a679ab244"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 25 15:40:35 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:29 2011 -0400"
      },
      "message": "Btrfs: use d_obtain_alias when mounting subvol/subvolid\n\nCurrently what we do is just wrong.  We either\n\n1) Alloc a new \"root\" dentry with sb-\u003es_root as it\u0027s parent which is just wrong\nas we could walk into this subvol later on via another path and hilarity could\nensue.  Also we don\u0027t check the return value of d_splice_alias which isn\u0027t good\neither.\n\nor\n\n2) Do a d_find_alias() which we could have lost our dentry from cache at this\npoint and found nothing.\n\nSo use d_obtain_alias().  In the case that we already have the inode/dentry in\ncache we will get the correct dentry.  If not we will get a disconnected dentry\ntree so if we walk into it later on everything will be connected up properly.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "1acc9309eb2674533944f48dbaaa53e7750e3947",
      "tree": "255f346c01a33906b612852d5fb008da1f4520da",
      "parents": [
        "c2d197e82b6267fd3338f3fbcb12750ca9f5abda",
        "149e2d76b4886c4c7ff5e077646a8ba3563c8026"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 23:25:45 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 08 23:25:45 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  btrfs: fix oops when doing space balance\n  Btrfs: don\u0027t panic if we get an error while balancing V2\n  btrfs: add missing options displayed in mount output\n"
    },
    {
      "commit": "0942caa373c676dca614ea8352ac77e0270aba73",
      "tree": "0a6a1bdceeb030566fcba6a6bfa322eb79f2d8d9",
      "parents": [
        "2f7e33d432d097a2a7f467b031bf18be91cb3d49"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Jun 28 15:10:37 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 06 18:46:43 2011 -0400"
      },
      "message": "btrfs: add missing options displayed in mount output\n\nThere are three missed mount options settable by user which are not\ncurrently displayed in mount output.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8397345172aa5cdcbc133977af9d525f45b874ea",
      "tree": "9b1077a62bbe06d20f1e49d1aa842db0435be085",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603",
        "e6bc45d65df8599fdbae73be9cec4ceed274db53"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:36:59 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 07 18:36:59 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  vfs: make unlink() and rmdir() return ENOENT in preference to EROFS\n  lmLogOpen() broken failure exit\n  usb: remove bad dput after dentry_unhash\n  more conservative S_NOSEC handling\n"
    },
    {
      "commit": "e6ece70732b905742ad91a7b5489e0ca1362c0cd",
      "tree": "1ded331dec1886cf5b30bd6c6181787b8f237008",
      "parents": [
        "23c79d31a3dd2602ee1a5ff31303b2d7a2d3c159",
        "aa0467d8d2a00e75b2bb6a56a4ee6d70c5d1928f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 05 06:17:23 2011 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jun 05 06:17:23 2011 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (25 commits)\n  btrfs: fix uninitialized variable warning\n  btrfs: add helper for fs_info-\u003eclosing\n  Btrfs: add mount -o inode_cache\n  btrfs: scrub: add explicit plugging\n  btrfs: use btrfs_ino to access inode number\n  Btrfs: don\u0027t save the inode cache if we are deleting this root\n  btrfs: false BUG_ON when degraded\n  Btrfs: don\u0027t save the inode cache in non-FS roots\n  Btrfs: make sure we don\u0027t overflow the free space cache crc page\n  Btrfs: fix uninit variable in the delayed inode code\n  btrfs: scrub: don\u0027t reuse bios and pages\n  Btrfs: leave spinning on lookup and map the leaf\n  Btrfs: check for duplicate entries in the free space cache\n  Btrfs: don\u0027t try to allocate from a block group that doesn\u0027t have enough space\n  Btrfs: don\u0027t always do readahead\n  Btrfs: try not to sleep as much when doing slow caching\n  Btrfs: kill BTRFS_I(inode)-\u003eblock_group\n  Btrfs: don\u0027t look at the extent buffer level 3 times in a row\n  Btrfs: map the node block when looking for readahead targets\n  Btrfs: set range_start to the right start in count_range_bits\n  ...\n"
    },
    {
      "commit": "4b9465cb9e3859186eefa1ca3b990a5849386320",
      "tree": "8fc06452fb75e52f6c1c2e2253c2ff6700e622fd",
      "parents": [
        "e7786c3ae517b2c433edc91714e86be770e9f1ce"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 03 09:36:29 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:47 2011 -0400"
      },
      "message": "Btrfs: add mount -o inode_cache\n\nThis makes the inode map cache default to off until we\nfix the overflow problem when the free space crcs don\u0027t fit\ninside a single page.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9e1f1de02c2275d7172e18dc4e7c2065777611bf",
      "tree": "15e9d202e64275cdbff6ed1d54804da5966d7d8d",
      "parents": [
        "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "message": "more conservative S_NOSEC handling\n\nCaching \"we have already removed suid/caps\" was overenthusiastic as merged.\nOn network filesystems we might have had suid/caps set on another client,\nsilently picked by this client on revalidate, all of that *without* clearing\nthe S_NOSEC flag.\n\nAFAICS, the only reasonably sane way to deal with that is\n\t* new superblock flag; unless set, S_NOSEC is not going to be set.\n\t* local block filesystems set it in their -\u003emount() (more accurately,\nmount_bdev() does, so does btrfs -\u003emount(), users of mount_bdev() other than\nlocal block ones clear it)\n\t* if any network filesystem (or a cluster one) wants to use S_NOSEC,\nit\u0027ll need to set MS_NOSEC in sb-\u003es_flags *AND* take care to clear S_NOSEC when\ninode attribute changes are picked from other clients.\n\nIt\u0027s not an earth-shattering hole (anybody that can set suid on another client\nwill almost certainly be able to write to the file before doing that anyway),\nbut it\u0027s a bug that needs fixing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a0c3061093c8b49facef95dc09a618c6e0d17cb5",
      "tree": "1d6ff7c06134b71a8bd0721395386e82e46e60c8",
      "parents": [
        "10799db60cbc4f990dd69eb49883477095c66af7",
        "174ba50915b08dcfd07c8b5fb795b46a165fa09a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 13:57:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 13:57:12 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (58 commits)\n  Btrfs: use the device_list_mutex during write_dev_supers\n  Btrfs: setup free ino caching in a more asynchronous way\n  btrfs scrub: don\u0027t coalesce pages that are logically discontiguous\n  Btrfs: return -ENOMEM in clear_extent_bit\n  Btrfs: add mount -o auto_defrag\n  Btrfs: using rcu lock in the reader side of devices list\n  Btrfs: drop unnecessary device lock\n  Btrfs: fix the race between remove dev and alloc chunk\n  Btrfs: fix the race between reading and updating devices\n  Btrfs: fix bh leak on __btrfs_open_devices path\n  Btrfs: fix unsafe usage of merge_state\n  Btrfs: allocate extent state and check the result properly\n  fs/btrfs: Add missing btrfs_free_path\n  Btrfs: check return value of btrfs_inc_extent_ref()\n  Btrfs: return error to caller if read_one_inode() fails\n  Btrfs: BUG_ON is deleted from the caller of btrfs_truncate_item \u0026 btrfs_extend_item\n  Btrfs: return error code to caller when btrfs_del_item fails\n  Btrfs: return error code to caller when btrfs_previous_item fails\n  btrfs: fix typo \u0027testeing\u0027 -\u003e \u0027testing\u0027\n  btrfs: typo: \u0027btrfS\u0027 -\u003e \u0027btrfs\u0027\n  ...\n"
    },
    {
      "commit": "4cb5300bc839b8a943eb19c9f27f25470e22d0ca",
      "tree": "ac0f2fb481c7aa6af08a624d276fa6d580c94c9b",
      "parents": [
        "d6c0cb379c5198487e4ac124728cbb2346d63b1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 24 15:35:30 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:15 2011 -0400"
      },
      "message": "Btrfs: add mount -o auto_defrag\n\nThis will detect small random writes into files and\nqueue the up for an auto defrag process.  It isn\u0027t well suited to\ndatabase workloads yet, but works for smaller files such as rpm, sqlite\nor bdb databases.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "90a887c9a2e25bcb1fc658fad59dfbc6fb792734",
      "tree": "4f6ac7e5a92d503a573b5fcf1893623818f6794d",
      "parents": [
        "d71bc6db5e48066bde78a480bb9e3057b3db1a3c"
      ],
      "author": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:56 2011 -0600"
      },
      "committer": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:56 2011 -0600"
      },
      "message": "btrfs: add cleancache support\n\nThis sixth patch of eight in this cleancache series \"opts-in\"\ncleancache for btrfs.  Filesystems must explicitly enable\ncleancache by calling cleancache_init_fs anytime an instance\nof the filesystem is mounted.  Btrfs uses its own readpage\nwhich must be hooked, but all other cleancache hooks are in\nthe VFS layer including the matching cleancache_flush_fs hook\nwhich must be called on unmount.\n\nDetails and a FAQ can be found in Documentation/vm/cleancache.txt\n\n[v6-v8: no changes]\n[v5: jeremy@goop.org: simplify init hook and any future fs init changes]\nSigned-off-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReviewed-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik Van Riel \u003criel@redhat.com\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\n"
    },
    {
      "commit": "d6c0cb379c5198487e4ac124728cbb2346d63b1f",
      "tree": "167a97ac58c7a2fbf7c4e94b6abbfe1e03af014a",
      "parents": [
        "8e531cdfeb75269c6c5aae33651cca39707848da",
        "1f78160ce1b1b8e657e2248118c4d91f881763f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups_and_fixes\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/tree-log.c\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b083916638eee513be501f53b42a4be0b9851db0",
      "tree": "b62c38c87d368ca1e5cc5be067094ba82e6bf8a0",
      "parents": [
        "37daa4f968e9470ae9f30e246a5781717c598271"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sat May 14 07:10:51 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:41 2011 -0400"
      },
      "message": "fs/btrfs: Add missing btrfs_free_path\n\nBtrfs_alloc_path should be matched with btrfs_free_path in error-handling code.\n\nA simplified version of the semantic match that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r exists@\nlocal idexpression struct btrfs_path * x;\nexpression ra,rb;\nposition p1,p2;\n@@\n\nx \u003d btrfs_alloc_path@p1(...)\n...  when !\u003d btrfs_free_path(x,...)\n     when !\u003d if (...) { ... btrfs_free_path(x,...) ...}\n     when !\u003d x \u003d ra\nif(...) { ... when !\u003d x \u003d rb\n     when forall\n     when !\u003d btrfs_free_path(x,...)\n \\(return \u003c+...x...+\u003e; \\| return@p2...; \\) }\n\n@script:python@\np1 \u003c\u003c r.p1;\np2 \u003c\u003c r.p2;\n@@\n\ncocci.print_main(\"alloc\",p1)\ncocci.print_secs(\"return\",p2)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
      "tree": "ff64f4d4921df2f0fbe5b356dc9b2384c7957dc1",
      "parents": [
        "945d8962ceee6bb273365d0bdf42f763225b290f",
        "73c5de0051533cbdf2bb656586c3eb21a475aa7d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:36:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:36:34 2011 -0400"
      },
      "message": "Merge branch \u0027allocator\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "945d8962ceee6bb273365d0bdf42f763225b290f",
      "tree": "43f5617022c7c947c3c63664e49eb9575ab82f2f",
      "parents": [
        "0d0ca30f180906224be6279788f2b202cfd959d8",
        "4ea028859bbdad34b84c9951fbb832ae10c6a96c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups\u0027 of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/tree-log.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "16cdcec736cd214350cdb591bf1091f8beedefa0",
      "tree": "5598d4561660c4d7a1d4de8b3703d6dd3cc7f9e7",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Apr 22 18:12:22 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:30:56 2011 -0400"
      },
      "message": "btrfs: implement delayed inode items operation\n\nChangelog V5 -\u003e V6:\n- Fix oom when the memory load is high, by storing the delayed nodes into the\n  root\u0027s radix tree, and letting btrfs inodes go.\n\nChangelog V4 -\u003e V5:\n- Fix the race on adding the delayed node to the inode, which is spotted by\n  Chris Mason.\n- Merge Chris Mason\u0027s incremental patch into this patch.\n- Fix deadlock between readdir() and memory fault, which is reported by\n  Itaru Kitayama.\n\nChangelog V3 -\u003e V4:\n- Fix nested lock, which is reported by Itaru Kitayama, by updating space cache\n  inode in time.\n\nChangelog V2 -\u003e V3:\n- Fix the race between the delayed worker and the task which does delayed items\n  balance, which is reported by Tsutomu Itoh.\n- Modify the patch address David Sterba\u0027s comment.\n- Fix the bug of the cpu recursion spinlock, reported by Chris Mason\n\nChangelog V1 -\u003e V2:\n- break up the global rb-tree, use a list to manage the delayed nodes,\n  which is created for every directory and file, and used to manage the\n  delayed directory name index items and the delayed inode item.\n- introduce a worker to deal with the delayed nodes.\n\nCompare with Ext3/4, the performance of file creation and deletion on btrfs\nis very poor. the reason is that btrfs must do a lot of b+ tree insertions,\nsuch as inode item, directory name item, directory name index and so on.\n\nIf we can do some delayed b+ tree insertion or deletion, we can improve the\nperformance, so we made this patch which implemented delayed directory name\nindex insertion/deletion and delayed inode update.\n\nImplementation:\n- introduce a delayed root object into the filesystem, that use two lists to\n  manage the delayed nodes which are created for every file/directory.\n  One is used to manage all the delayed nodes that have delayed items. And the\n  other is used to manage the delayed nodes which is waiting to be dealt with\n  by the work thread.\n- Every delayed node has two rb-tree, one is used to manage the directory name\n  index which is going to be inserted into b+ tree, and the other is used to\n  manage the directory name index which is going to be deleted from b+ tree.\n- introduce a worker to deal with the delayed operation. This worker is used\n  to deal with the works of the delayed directory name index items insertion\n  and deletion and the delayed inode update.\n  When the delayed items is beyond the lower limit, we create works for some\n  delayed nodes and insert them into the work queue of the worker, and then\n  go back.\n  When the delayed items is beyond the upper bound, we create works for all\n  the delayed nodes that haven\u0027t been dealt with, and insert them into the work\n  queue of the worker, and then wait for that the untreated items is below some\n  threshold value.\n- When we want to insert a directory name index into b+ tree, we just add the\n  information into the delayed inserting rb-tree.\n  And then we check the number of the delayed items and do delayed items\n  balance. (The balance policy is above.)\n- When we want to delete a directory name index from the b+ tree, we search it\n  in the inserting rb-tree at first. If we look it up, just drop it. If not,\n  add the key of it into the delayed deleting rb-tree.\n  Similar to the delayed inserting rb-tree, we also check the number of the\n  delayed items and do delayed items balance.\n  (The same to inserting manipulation)\n- When we want to update the metadata of some inode, we cached the data of the\n  inode into the delayed node. the worker will flush it into the b+ tree after\n  dealing with the delayed insertion and deletion.\n- We will move the delayed node to the tail of the list after we access the\n  delayed node, By this way, we can cache more delayed items and merge more\n  inode updates.\n- If we want to commit transaction, we will deal with all the delayed node.\n- the delayed node will be freed when we free the btrfs inode.\n- Before we log the inode items, we commit all the directory name index items\n  and the delayed inode update.\n\nI did a quick test by the benchmark tool[1] and found we can improve the\nperformance of file creation by ~15%, and file deletion by ~20%.\n\nBefore applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 1.096108\n        Average time: 0.000022\nDelete files:\n        Total files: 50000\n        Total time: 1.510403\n        Average time: 0.000030\n\nAfter applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 0.932899\n        Average time: 0.000019\nDelete files:\n        Total files: 50000\n        Total time: 1.215732\n        Average time: 0.000024\n\n[1] http://marc.info/?l\u003dlinux-btrfs\u0026m\u003d128212635122920\u0026q\u003dp3\n\nMany thanks for Kitayama-san\u0027s help!\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdave@jikos.cz\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nTested-by: Itaru Kitayama \u003ckitayama@cl.bb4u.ne.jp\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bcd53741cc2af4342ac3ff6983bddc4a1b63b9b4",
      "tree": "5be83348abb93689effda63918fdec4fb0b5461c",
      "parents": [
        "7cf96da3ec7ca225acf4f284b0e904a1f5f98821"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Tue Apr 12 10:43:21 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri May 13 15:36:05 2011 +0200"
      },
      "message": "btrfs: move btrfs_cmp_device_free_bytes to super.c\n\nthis function won\u0027t be used here anymore, so move it super.c where it is\nused for df-calculation\n"
    },
    {
      "commit": "306e16ce13c0f3d4fc071b45803b5b83c2606011",
      "tree": "109aa42ae17d91429d11ab332e0c16e790f95dc5",
      "parents": [
        "3fd9952df4964fac7d5868ba48eadcc9dae3ba46"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Apr 19 14:29:38 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:19 2011 +0200"
      },
      "message": "btrfs: rename variables clashing with global function names\n\nreported by gcc -Wshadow:\npage_index, page_offset, new_inode, dev_name\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "e15d0542426f063dc53b4c51bdfc11e0bbe4d298",
      "tree": "29299313a855f1533e4d55500d17c317d3b8f078",
      "parents": [
        "13f2696f1da9700d401db0ac2bc27ebc17068b22"
      ],
      "author": {
        "name": "Xin Zhong",
        "email": "xin.zhong@intel.com",
        "time": "Wed Apr 06 07:33:51 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 11 20:26:50 2011 -0400"
      },
      "message": "Btrfs: fix subvolume mount by name problem when default mount subvolume is set\n\nWe create two subvolumes (meego_root and meego_home) in\nbtrfs root directory. And set meego_root as default mount\nsubvolume. After we remount btrfs, meego_root is mounted\nto top directory by default. Then when we try to mount\nmeego_home (subvol\u003dmeego_home) to a subdirectory, it failed.\nThe problem is when default mount subvolume is set to\nmeego_root, we search meego_home in meego_root but can not find\nit. So the solution is to add a new mount option (subvolrootid)\nto specify subvol id of root and search subvol name in it. For\nour case, now we can use \"-o subvolrootid\u003d0,subvol\u003dmeego_home)\nto mount meego_home.\n\nDetail information can be found in meego bugzilla:\nhttps://bugs.meego.com/show_bug.cgi?id\u003d15055\n\nSigned-off-by: Zhong, Xin \u003cxin.zhong@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "200da64e0b039f873f0f20481e6a7d056e7cc6c9",
      "tree": "11cd911aa441efdde26260b72a642daef0fd61f0",
      "parents": [
        "c9149235a42ab93914434fff45c44b45023363f3"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Mar 31 00:44:29 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:41 2011 -0400"
      },
      "message": "Btrfs: fix /proc/mounts info.\n\nSome mount options are not displayed by /proc/mounts.\nThis patch displays the option such as compress_type by /proc/mounts.\n\nEx.\n  [before]\n    $ mount | grep sdc2\n    /dev/sdc2 on /test12 type btrfs (rw,space_cache,compress\u003dlzo)\n    $ cat /proc/mounts | grep sdc2\n    /dev/sdc2 /test12 btrfs rw,relatime,compress 0 0\n\n  [after]\n    $ mount | grep sdc2\n    /dev/sdc2 on /test12 type btrfs (rw,space_cache,compress\u003dlzo)\n    $ cat /proc/mounts | grep sdc2\n    /dev/sdc2 /test12 btrfs rw,relatime,compress\u003dlzo,space_cache 0 0\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1abe9b8a138c9988ba8f7bfded6453649a31541f",
      "tree": "9fe0c181e78b075b65f6b1802f0a5092e7afbc6a",
      "parents": [
        "240f62c8756df285da11469259b3900f32883168"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 24 11:18:59 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:33 2011 -0400"
      },
      "message": "Btrfs: add initial tracepoint support for btrfs\n\nTracepoints can provide insight into why btrfs hits bugs and be greatly\nhelpful for debugging, e.g\n              dd-7822  [000]  2121.641088: btrfs_inode_request: root \u003d 5(FS_TREE), gen \u003d 4, ino \u003d 256, blocks \u003d 8, disk_i_size \u003d 0, last_trans \u003d 8, logged_trans \u003d 0\n              dd-7822  [000]  2121.641100: btrfs_inode_new: root \u003d 5(FS_TREE), gen \u003d 8, ino \u003d 257, blocks \u003d 0, disk_i_size \u003d 0, last_trans \u003d 0, logged_trans \u003d 0\n btrfs-transacti-7804  [001]  2146.935420: btrfs_cow_block: root \u003d 2(EXTENT_TREE), refs \u003d 2, orig_buf \u003d 29368320 (orig_level \u003d 0), cow_buf \u003d 29388800 (cow_level \u003d 0)\n btrfs-transacti-7804  [001]  2146.935473: btrfs_cow_block: root \u003d 1(ROOT_TREE), refs \u003d 2, orig_buf \u003d 29364224 (orig_level \u003d 0), cow_buf \u003d 29392896 (cow_level \u003d 0)\n btrfs-transacti-7804  [001]  2146.972221: btrfs_transaction_commit: root \u003d 1(ROOT_TREE), gen \u003d 8\n   flush-btrfs-2-7821  [001]  2155.824210: btrfs_chunk_alloc: root \u003d 3(CHUNK_TREE), offset \u003d 1103101952, size \u003d 1073741824, num_stripes \u003d 1, sub_stripes \u003d 0, type \u003d DATA\n   flush-btrfs-2-7821  [001]  2155.824241: btrfs_cow_block: root \u003d 2(EXTENT_TREE), refs \u003d 2, orig_buf \u003d 29388800 (orig_level \u003d 0), cow_buf \u003d 29396992 (cow_level \u003d 0)\n   flush-btrfs-2-7821  [001]  2155.824255: btrfs_cow_block: root \u003d 4(DEV_TREE), refs \u003d 2, orig_buf \u003d 29372416 (orig_level \u003d 0), cow_buf \u003d 29401088 (cow_level \u003d 0)\n   flush-btrfs-2-7821  [000]  2155.824329: btrfs_cow_block: root \u003d 3(CHUNK_TREE), refs \u003d 2, orig_buf \u003d 20971520 (orig_level \u003d 0), cow_buf \u003d 20975616 (cow_level \u003d 0)\n btrfs-endio-wri-7800  [001]  2155.898019: btrfs_cow_block: root \u003d 5(FS_TREE), refs \u003d 2, orig_buf \u003d 29384704 (orig_level \u003d 0), cow_buf \u003d 29405184 (cow_level \u003d 0)\n btrfs-endio-wri-7800  [001]  2155.898043: btrfs_cow_block: root \u003d 7(CSUM_TREE), refs \u003d 2, orig_buf \u003d 29376512 (orig_level \u003d 0), cow_buf \u003d 29409280 (cow_level \u003d 0)\n\nHere is what I have added:\n\n1) ordere_extent:\n        btrfs_ordered_extent_add\n        btrfs_ordered_extent_remove\n        btrfs_ordered_extent_start\n        btrfs_ordered_extent_put\n\nThese provide critical information to understand how ordered_extents are\nupdated.\n\n2) extent_map:\n        btrfs_get_extent\n\nextent_map is used in both read and write cases, and it is useful for tracking\nhow btrfs specific IO is running.\n\n3) writepage:\n        __extent_writepage\n        btrfs_writepage_end_io_hook\n\nPages are cirtical resourses and produce a lot of corner cases during writeback,\nso it is valuable to know how page is written to disk.\n\n4) inode:\n        btrfs_inode_new\n        btrfs_inode_request\n        btrfs_inode_evict\n\nThese can show where and when a inode is created, when a inode is evicted.\n\n5) sync:\n        btrfs_sync_file\n        btrfs_sync_fs\n\nThese show sync arguments.\n\n6) transaction:\n        btrfs_transaction_commit\n\nIn transaction based filesystem, it will be useful to know the generation and\nwho does commit.\n\n7) back reference and cow:\n\tbtrfs_delayed_tree_ref\n\tbtrfs_delayed_data_ref\n\tbtrfs_delayed_ref_head\n\tbtrfs_cow_block\n\nBtrfs natively supports back references, these tracepoints are helpful on\nunderstanding btrfs\u0027s COW mechanism.\n\n8) chunk:\n\tbtrfs_chunk_alloc\n\tbtrfs_chunk_free\n\nChunk is a link between physical offset and logical offset, and stands for space\ninfomation in btrfs, and these are helpful on tracing space things.\n\n9) reserved_extent:\n\tbtrfs_reserved_extent_alloc\n\tbtrfs_reserved_extent_free\n\nThese can show how btrfs uses its space.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4660ba63f1c4e07c20a435e084f12ba48a82bd2b",
      "tree": "494973a1dd4102eede20298f478574801af31b86",
      "parents": [
        "958ede7f1b72b29cd0d29ec88ee2bcb4c87dab61",
        "ec29ed5b407d618a8128f5942aade9e1758aa14b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 14:03:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 14:03:39 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix fiemap bugs with delalloc\n  Btrfs: set FMODE_EXCL in btrfs_device-\u003emode\n  Btrfs: make btrfs_rm_device() fail gracefully\n  Btrfs: Avoid accessing unmapped kernel address\n  Btrfs: Fix BTRFS_IOC_SUBVOL_SETFLAGS ioctl\n  Btrfs: allow balance to explicitly allocate chunks as it relocates\n  Btrfs: put ENOSPC debugging under a mount option\n"
    },
    {
      "commit": "91435650c233b93e0da389db74f4b2c11c5ad2d4",
      "tree": "c4f8fef1348a0ac188dca47020d86b206ed5d41f",
      "parents": [
        "c26a920373a983b52223eed5a13b97404d8b4158"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 13:10:41 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:28:36 2011 -0500"
      },
      "message": "Btrfs: put ENOSPC debugging under a mount option\n\nENOSPC in btrfs is getting to the point where the extra debugging isn\u0027t\nrequired.  I\u0027ve put it under mount -o enospc_debug just in case someone\nis having difficult problems.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cb5520f02c010e3cb974b9ac06f30aafa2eebc38",
      "tree": "8342407cebb6420f04f46694b8d812552a14cb49",
      "parents": [
        "eee4da2cef8e2dc2b15066e9ebb5b2ff63396eb3",
        "3a90983dbdcb2f4f48c0d771d8e5b4d88f27fae6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 07 14:06:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 07 14:06:18 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (33 commits)\n  Btrfs: Fix page count calculation\n  btrfs: Drop __exit attribute on btrfs_exit_compress\n  btrfs: cleanup error handling in btrfs_unlink_inode()\n  Btrfs: exclude super blocks when we read in block groups\n  Btrfs: make sure search_bitmap finds something in remove_from_bitmap\n  btrfs: fix return value check of btrfs_start_transaction()\n  btrfs: checking NULL or not in some functions\n  Btrfs: avoid uninit variable warnings in ordered-data.c\n  Btrfs: catch errors from btrfs_sync_log\n  Btrfs: make shrink_delalloc a little friendlier\n  Btrfs: handle no memory properly in prepare_pages\n  Btrfs: do error checking in btrfs_del_csums\n  Btrfs: use the global block reserve if we cannot reserve space\n  Btrfs: do not release more reserved bytes to the global_block_rsv than we need\n  Btrfs: fix check_path_shared so it returns the right value\n  btrfs: check return value of btrfs_start_ioctl_transaction() properly\n  btrfs: fix return value check of btrfs_join_transaction()\n  fs/btrfs/inode.c: Add missing IS_ERR test\n  btrfs: fix missing break in switch phrase\n  btrfs: fix several uncheck memory allocations\n  ...\n"
    },
    {
      "commit": "98d5dc13e7e74b77ca3b4c3cbded9f48d2dbbbb7",
      "tree": "8e75f67b28b5b0d909483a06bb5258e0ba0c9789",
      "parents": [
        "5df67083488ccbad925f583b698ab38f8629a016"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Jan 20 06:19:37 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Feb 01 07:17:27 2011 -0500"
      },
      "message": "btrfs: fix return value check of btrfs_start_transaction()\n\nThe error check of btrfs_start_transaction() is added, and the mistake\nof the error check on several places is corrected.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eab49bec41136460b12ac0fbeceeb88386d538c7",
      "tree": "d2ad3e163407d7779d53fdaa0dedcc3b934106de",
      "parents": [
        "acce952b0263825da32cf10489413dec78053347",
        "4d728ec7aefdca5419d2ebfb28c147e81a4b59f4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:24:59 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:24:59 2011 -0500"
      },
      "message": "Merge branch \u0027bug-fixes\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "3f3d0bc0df041236fad4ffa82188a6e4ef9af75e",
      "tree": "b27b210a3c48e08e63d1ee69c9b4b7e86709e360",
      "parents": [
        "bdc924bb4cdac92b945945c3149ab8191c92d75d"
      ],
      "author": {
        "name": "Tero Roponen",
        "email": "tero.roponen@gmail.com",
        "time": "Mon Dec 27 16:43:13 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:05:11 2011 +0800"
      },
      "message": "Btrfs: Free correct pointer after using strsep\n\nWe must save and free the original kstrdup()\u0027ed pointer\nbecause strsep() modifies its first argument.\n\nSigned-off-by: Tero Roponen \u003ctero.roponen@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "bdc924bb4cdac92b945945c3149ab8191c92d75d",
      "tree": "906e0ae44bff82d3bdc03efbf5e42144b5e941ac",
      "parents": [
        "83a4d54840c88a4a45c49670f044b8c7ddeaa8c7"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon Dec 27 16:33:15 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:05:07 2011 +0800"
      },
      "message": "Btrfs: Fix memory leak on finding existing super\n\nWe missed a memory deallocation in commit 450ba0ea.\n\nIf an existing super block is found at mount and there is no\nerror condition then the pre-allocated tree_root and fs_info\nare no not used and are not freeded.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "eee2a817df7c5a6e569f353f8be78cc1b3604bb6",
      "tree": "f721beb4712c732702d3383d3c6a52da8b5bbb20",
      "parents": [
        "83896fb5e51594281720d145164f866ba769abd5",
        "acce952b0263825da32cf10489413dec78053347"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:43:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:43:43 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (25 commits)\n  Btrfs: forced readonly mounts on errors\n  btrfs: Require CAP_SYS_ADMIN for filesystem rebalance\n  Btrfs: don\u0027t warn if we get ENOSPC in btrfs_block_rsv_check\n  btrfs: Fix memory leak in btrfs_read_fs_root_no_radix()\n  btrfs: check NULL or not\n  btrfs: Don\u0027t pass NULL ptr to func that may deref it.\n  btrfs: mount failure return value fix\n  btrfs: Mem leak in btrfs_get_acl()\n  btrfs: fix wrong free space information of btrfs\n  btrfs: make the chunk allocator utilize the devices better\n  btrfs: restructure find_free_dev_extent()\n  btrfs: fix wrong calculation of stripe size\n  btrfs: try to reclaim some space when chunk allocation fails\n  btrfs: fix wrong data space statistics\n  fs/btrfs: Fix build of ctree\n  Btrfs: fix off by one while setting block groups readonly\n  Btrfs: Add BTRFS_IOC_SUBVOL_GETFLAGS/SETFLAGS ioctls\n  Btrfs: Add readonly snapshots support\n  Btrfs: Refactor btrfs_ioctl_snap_create()\n  btrfs: Extract duplicate decompress code\n  ...\n"
    },
    {
      "commit": "acce952b0263825da32cf10489413dec78053347",
      "tree": "d934881f247484d7b6917bebc40828600bb6b76c",
      "parents": [
        "6f88a4403def422bd8e276ddf6863d6ac71435d2"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Jan 06 19:30:25 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 17 15:13:08 2011 -0500"
      },
      "message": "Btrfs: forced readonly mounts on errors\n\nThis patch comes from \"Forced readonly mounts on errors\" ideas.\n\nAs we know, this is the first step in being more fault tolerant of disk\ncorruptions instead of just using BUG() statements.\n\nThe major content:\n- add a framework for generating errors that should result in filesystems\n  going readonly.\n- keep FS state in disk super block.\n- make sure that all of resource will be freed and released at umount time.\n- make sure that fter FS is forced readonly on error, there will be no more\n  disk change before FS is corrected. For this, we should stop write operation.\n\nAfter this patch is applied, the conversion from BUG() to such a framework can\nhappen incrementally.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6d07bcec969af335d4e35b3921131b7929bd634e",
      "tree": "2d1e0bb5f69bdf9dafa2862b6cad965184d67c84",
      "parents": [
        "b2117a39fa96cf4814e7cab8c11494149ba6f29d"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:31 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong free space information of btrfs\n\nWhen we store data by raid profile in btrfs with two or more different size\ndisks, df command shows there is some free space in the filesystem, but the\nuser can not write any data in fact, df command shows the wrong free space\ninformation of btrfs.\n\n # mkfs.btrfs -d raid1 /dev/sda9 /dev/sda10\n # btrfs-show\n Label: none  uuid: a95cd49e-6e33-45b8-8741-a36153ce4b64\n \tTotal devices 2 FS bytes used 28.00KB\n \tdevid    1 size 5.01GB used 2.03GB path /dev/sda9\n \tdevid    2 size 10.00GB used 2.01GB path /dev/sda10\n # btrfs device scan /dev/sda9 /dev/sda10\n # mount /dev/sda9 /mnt\n # dd if\u003d/dev/zero of\u003dtmpfile0 bs\u003d4K count\u003d9999999999\n   (fill the filesystem)\n # sync\n # df -TH\n Filesystem\tType\tSize\tUsed\tAvail\tUse%\tMounted on\n /dev/sda9\tbtrfs\t17G\t8.6G\t5.4G\t62%\t/mnt\n # btrfs-show\n Label: none  uuid: a95cd49e-6e33-45b8-8741-a36153ce4b64\n \tTotal devices 2 FS bytes used 3.99GB\n \tdevid    1 size 5.01GB used 5.01GB path /dev/sda9\n \tdevid    2 size 10.00GB used 4.99GB path /dev/sda10\n\nIt is because btrfs cannot allocate chunks when one of the pairing disks has\nno space, the free space on the other disks can not be used for ever, and should\nbe subtracted from the total space, but btrfs doesn\u0027t subtract this space from\nthe total. It is strange to the user.\n\nThis patch fixes it by calcing the free space that can be used to allocate\nchunks.\n\nImplementation:\n1. get all the devices free space, and align them by stripe length.\n2. sort the devices by the free space.\n3. check the free space of the devices,\n   3.1. if it is not zero, and then check the number of the devices that has\n        more free space than this device,\n        if the number of the devices is beyond the min stripe number, the free\n        space can be used, and add into total free space.\n        if the number of the devices is below the min stripe number, we can not\n        use the free space, the check ends.\n   3.2. if the free space is zero, check the next devices, goto 3.1\n\nThis implementation is just likely fake chunk allocation.\n\nAfter appling this patch, df can show correct space information:\n # df -TH\n Filesystem\tType\tSize\tUsed\tAvail\tUse%\tMounted on\n /dev/sda9\tbtrfs\t17G\t8.6G\t0\t100%\t/mnt\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "299a08b1c34f9397797946a0fa215c5fd145c5cf",
      "tree": "beace30f71e49e4ac6428b33916288695c06539f",
      "parents": [
        "f580eb0931fbcb6dc3916f094f471671facd1daa"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:15 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong data space statistics\n\nJosef has implemented mixed data/metadata chunks, we must add those chunks\u0027\nspace just like data chunks.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "af53d29ac13a97304d44343dc3b26154ca595268",
      "tree": "6ed2ca27a8d9d1d04b3df839273f36c896cf370e",
      "parents": [
        "ba87167c06ed0049260d9ca36405c0f8af609e07"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 20 10:56:06 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:47 2011 -0500"
      },
      "message": "switch btrfs, close races\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a6fa6fae40ec336c7df6155255ae64ebef43a8bc",
      "tree": "6cda8aa6a60967206614a941f034249e3017913e",
      "parents": [
        "261507a02ccba9afda919852263b6bc1581ce1ef"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:12:26 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:47 2010 +0800"
      },
      "message": "btrfs: Add lzo compression support\n\nLzo is a much faster compression algorithm than gzib, so would allow\nmore users to enable transparent compression, and some users can\nchoose from compression ratio and speed for different applications\n\nUsage:\n\n # mount -t btrfs -o compress[\u003d\u003czlib,lzo\u003e] dev /mnt\nor\n # mount -t btrfs -o compress-force[\u003d\u003czlib,lzo\u003e] dev /mnt\n\n\"-o compress\" without argument is still allowed for compatability.\n\nCompatibility:\n\nIf we mount a filesystem with lzo compression, it will not be able be\nmounted in old kernels. One reason is, otherwise btrfs will directly\ndump compressed data, which sits in inline extent, to user.\n\nPerformance:\n\nThe test copied a linux source tarball (~400M) from an ext4 partition\nto the btrfs partition, and then extracted it.\n\n(time in second)\n           lzo        zlib        nocompress\ncopy:      10.6       21.7        14.9\nextract:   70.1       94.4        66.6\n\n(data size in MB)\n           lzo        zlib        nocompress\ncopy:      185.87     108.69      394.49\nextract:   193.80     132.36      381.21\n\nChangelog:\n\nv1 -\u003e v2:\n- Select LZO_COMPRESS and LZO_DECOMPRESS in btrfs Kconfig.\n- Add incompability flag.\n- Fix error handling in compress code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "261507a02ccba9afda919852263b6bc1581ce1ef",
      "tree": "c16bc657ff4e29a87042ceb379487f24dff01035",
      "parents": [
        "4b72029dc3fd6ba7dc45ccd1cf0aa0ebfa209bd3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 17 14:21:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:45 2010 +0800"
      },
      "message": "btrfs: Allow to add new compression algorithm\n\nMake the code aware of compression type, instead of always assuming\nzlib compression.\n\nAlso make the zlib workspace function as common code for all\ncompression types.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "e13cf63f2bbd38721af557f0205da994ea068427",
      "tree": "26d0d779fadd58814eea18ab2b16370a8565c837",
      "parents": [
        "073f21ae1319348f4f8630003b7901e3be254327",
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: prevent RAID level downgrades when space is low\n  Btrfs: account for missing devices in RAID allocation profiles\n  Btrfs: EIO when we fail to read tree roots\n  Btrfs: fix compiler warnings\n  Btrfs: Make async snapshot ioctl more generic\n  Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n  Btrfs: Fix a crash when mounting a subvolume\n  Btrfs: fix sync subvol/snapshot creation\n  Btrfs: Fix page leak in compressed writeback path\n  Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n  Btrfs: fixup return code for btrfs_del_orphan_item\n  Btrfs: do not do fast caching if we are allocating blocks for tree_root\n  Btrfs: deal with space cache errors better\n  Btrfs: fix use after free in O_DIRECT\n"
    },
    {
      "commit": "f106e82caaa0d943e47cacc184f5b40d538e0044",
      "tree": "5e8b6c5e0b0b35c65ed509029cda85bd54a8aab8",
      "parents": [
        "75eaa0e22c055e38982df267d0f84cc510ba38bf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Dec 07 01:51:26 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: Fix a crash when mounting a subvolume\n\nWe should drop dentry before deactivating the superblock, otherwise\nwe can hit this bug:\n\nBUG: Dentry f349a690{i\u003d100,n\u003d/} still in use (1) [unmount of btrfs loop1]\n...\n\nSteps to reproduce the bug:\n\n  # mount /dev/loop1 /mnt\n  # mkdir save\n  # btrfs subvolume snapshot /mnt save/snap1\n  # umount /mnt\n  # mount -o subvol\u003dsave/snap1 /dev/loop1 /mnt\n  (crash)\n\nReported-by: Michael Niederle \u003cmniederle@gmx.at\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "aa3fc52546b847f590d86a093afd863ff9081628",
      "tree": "9d8b35a700287ae19fb3baa0e9f2c93462795d11",
      "parents": [
        "555bdaefd52c386e79f98591810ceb8bab780398",
        "5a92bc88cef279261d3f138e25850c122df67045"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:11:08 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:11:08 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (24 commits)\n  Btrfs: don\u0027t use migrate page without CONFIG_MIGRATION\n  Btrfs: deal with DIO bios that span more than one ordered extent\n  Btrfs: setup blank root and fs_info for mount time\n  Btrfs: fix fiemap\n  Btrfs - fix race between btrfs_get_sb() and umount\n  Btrfs: update inode ctime when using links\n  Btrfs: make sure new inode size is ok in fallocate\n  Btrfs: fix typo in fallocate to make it honor actual size\n  Btrfs: avoid NULL pointer deref in try_release_extent_buffer\n  Btrfs: make btrfs_add_nondir take parent inode as an argument\n  Btrfs: hold i_mutex when calling btrfs_log_dentry_safe\n  Btrfs: use dget_parent where we can UPDATED\n  Btrfs: fix more ESTALE problems with NFS\n  Btrfs: handle NFS lookups properly\n  btrfs: make 1-bit signed fileds unsigned\n  btrfs: Show device attr correctly for symlinks\n  btrfs: Set file size correctly in file clone\n  btrfs: Check if dest_offset is block-size aligned before cloning file\n  Btrfs: handle the space_cache option properly\n  btrfs: Fix early enospc because \u0027unused\u0027 calculated with wrong sign.\n  ...\n"
    },
    {
      "commit": "450ba0ea06b6ed3612d27f2b7127a9de4160f285",
      "tree": "2276ddbcb65d7656416cdce69432a5858b35c413",
      "parents": [
        "975f84fee2e8a77ee5f41bfe7c5682bf29366b10"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 14:59:15 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:51 2010 -0500"
      },
      "message": "Btrfs: setup blank root and fs_info for mount time\n\nThere is a problem with how we use sget, it searches through the list of supers\nattached to the fs_type looking for a super with the same fs_devices as what\nwe\u0027re trying to mount.  This depends on sb-\u003es_fs_info being filled, but we don\u0027t\nfill that in until we get to btrfs_fill_super, so we could hit supers on the\nfs_type super list that have a null s_fs_info.  In order to fix that we need to\ngo ahead and setup a blank root with a blank fs_info to hold fs_devices, that\nway our test will work out right and then we can set s_fs_info in\nbtrfs_set_super, and then open_ctree will simply use our pre-allocated root and\nfs_info when setting everything up.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "619c8c763928841b1112e1d417f88bc1d44daecb",
      "tree": "23fc73cf043faac2cdb15a0b22e6e9e29a69797a",
      "parents": [
        "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon Nov 22 02:21:38 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:44 2010 -0500"
      },
      "message": "Btrfs - fix race between btrfs_get_sb() and umount\n\nWhen mounting a btrfs file system btrfs_test_super() may attempt to\nuse sb-\u003es_fs_info, the btrfs root, of a super block that is going away\nand that has had the btrfs root set to NULL in its -\u003eput_super(). But\nif the super block is going away it cannot be an existing super block\nso we can return false in this case.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0de90876c6cb774d4a424dafc1fc9ec50071b81b",
      "tree": "a3edae0a3873c959a94f45ee035de83bb85c379c",
      "parents": [
        "6f33434850ed87dc5e56b60ebbad3d3cf405f296"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 13:40:41 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:05 2010 -0500"
      },
      "message": "Btrfs: handle the space_cache option properly\n\nWhen I added the clear_cache option I screwed up and took the break out of\nthe space_cache case statement, so whenever you mount with space_cache you also\nget clear_cache, which does you no good if you say set space_cache in fstab so\nit always gets set.  This patch adds the break back in properly.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "925d169f5b86fe57e2f5264ea574cce9a89b719d",
      "tree": "241d3156b427c6398bd3fc5efa9108635d0e189b",
      "parents": [
        "cdf01dd5443d0befc8c6a32cb2e3d2f568fd2558",
        "6418c96107a2b399848bb8cfc6e29f11ca74fb94"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 09:05:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 09:05:48 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (39 commits)\n  Btrfs: deal with errors from updating the tree log\n  Btrfs: allow subvol deletion by unprivileged user with -o user_subvol_rm_allowed\n  Btrfs: make SNAP_DESTROY async\n  Btrfs: add SNAP_CREATE_ASYNC ioctl\n  Btrfs: add START_SYNC, WAIT_SYNC ioctls\n  Btrfs: async transaction commit\n  Btrfs: fix deadlock in btrfs_commit_transaction\n  Btrfs: fix lockdep warning on clone ioctl\n  Btrfs: fix clone ioctl where range is adjacent to extent\n  Btrfs: fix delalloc checks in clone ioctl\n  Btrfs: drop unused variable in block_alloc_rsv\n  Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n  Btrfs: Fix variables set but not read (bugs found by gcc 4.6)\n  Btrfs: Use ERR_CAST helpers\n  Btrfs: use memdup_user helpers\n  Btrfs: fix raid code for removing missing drives\n  Btrfs: Switch the extent buffer rbtree into a radix tree\n  Btrfs: restructure try_release_extent_buffer()\n  Btrfs: use the flusher threads for delalloc throttling\n  Btrfs: tune the chunk allocation to 5% of the FS as metadata\n  ...\n\nFix up trivial conflicts in fs/btrfs/super.c and fs/fs-writeback.c, and\nremove use of INIT_RCU_HEAD in fs/btrfs/extent_io.c (that init macro was\nuseless and removed in commit 5e8067adfdba: \"rcu head remove init\")\n"
    },
    {
      "commit": "4260f7c7516f4c209cf0ca34fda99cc9a0847772",
      "tree": "7feb5ab81d074b17a7c5b12bcc019c2e1bb010e2",
      "parents": [
        "531cb13f1e417c060b54f979e1659ecd69bea650"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:46:43 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:42:10 2010 -0400"
      },
      "message": "Btrfs: allow subvol deletion by unprivileged user with -o user_subvol_rm_allowed\n\nAdd a mount option user_subvol_rm_allowed that allows users to delete a\n(potentially non-empty!) subvol when they would otherwise we allowed to do\nan rmdir(2).  We duplicate the may_delete() checks from the core VFS code\nto implement identical security checks (minus the directory size check).\nWe additionally require that the user has write+exec permission on the\nsubvol root inode.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "559af8211433b8c0b20e6c43c61409cb9c9c2996",
      "tree": "702ebd4c4f5b610daa36f65d814a518356a9a46b",
      "parents": [
        "411fc6bcef54f828a5458f4730c68abdf13c6bf0"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "message": "Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n\nThese are all the cases where a variable is set, but not read which are\nnot bugs as far as I can see, but simply leftovers.\n\nStill needs more review.\n\nFound by gcc 4.6\u0027s new warnings\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0b678cb0a26783ab7238784f1e7e608e5caafa3",
      "tree": "a912b938a6558550960f6b07139bd119d86f89eb",
      "parents": [
        "2354d08fe9aeec3e451b85cb5387a6b28dbca0b1"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Oct 29 15:14:23 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:23 2010 -0400"
      },
      "message": "Btrfs: Use ERR_CAST helpers\n\nUse ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more\nclear what is the purpose of the operation, which otherwise looks like a\nno-op.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\nT x;\nidentifier f;\n@@\n\nT f (...) { \u003c+...\n- ERR_PTR(PTR_ERR(x))\n+ x\n ...+\u003e }\n\n@@\nexpression x;\n@@\n\n- ERR_PTR(PTR_ERR(x))\n+ ERR_CAST(x)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "6b5b817f103450444f3f658a498f435d92a197e5"
}
