)]}'
{
  "log": [
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "cd023e7b17fe86c530475da210b3348421c40e5f",
      "tree": "b80cf40b7ad18af59ef43602b673fe1c7d371232",
      "parents": [
        "9ba1f6e44ed7a1fa52d3f292508bf921b5054172"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 14 10:06:40 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:36 2012 -0400"
      },
      "message": "Btrfs: merge contigous regions when loading free space cache\n\nWhen we write out the free space cache we will write out everything that is\nin our in memory tree, and then we will just walk the pinned extents tree\nand write anything we see there.  The problem with this is that during\nnormal operations the pinned extents will be merged back into the free space\ntree normally, and then we can allocate space from the merged areas and\ncommit them to the tree log.  If we crash and replay the tree log we will\ncrash again because the tree log will try to free up space from what looks\nlike 2 seperate but contiguous entries, since one entry is from the original\nfree space cache and the other was a pinned extent that was merged back.  To\nfix this we just need to walk the free space tree after we load it and merge\ncontiguous entries back together.  This will keep the tree log stuff from\nbreaking and it will make the allocator behave more nicely.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5fd02043553b02867b29de1ac9fff2ec16b84def",
      "tree": "f378b1042b4fbd366185b8b12b082bce4fd4fac4",
      "parents": [
        "4e89915220e2f1341c757b610d0f0c3821f3a65f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 02 14:00:54 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:33 2012 -0400"
      },
      "message": "Btrfs: finish ordered extents in their own thread\n\nWe noticed that the ordered extent completion doesn\u0027t really rely on having\na page and that it could be done independantly of ending the writeback on a\npage.  This patch makes us not do the threaded endio stuff for normal\nbuffered writes and direct writes so we can end page writeback as soon as\npossible (in irq context) and only start threads to do the ordered work when\nit is actually done.  Compression needs to be reworked some to take\nadvantage of this as well, but atm it has to do a find_get_page in its endio\nhandler so it must be done in its own thread.  This makes direct writes\nquite a bit faster.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "528c032764f4d3c6cb5f5ece090d9d5882655982",
      "tree": "70996200fbb6d3baa52cd0028ef6a60d826417be",
      "parents": [
        "1db5df98faaf7aa6c25bc7d9703342d13678452a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 13 11:03:55 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:35 2012 -0400"
      },
      "message": "btrfs: trivial endianness annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "659e45d8a0aca8619f0d308448c480279fa002b6",
      "tree": "4475e6a64568e81d9418265eb4932f017e7a61a9",
      "parents": [
        "c104f1fa1ecf4ee0fc06e31b1f77630b2551be81",
        "d53ba47484ed6245e640ee4bfe9d21e9bfc15765"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 13 19:41:27 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 13 19:41:27 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus-min\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull the minimal btrfs branch from Chris Mason:\n \"We have a use-after-free in there, along with errors when mount -o\n  discard is enabled, and a BUG_ON(we should compile with UP more\n  often).\"\n\n* \u0027for-linus-min\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: use commit root when loading free space cache\n  Btrfs: fix use-after-free in __btrfs_end_transaction\n  Btrfs: check return value of bio_alloc() properly\n  Btrfs: remove lock assert from get_restripe_target()\n  Btrfs: fix eof while discarding extents\n  Btrfs: fix uninit variable in repair_eb_io_failure\n  Revert \"Btrfs: increase the global block reserve estimates\"\n"
    },
    {
      "commit": "d53ba47484ed6245e640ee4bfe9d21e9bfc15765",
      "tree": "12bcb989f0e210f25770a72441eb8b947fd2fad3",
      "parents": [
        "4edc2ca388d62abffe38149f6ac00e749ea721c5"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Apr 12 16:03:57 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 20:54:01 2012 -0400"
      },
      "message": "Btrfs: use commit root when loading free space cache\n\nA user reported that booting his box up with btrfs root on 3.4 was way\nslower than on 3.3 because I removed the ideal caching code.  It turns out\nthat we don\u0027t load the free space cache if we\u0027re in a commit for deadlock\nreasons, but since we\u0027re reading the cache and it hasn\u0027t changed yet we are\nsafe reading the inode and free space item from the commit root, so do that\nand remove all of the deadlock checks so we don\u0027t unnecessarily skip loading\nthe free space cache.  The user reported this fixed the slowness.  Thanks,\n\nTested-by: Calvin Walton \u003ccalvin.walton@kepstin.ca\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\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": "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": "d0082371cf086e0ba2bbd0367b2c9920532df24f",
      "tree": "4ae3fb6565f36fd606ab6e4b83d489e66b3b86d7",
      "parents": [
        "143bede527b054a271053f41bfaca2b57baa9408"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: drop gfp_t from lock_extent\n\n lock_extent and unlock_extent are always called with GFP_NOFS, drop the\n argument and use GFP_NOFS consistently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "69a7aebcf019ab3ff5764525ad6858fbe23bb86d",
      "tree": "7211df5704b743a7667159748c670a9744164482",
      "parents": [
        "d464c92b5234227c1698862a1906827e2e398ae0",
        "f1f996b66cc3908a8f5ffccc2ff41840e92f3b10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial tree from Jiri Kosina:\n \"It\u0027s indeed trivial -- mostly documentation updates and a bunch of\n  typo fixes from Masanari.\n\n  There are also several linux/version.h include removals from Jesper.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (101 commits)\n  kcore: fix spelling in read_kcore() comment\n  constify struct pci_dev * in obvious cases\n  Revert \"char: Fix typo in viotape.c\"\n  init: fix wording error in mm_init comment\n  usb: gadget: Kconfig: fix typo for \u0027different\u0027\n  Revert \"power, max8998: Include linux/module.h just once in drivers/power/max8998_charger.c\"\n  writeback: fix fn name in writeback_inodes_sb_nr_if_idle() comment header\n  writeback: fix typo in the writeback_control comment\n  Documentation: Fix multiple typo in Documentation\n  tpm_tis: fix tis_lock with respect to RCU\n  Revert \"media: Fix typo in mixer_drv.c and hdmi_drv.c\"\n  Doc: Update numastat.txt\n  qla4xxx: Add missing spaces to error messages\n  compiler.h: Fix typo\n  security: struct security_operations kerneldoc fix\n  Documentation: broken URL in libata.tmpl\n  Documentation: broken URL in filesystems.tmpl\n  mtd: simplify return logic in do_map_probe()\n  mm: fix comment typo of truncate_inode_pages_range\n  power: bq27x00: Fix typos in comment\n  ...\n"
    },
    {
      "commit": "855a85f704026d5fe7de94fb1b765fe03404507f",
      "tree": "553817c0f7230e104623dc7e8a900bbbcc881d3e",
      "parents": [
        "ee3253241a928f6c5c40960629d7071eb6a4b23c",
        "e77266e4c4be6f9dc91bf688bce015a8babd5fe0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nQuoth Chris:\n \"This is later than I wanted because I got backed up running through\n  btrfs bugs from the Oracle QA teams.  But they are all bug fixes that\n  we\u0027ve queued and tested since rc1.\n\n  Nothing in particular stands out, this just reflects bug fixing and QA\n  done in parallel by all the btrfs developers.  The most user visible\n  of these is:\n\n    Btrfs: clear the extent uptodate bits during parent transid failures\n\n  Because that helps deal with out of date drives (say an iscsi disk\n  that has gone away and come back).  The old code wasn\u0027t always\n  properly retrying the other mirror for this type of failure.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)\n  Btrfs: fix compiler warnings on 32 bit systems\n  Btrfs: increase the global block reserve estimates\n  Btrfs: clear the extent uptodate bits during parent transid failures\n  Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n  Btrfs: make sure we update latest_bdev\n  Btrfs: improve error handling for btrfs_insert_dir_item callers\n  Btrfs: be less strict on finding next node in clear_extent_bit\n  Btrfs: fix a bug on overcommit stuff\n  Btrfs: kick out redundant stuff in convert_extent_bit\n  Btrfs: skip states when they does not contain bits to clear\n  Btrfs: check return value of lookup_extent_mapping() correctly\n  Btrfs: fix deadlock on page lock when doing auto-defragment\n  Btrfs: fix return value check of extent_io_ops\n  btrfs: honor umask when creating subvol root\n  btrfs: silence warning in raid array setup\n  btrfs: fix structs where bitfields and spinlock/atomic share 8B word\n  btrfs: delalloc for page dirtied out-of-band in fixup worker\n  Btrfs: fix memory leak in load_free_space_cache()\n  btrfs: don\u0027t check DUP chunks twice\n  Btrfs: fix trim 0 bytes after a device delete\n  ...\n"
    },
    {
      "commit": "a7e221e9002306a753d6f78b4060edabce402033",
      "tree": "0b69be576f3cbbb5fe24a4f9e57dcbda57f2ccb1",
      "parents": [
        "859acaf1a29bbacf6256f1159210c8d6df992b33"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Feb 14 17:12:23 2012 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:24 2012 +0100"
      },
      "message": "Btrfs: fix memory leak in load_free_space_cache()\n\nload_free_space_cache() has forgotten to free path.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "934e7d44b810691ae5aefa3308b97a402aac1a55",
      "tree": "94b49d47a7951dff7bb5616dd7d3a8289283d5d4",
      "parents": [
        "6bd1d5867abfd3675cf17a8c46f2425bcf844804"
      ],
      "author": {
        "name": "Masanari Iida",
        "email": "standby24x7@gmail.com",
        "time": "Tue Feb 07 22:21:45 2012 +0900"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Feb 09 23:09:36 2012 +0100"
      },
      "message": "btrfs: Fix typo in free-space-cache.c\n\nCorrect spelling \"cace\" to \"cache\" in\nfs/btrfs/free-space-cache.c\n\nSigned-off-by: Masanari Iida \u003cstandby24x7@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "67d2433ee7aa631bc3ab14c2af6bbc1d44d13a00",
      "tree": "eb29e1489f9f4a99308e08568328de73fb89fc2e",
      "parents": [
        "1c36ab1a318ab5b3b502e7e4fff3628d1a97861f",
        "9998eb703490589c3e8f1bf09b15203156776edb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 28 17:00:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 28 17:00:19 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: fix reservations in btrfs_page_mkwrite\n  Btrfs: advance window_start if we\u0027re using a bitmap\n  btrfs: mask out gfp flags in releasepage\n  Btrfs: fix enospc error caused by wrong checks of the chunk\n  Btrfs: do not defrag a file partially\n  Btrfs: fix warning for 32-bit build of fs/btrfs/check-integrity.c\n  Btrfs: use cluster-\u003ewindow_start when allocating from a cluster bitmap\n  Btrfs: Check for NULL page in extent_range_uptodate\n  btrfs: Fix busyloops in transaction waiting code\n  Btrfs: make sure a bitmap has enough bytes\n  Btrfs: fix uninit warning in backref.c\n"
    },
    {
      "commit": "9b23062840e7c685ef0a0b561285d6e3a3b6811b",
      "tree": "47c00ad85dced3c4712b03de926b77c4aad99a77",
      "parents": [
        "0c4e538bccc106872d31b1514570b4dac95fb7f2"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "Btrfs: advance window_start if we\u0027re using a bitmap\n\nIf we span a long area in a bitmap we could end up taking a lot of time\nsearching to the next free area if we\u0027re searching from the original\nwindow_start, so advance window_start in order to make sure we don\u0027t do any\nsuperficial searching.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b4a9d248f88e6773312f262e8185f23863d984a",
      "tree": "bd822950b56730d6be409c98291c4f2ba19678dc",
      "parents": [
        "8bedd51b6121c4607784d75f852828d25d119c52"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: use cluster-\u003ewindow_start when allocating from a cluster bitmap\n\nWe specifically set window_start in the cluster struct to indicate where the\ncluster starts in a bitmap, but we\u0027ve been using min_start to indicate where\nwe\u0027re searching from.  This is usually the start of the blockgroup, so\nessentially means we\u0027re constantly searching from the start of any bitmap we\nfind, which completely negates all the trouble we go to in order to setup a\ncluster.  So start using window_start to make sure we actually use the area we\nfound.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "357b9784b79924a31ccded5d9a0c688f48cc28f2",
      "tree": "ba47dcbcc40b956b30e4b27c790547cb5d3fc563",
      "parents": [
        "b1375d64c539c5b76794be759b62d3f178e67c32"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:11 2012 -0500"
      },
      "message": "Btrfs: make sure a bitmap has enough bytes\n\nWe have only been checking for min_bytes available in bitmap entries, but we\nwon\u0027t successfully setup a bitmap cluster unless it has at least bytes in the\nbitmap, so in the common case min_bytes is 4k and we want something like 2MB, so\nif there are a bunch of bitmap entries with less than 2mb\u0027s in them, we\u0027ll\nsearch all them anyway, which is suboptimal.  Fix this check.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "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": "3f7de037fb3727b20bc27332cdcf2488b702394c",
      "tree": "7e355b7e60b584ca7aaaf7c8abfa1f2408c15ff2",
      "parents": [
        "45a8090e626ab470c91142954431a93846030b0d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 08:29:20 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: add allocator tracepoints\n\nI used these tracepoints when figuring out what the cluster stuff was doing, so\nadd them to mainline in case we need to profile this stuff again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d756bd2d9339447c29bde950910586df8f8941ec",
      "tree": "f96aeb682bcc4fdcf75d080f260c809b9fbc4a1a",
      "parents": [
        "27263e28321db438bc43dc0c0be432ce91526224",
        "b367e47fb3a70f5d24ebd6faf7d42436d485fb2d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://repo.or.cz/linux-btrfs-devel into integration\n\nConflicts:\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7fe1e641502616220437079258506196bc4d8cbf",
      "tree": "da48e34d3e826f1bfe87bf7f7743bbb0e47ab2c3",
      "parents": [
        "ec9ef7a13be4dcce964c8503e8999087945e5b9e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 29 14:47:27 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:48 2012 +0800"
      },
      "message": "Btrfs: rewrite btrfs_trim_block_group()\n\nThere are various bugs in block group trimming:\n\n- It may trim from offset smaller than user-specified offset.\n- It may trim beyond user-specified range.\n- It may leak free space for extents smaller than specified minlen.\n- It may truncate the last trimmed extent thus leak free space.\n- With mixed extents+bitmaps, some extents may not be trimmed.\n- With mixed extents+bitmaps, some bitmaps may not be trimmed (even\nnone will be trimmed). Even for those trimmed, not all the free space\nin the bitmaps will be trimmed.\n\nI rewrite btrfs_trim_block_group() and break it into two functions.\nOne is to trim extents only, and the other is to trim bitmaps only.\n\nBefore patching:\n\n\t# fstrim -v /mnt/\n\t/mnt/: 1496465408 bytes were trimmed\n\nAfter patching:\n\n\t# fstrim -v /mnt/\n\t/mnt/: 2193768448 bytes were trimmed\n\nAnd this matches the total free space:\n\n\t# btrfs fi df /mnt\n\tData: total\u003d3.58GB, used\u003d1.79GB\n\tSystem, DUP: total\u003d8.00MB, used\u003d4.00KB\n\tSystem: total\u003d4.00MB, used\u003d0.00\n\tMetadata, DUP: total\u003d205.12MB, used\u003d97.14MB\n\tMetadata: total\u003d8.00MB, used\u003d0.00\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "706efc6630c2722602541a6a2fc5900a4e38456a",
      "tree": "bba227c9b49146e6c1bb6b529224088dbb9b8811",
      "parents": [
        "a1ee5a45818acc7f9c13e560827cf3e8735ac919"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jan 09 14:36:28 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:36 2012 +0800"
      },
      "message": "Btrfs: check the return value of io_ctl_init()\n\nIt can return -ENOMEM.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "a1ee5a45818acc7f9c13e560827cf3e8735ac919",
      "tree": "984505e8c99a6965453819651ff0ea91a4ca8d4b",
      "parents": [
        "db804f23a72bada58f083dfad6a65d019ddb3bd4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jan 09 14:27:42 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:34 2012 +0800"
      },
      "message": "Btrfs: avoid possible NULL deref in io_ctl_drop_pages()\n\nIf we run into some failure path in io_ctl_prepare_pages(),\nio_ctl-\u003epages[] array may have some NULL pointers.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "db804f23a72bada58f083dfad6a65d019ddb3bd4",
      "tree": "24c7a53995b61b5f98d87b8db136fc908a3a035f",
      "parents": [
        "d25223a0d22f7ec4203ec285dc6e51f696591ba3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jan 10 16:41:01 2012 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:31 2012 +0800"
      },
      "message": "Btrfs: add pinned extents to on-disk free space cache correctly\n\nI got this while running xfstests:\n\n[24256.836098] block group 317849600 has an wrong amount of free space\n[24256.836100] btrfs: failed to load free space cache for block group 317849600\n\nWe should clamp the extent returned by find_first_extent_bit(),\nso the start of the extent won\u0027t smaller than the start of the\nblock group.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "98793265b429a3f0b3f1750e74d67cd4d740d162",
      "tree": "b0bd717673f0c21845cf053f3fb6b75d42530af5",
      "parents": [
        "b4a133da2eaccb844a7beaef16ffd9c76a0d21d3",
        "bd1b2a555952d959f47169056fca05acf7eff81f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:21:22 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:21:22 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)\n  Kconfig: acpi: Fix typo in comment.\n  misc latin1 to utf8 conversions\n  devres: Fix a typo in devm_kfree comment\n  btrfs: free-space-cache.c: remove extra semicolon.\n  fat: Spelling s/obsolate/obsolete/g\n  SCSI, pmcraid: Fix spelling error in a pmcraid_err() call\n  tools/power turbostat: update fields in manpage\n  mac80211: drop spelling fix\n  types.h: fix comment spelling for \u0027architectures\u0027\n  typo fixes: aera -\u003e area, exntension -\u003e extension\n  devices.txt: Fix typo of \u0027VMware\u0027.\n  sis900: Fix enum typo \u0027sis900_rx_bufer_status\u0027\n  decompress_bunzip2: remove invalid vi modeline\n  treewide: Fix comment and string typo \u0027bufer\u0027\n  hyper-v: Update MAINTAINERS\n  treewide: Fix typos in various parts of the kernel, and fix some comments.\n  clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR\n  gpio: Kconfig: drop unknown symbol \u0027CS5535_GPIO\u0027\n  leds: Kconfig: Fix typo \u0027D2NET_V2\u0027\n  sound: Kconfig: drop unknown symbol ARCH_CLPS7500\n  ...\n\nFix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new\nkconfig additions, close to removed commented-out old ones)\n"
    },
    {
      "commit": "1bb91902dc90e25449893e693ad45605cb08fbe5",
      "tree": "17f514fb0f2c1b0de7681638ba3b2cc69cf28d01",
      "parents": [
        "fc7c1077ceb99c35e5f9d0ce03dc7740565bb2bf"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "lxoliva@fsfla.org",
        "time": "Fri Oct 14 12:10:36 2011 -0300"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jan 07 19:15:15 2012 -0500"
      },
      "message": "Btrfs: revamp clustered allocation logic\n\nParameterize clusters on minimum total size, minimum chunk size and\nminimum contiguous size for at least one chunk, without limits on\ncluster, window or gap sizes.  Don\u0027t tolerate any fragmentation for\nSSD_SPREAD; accept it for metadata, but try to keep data dense.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cb54f2571ff3f5128f18efcf888ce3c051c589d9",
      "tree": "57db3cf83fa6ef283fc7cd2ca69680378b2d9e78",
      "parents": [
        "d7a83c0f7f0f7a04710f31701f195018a4f5fdd3"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Mon Nov 21 08:43:28 2011 -0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Dec 15 16:42:25 2011 +0100"
      },
      "message": "btrfs: free-space-cache.c: remove extra semicolon.\n\nThe patch below removes an extra semicolon.\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nCC: Chris Mason \u003cchris.mason@oracle.com\u003e\nCC: linux-btrfs@vger.kernel.org\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "b78d09bceb524ee6481c21b77bda22d766b10e6a",
      "tree": "945f0f759dc1c32e091edfe1432f383153d76d19",
      "parents": [
        "f2d0f6765d6332f9be732965a0c6f3b8a55082b4"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 30 13:43:00 2011 -0500"
      },
      "message": "Btrfs: reset cluster\u0027s max_size when creating bitmap\n\nThe field that indicates the size of the largest contiguous chunk of\nfree space in the cluster is not initialized when setting up bitmaps,\nit\u0027s only increased when we find a larger contiguous chunk.  We end up\nretaining a larger value than appropriate for highly-fragmented\nclusters, which may cause pointless searches for large contiguous\ngroups, and even cause clusters that do not meet the density\nrequirements to be set up.\n\nSigned-off-by: Alexandre Oliva \u003coliva@lsd.ic.unicamp.br\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2d0f6765d6332f9be732965a0c6f3b8a55082b4",
      "tree": "c9855b6e259e6b464c95b7ff0b9419023d02d703",
      "parents": [
        "b772a86ea6d932ac29d5e50e67c977653c832f8a"
      ],
      "author": {
        "name": "Alexandre Oliva",
        "email": "oliva@lsd.ic.unicamp.br",
        "time": "Mon Nov 28 12:04:43 2011 -0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:06 2011 +0100"
      },
      "message": "Btrfs: initialize new bitmaps\u0027 list\n\nWe\u0027re failing to create clusters with bitmaps because\nsetup_cluster_no_bitmap checks that the list is empty before inserting\nthe bitmap entry in the list for setup_cluster_bitmap, but the list\nfield is only initialized when it is restored from the on-disk free\nspace cache, or when it is written out to disk.\n\nBesides a potential race condition due to the multiple use of the list\nfield, filesystem performance severely degrades over time: as we use\nup all non-bitmap free extents, the try-to-set-up-cluster dance is\ndone at every metadata block allocation.  For every block group, we\nfail to set up a cluster, and after failing on them all up to twice,\nwe fall back to the much slower unclustered allocation.\n\nTo make matters worse, before the unclustered allocation, we try to\ncreate new block groups until we reach the 1% threshold, which\nintroduces additional bitmaps and thus block groups that we\u0027ll iterate\nover at each metadata block request.\n"
    },
    {
      "commit": "24a70313969fc3fc440216b40babdb42564acff3",
      "tree": "16c8840f4495369e771cff62bb2fd8aa81d65ee9",
      "parents": [
        "4d479cf010d56ec9c54f3099992d039918f1296b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 21 09:39:11 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 21 14:57:33 2011 -0500"
      },
      "message": "Btrfs: remove free-space-cache.c WARN during log replay\n\nThe log replay code only partially loads block groups, since\nthe block group caching code is able to detect and deal with\nextents the logging code has pinned down.\n\nWhile the logging code is pinning down block groups, there is\na bogus WARN_ON we\u0027re hitting if the code wasn\u0027t able to find\nan extent in the cache.  This commit removes the warning because\nit can happen any time there isn\u0027t a valid free space cache\nfor that block group.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7d61dcd6873c49bcc42be2caa2af1c2511aa915",
      "tree": "9619519c2eac1dd207bf822f348575cf9f98ba47",
      "parents": [
        "291c7d2f577428f896daa5002e784959328a80aa"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 15 09:31:24 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:17 2011 -0500"
      },
      "message": "Btrfs: clear pages dirty for io and set them extent mapped\n\nWhen doing the io_ctl helpers to clean up the free space cache stuff I stopped\nusing our normal prepare_pages stuff, which means I of course forgot to do\nthings like set the pages extent mapped, which will cause us all sorts of\nwonderful propblems.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "52621cb6ed0e0e14358bb317bda7cd5fbd5c2a27",
      "tree": "5b4bc4c08c9f50e97779fcf527b1a8c7780a9e88",
      "parents": [
        "0f0fbf1d0e188d129756e9508090af4bdbfde00b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:15 2011 -0500"
      },
      "message": "Btrfs: avoid unnecessary bitmap search for cluster setup\n\nsetup_cluster_no_bitmap() searches all the extents and bitmaps starting\nfrom offset. Therefore if it returns -ENOSPC, all the bitmaps starting\nfrom offset are in the bitmaps list, so it\u0027s sufficient to search from\nthis list in setup_cluser_bitmap().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0f0fbf1d0e188d129756e9508090af4bdbfde00b",
      "tree": "1c015e7be1e1ede9b2b654cb6264217fc110e598",
      "parents": [
        "32240a913d9f3a5aad42175d7696590ea1bfdb08"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:14 2011 -0500"
      },
      "message": "Btrfs: fix to search one more bitmap for cluster setup\n\nSuppose there are two bitmaps [0, 256], [256, 512] and one extent\n[100, 120] in the free space cache, and we want to setup a cluster\nwith offset\u003d100, bytes\u003d50.\n\nIn this case, there will be only one bitmap [256, 512] in the temporary\nbitmaps list, and then setup_cluster_bitmap() won\u0027t search bitmap [0, 256].\n\nThe cause is, the list is constructed in setup_cluster_no_bitmap(),\nand only bitmaps with bitmap_entry-\u003eoffset \u003e\u003d offset will be added\ninto the list, and the very bitmap that convers offset has\nbitmap_entry-\u003eoffset \u003c\u003d offset.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2f120c05e67ae34c93786b1050c6828904314429",
      "tree": "d14dfdb4e94b5b562ed35206a8525cd5908fc0db",
      "parents": [
        "76b9e23d25d5c99f994bee3172de39492e452e93"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: only map pages if we know we need them when reading the space cache\n\nPeople have been running into a warning when loading space cache because the\npage is already mapped when trying to read in a bitmap.  The way we read in\nentries and pages is kind of convoluted, so fix it so that io_ctl_read_entry\nmaps the entries if it needs to, and if it hits the end of the page it simply\nunmaps the page.  That way we can unconditionally unmap the io_ctl before\nreading in the bitmap and we should stop hitting these warnings.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c8174313a8102e874aaa321e2fc4c7c460a87151",
      "tree": "366dc804d4b5d0d8c32d70cc554651efa552ba59",
      "parents": [
        "5a77d76c243be18d854aa1b14d697525f60e169a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 02 09:29:35 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:50 2011 -0500"
      },
      "message": "Btrfs: use the global reserve when truncating the free space cache inode\n\nWe no longer use the orphan block rsv for holding the reservation for truncating\nthe inode, so instead use the global block rsv and check to make sure it has\nenough space for us to truncate the space.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1eae31e918972bbeefc119d23c1d67674f49a301",
      "tree": "b6c1df4d25699812a83f107187b407d53abeb82e",
      "parents": [
        "cd354ad613a393424f85333ceed6b15e07fb94ae"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 14 06:31:20 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:47 2011 -0500"
      },
      "message": "Btrfs: make sure btrfs_remove_free_space doesn\u0027t leak EAGAIN\n\nbtrfs_remove_free_space needs to make sure to set ret back to a\nvalid return value after setting it to EAGAIN, otherwise we return\nit to the callers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "016fc6a63e465d5b94e4028f6d05d9703e195428",
      "tree": "5482f54821647aaa10d038459012b9c8fe78e956",
      "parents": [
        "7e355b83efa80e5f5821591c13c17649594d82ac"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 10:31:37 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:13:01 2011 -0400"
      },
      "message": "Btrfs: don\u0027t flush the cache inode before writing it\n\nI noticed we had a little bit of latency when writing out the space cache\ninodes.  It\u0027s because we flush it before we write anything in case we have dirty\npages already there.  This doesn\u0027t matter though since we\u0027re just going to\noverwrite the space, and there really shouldn\u0027t be any dirty pages anyway.  This\nmakes some of my tests run a little bit faster.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "36ba022ac0b748dd543f43430b03198e899426c9",
      "tree": "3175872760ac769cde046b3ac43900fc42856bb8",
      "parents": [
        "3880a1b46d87a6b030c31889875befc745d95dff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 18 12:15:48 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:59 2011 -0400"
      },
      "message": "Btrfs: seperate out btrfs_block_rsv_check out into 2 different functions\n\nCurrently btrfs_block_rsv_check does 2 things, it will either refill a block\nreserve like in the truncate or refill case, or it will check to see if there is\nenough space in the global reserve and possibly refill it.  However because of\novercommit we could be well overcommitting ourselves just to try and refill the\nglobal reserve, when really we should just be committing the transaction.  So\nbreack this out into btrfs_block_rsv_refill and btrfs_block_rsv_check.  Refill\nwill try to reserve more metadata if it can and btrfs_block_rsv_check will not,\nit will only tell you if the factor of the total space is still reserved.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5b0e95bf607ddd59b39f52d3d55e6581c817b530",
      "tree": "da248f5492908ce8b9402beee68c6ee98aa3caed",
      "parents": [
        "9a82ca659d8bfd99afc0e89bbde2202322df5755"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 06 08:58:24 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:54 2011 -0400"
      },
      "message": "Btrfs: inline checksums into the disk free space cache\n\nYeah yeah I know this is how we used to do it and then I changed it, but damnit\nI\u0027m changing it back.  The fact is that writing out checksums will modify\nmetadata, which could cause us to dirty a block group we\u0027ve already written out,\nso we have to truncate it and all of it\u0027s checksums and re-write it which will\nwrite new checksums which could dirty a blockg roup that has already been\nwritten and you see where I\u0027m going with this?  This can cause unmount or really\nanything that depends on a transaction to commit to take it\u0027s sweet damned time\nto happen.  So go back to the way it was, only this time we\u0027re specifically\nsetting NODATACOW because we can\u0027t go through the COW pathway anyway and we\u0027re\ndoing our own built-in cow\u0027ing by truncating the free space cache.  The other\nnew thing is once we truncate the old cache and preallocate the new space, we\ndon\u0027t need to do that song and dance at all for the rest of the transaction, we\ncan just overwrite the existing space with the new cache if the block group\nchanges for whatever reason, and the NODATACOW will let us do this fine.  So\nkeep track of which transaction we last cleared our cache in and if we cleared\nit in this transaction just say we\u0027re all setup and carry on.  This survives\nxfstests and stress.sh.\n\nThe inode cache will continue to use the normal csum infrastructure since it\nonly gets written once and there will be no more modifications to the fs tree in\na transaction commit.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "549b4fdb8f3c0708bbc0ee12ff955cd206c0f60c",
      "tree": "8ee21d81f99dd2efd801c59c1d5eaf800f6b0ec0",
      "parents": [
        "a67509c30079f4c5025fb19ea443fb2906c3a85e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 05 16:33:53 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:53 2011 -0400"
      },
      "message": "Btrfs: check the return value of filemap_write_and_wait in the space cache\n\nWe need to check the return value of filemap_write_and_wait in the space cache\nwriteout code.  Also don\u0027t set the inode\u0027s generation until we\u0027re sure nothing\nelse is going to fail.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a67509c30079f4c5025fb19ea443fb2906c3a85e",
      "tree": "ff8bd615b4fd447c044f06f29e2ad3b65db35ea2",
      "parents": [
        "f75b130e9bb361850787e156c79311adb84f551e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 05 15:18:58 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:52 2011 -0400"
      },
      "message": "Btrfs: add a io_ctl struct and helpers for dealing with the space cache\n\nIn writing and reading the space cache we have one big loop that keeps track of\nwhich page we are on and then a bunch of sizeable loops underneath this big loop\nto try and read/write out properly.  Especially in the write case this makes\nthings hugely complicated and hard to follow, and makes our error checking and\nrecovery equally as complex.  So add a io_ctl struct with a bunch of helpers to\nkeep track of the pages we have, where we are, if we have enough space etc.\nThis unifies how we deal with the pages we\u0027re writing and keeps all the messy\ntracking internal.  This allows us to kill the big loops in both the read and\nwrite case and makes reviewing and chaning the write and read paths much\nsimpler.  I\u0027ve run xfstests and stress.sh on this code and it survives.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f75b130e9bb361850787e156c79311adb84f551e",
      "tree": "6bc2fdf8c19f36124583774f07550e26b85de7e5",
      "parents": [
        "73bc187680f94bed498f8a669103cad290e41180"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 05 10:00:18 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:51 2011 -0400"
      },
      "message": "Btrfs: don\u0027t skip writing out a empty block groups cache\n\nI noticed a slight bug where we will not bother writing out the block group\ncache\u0027s space cache if it\u0027s space tree is empty.  Since it could have a cluster\nor pinned extents that need to be written out this is just not a valid test.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3b16a4e3c355ee3c790473decfcf83d4faeb8ce0",
      "tree": "5c3dad941468cf6952623cc18d6b1e682ee3f264",
      "parents": [
        "455757c322cc0a0f2a692c5625dd88aaf6a7b889"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Sep 21 15:05:58 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:45 2011 -0400"
      },
      "message": "Btrfs: use the inode\u0027s mapping mask for allocating pages\n\nJohannes pointed out we were allocating only kernel pages for doing writes,\nwhich is kind of a big deal if you are on 32bit and have more than a gig of ram.\nSo fix our allocations to use the mapping\u0027s gfp but still clear __GFP_FS so we\ndon\u0027t re-enter.  Thanks,\n\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4a92b1b8d2810db4ea0c34616b94c0b3810fa027",
      "tree": "dd01cff1987b8178be84f8b750951497b7f525a7",
      "parents": [
        "d02c9955ded7fc56dd1edc987558b084ccb03eb4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Aug 30 12:34:28 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:44 2011 -0400"
      },
      "message": "Btrfs: stop passing a trans handle all around the reservation code\n\nThe only thing that we need to have a trans handle for is in\nreserve_metadata_bytes and thats to know how much flushing we can do.  So\ninstead of passing it around, just check current-\u003ejournal_info for a\ntrans_handle so we know if we can commit a transaction to try and free up space\nor not.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "c09544e07f8cdc455ed8615d4c067d694c33bd18",
      "tree": "c9943e56457ac64e2223396841e043e4514462e0",
      "parents": [
        "300e4f8a56f263797568c95b71c949f9f02e4534"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Aug 30 10:19:10 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:42 2011 -0400"
      },
      "message": "Btrfs: handle enospc accounting for free space inodes\n\nSince free space inodes now use normal checksumming we need to make sure to\naccount for their metadata use.  So reserve metadata space, and then if we fail\nto write out the metadata we can just release it, otherwise it will be freed up\nwhen the io completes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "300e4f8a56f263797568c95b71c949f9f02e4534",
      "tree": "ecb4f4ba0cd499f73876476f92c3fc6306aaa140",
      "parents": [
        "4a33854257764c2ec6337ee0c8ecafb64f8e29e1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Aug 29 14:06:00 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:41 2011 -0400"
      },
      "message": "Btrfs: put the block group cache after we commit the super\n\nIn moving some enospc stuff around I noticed that when we unmount we are often\nevicting the free space cache inodes before we do our last commit.  This isn\u0027t\nbad, but it makes us constantly have to re-read the inodes back.  So instead\ndon\u0027t evict the cache until after we do our last commit, this will make things a\nlittle less crappy and makes a future enospc change work properly.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a9b5fcddce594a408a48d523087b5bb64ce82469",
      "tree": "b146a8c2c9a00012b253c94dc65baa8ecb325e61",
      "parents": [
        "482e6dc5261406fdb921946e70b51467b0305bad"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Aug 19 12:06:12 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:38 2011 -0400"
      },
      "message": "Btrfs: fix call to btrfs_search_slot in free space cache\n\nWe are setting ins_len to 1 even tho we are just modifying an item that should\nbe there already.  This may cause the search stuff to split nodes on the way\ndown needelessly.  Set this to 0 since we aren\u0027t inserting anything.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "482e6dc5261406fdb921946e70b51467b0305bad",
      "tree": "b3acb0574ea5b7a8bd4991c346f5166f0317bbf4",
      "parents": [
        "07127184efb629f1336c0592bfdacec258cab731"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Aug 19 10:31:56 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:38 2011 -0400"
      },
      "message": "Btrfs: allow callers to specify if flushing can occur for btrfs_block_rsv_check\n\nIf you run xfstest 224 it you will get lots of messages about not being able to\ndelete inodes and that they will be cleaned up next mount.  This is because\nbtrfs_block_rsv_check was not calling reserve_metadata_bytes with the ability to\nflush, so if there was not enough space, it simply failed.  But in truncate and\nevict case we could easily flush space to try and get enough space to do our\nwork, so make btrfs_block_rsv_check take a flush argument to pass down to\nreserve_metadata_bytes.  Now xfstests 224 runs fine without all those\ncomplaints.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "6ab60601d518d563ca1a47eaa399096e69d3b64a",
      "tree": "7a942576303b57b4c2dffa7815fb6ba2fe9a5fa1",
      "parents": [
        "4289a667a0d7c6b134898cac7bfbe950267c305c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Aug 08 08:24:46 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:33 2011 -0400"
      },
      "message": "Btrfs: ratelimit the generation printk for the free space cache\n\nA user reported getting spammed when moving to 3.0 by this message.  Since we\nswitched to the normal checksumming infrastructure all old free space caches\nwill be wrong and need to be regenerated so people are likely to see this\nmessage a lot, so ratelimit it so it doesn\u0027t fill up their logs and freak them\nout.  Thanks,\n\nReported-by: Andrew Lutomirski \u003cluto@mit.edu\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "fb25e9141ab843794d5cdef3936ccb58435e2371",
      "tree": "73450e1666520ffc9d6405c51885d3c42d7d963c",
      "parents": [
        "830c4adbd04a79f806d4fa579546f36a71b727c1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jul 26 17:00:46 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:30 2011 -0400"
      },
      "message": "Btrfs: use bytes_may_use for all ENOSPC reservations\n\nWe have been using bytes_reserved for metadata reservations, which is wrong\nsince we use that to keep track of outstanding reservations from the allocator.\nThis resulted in us doing a lot of silly things to make sure we don\u0027t allocate a\nbunch of metadata chunks since we never had a real view of how much space was\nactually in use by metadata.\n\nThis passes Arne\u0027s enospc test and xfstests as well as my own enospc tests.\nHopefully this will get us moving in the right direction.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "65450aa645b1ef7ed74e41c34b28d53333744978",
      "tree": "db3d56353021c83e5551f91855d56d3b27bf9214",
      "parents": [
        "ddf23b3fc6850bd4654d51ec9457fe7c77cde51e"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Sun Sep 11 10:52:24 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:24 2011 -0400"
      },
      "message": "Btrfs: reset to appropriate block rsv after orphan operations\n\nWhile truncating free space cache, we forget to change trans-\u003eblock_rsv\nback to the original one, but leave it with the orphan_block_rsv, and\nthen with option inode_cache enable, it leads to countless warnings of\nbtrfs_alloc_free_block and btrfs_orphan_commit_root:\n\nWARNING: at fs/btrfs/extent-tree.c:5711 btrfs_alloc_free_block+0x180/0x350 [btrfs]()\n...\nWARNING: at fs/btrfs/inode.c:2193 btrfs_orphan_commit_root+0xb0/0xc0 [btrfs]()\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bb3ac5a4dfc8eeb881206c77d9f925e320d9c41a",
      "tree": "ae5cb912cdc3a36a0aa7d43a554658821e0a6161",
      "parents": [
        "f4ac904c411b55e58bb240f332f93db2455f0010"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Aug 05 09:32:35 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 16 21:09:31 2011 -0400"
      },
      "message": "Btrfs: fix wrong free space information\n\nBtrfs subtracted the size of the allocated space twice when it allocated\nthe space from the bitmap in the cluster, it broke the free space information\nand led to oops finally.\n\nAnd this patch also fixes the bug that ctl-\u003efree_space was subtracted\nwithout lock.\n\nReported-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a94733d0bc630edaedc6ca156752dd5a7cb82521",
      "tree": "3f0bd508aa1ce5894e43df45bb73031a380ed8f5",
      "parents": [
        "bab39bf998133510f2dad08158006197ec0dabea"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 10:47:06 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:43 2011 -0400"
      },
      "message": "Btrfs: use find_or_create_page instead of grab_cache_page\n\ngrab_cache_page will use mapping_gfp_mask(), which for all inodes is set to\nGFP_HIGHUSER_MOVABLE.  So instead use find_or_create_page in all cases where we\nneed GFP_NOFS so we don\u0027t deadlock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2f356126c589d562f98e2287f9c7b983388dc62f",
      "tree": "8674f29e4c8ccc2d536472f5fef5755b252093a3",
      "parents": [
        "fdb5effd5c2a7e01dc3a4217bb194e2d3a5b160f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jun 10 15:31:13 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 09:58:49 2011 -0400"
      },
      "message": "Btrfs: use the normal checksumming infrastructure for free space cache\n\nWe used to store the checksums of the space cache directly in the space cache,\nhowever that doesn\u0027t work out too well if we have more space than we can fit the\nchecksums into the first page.  So instead use the normal checksumming\ninfrastructure.  There were problems with doing this originally but those\nproblems don\u0027t exist now so this works out fine.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9b90f5135320bc74dc6c9a8c74d69fd4821d9282",
      "tree": "d149650ba8e15a1ec22b3832482e9b24ea420fa3",
      "parents": [
        "e0f5406727f1dfdc47b8ba4a0ff6eae4b0b5ed4c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jun 24 16:02:51 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 25 09:31:06 2011 -0400"
      },
      "message": "Btrfs: make sure to update total_bitmaps when freeing cache V3\n\nA user reported this bug again where we have more bitmaps than we are supposed\nto.  This is because we failed to load the free space cache, but don\u0027t update\nthe ctl-\u003etotal_bitmaps counter when we remove entries from the tree.  This patch\nfixes this problem and we should be good to go again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "38e87880666091fe9c572a7a2ed2e771d97ca5aa",
      "tree": "5e48b7ce7220a2b99f60574f6b02b6b41286d5de",
      "parents": [
        "3473f3c06a36865ae05993041fff35ee928342a7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 16:36:57 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 16:36:57 2011 -0400"
      },
      "message": "Btrfs: make sure to recheck for bitmaps in clusters\n\nJosef recently changed the free extent cache to look in\nthe block group cluster for any bitmaps before trying to\nadd a new bitmap for the same offset.  This avoids BUG_ON()s due\ncovering duplicate ranges.\n\nBut it didn\u0027t go quite far enough.  A given free range might span\nbetween one or more bitmaps or free space entries.  The code has\nlooping to cover this, but it doesn\u0027t check for clustered bitmaps\nevery time.\n\nThis shuffles our gotos to check for a bitmap in the cluster\nfor every new bitmap entry we try to add.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f6a398298d34af66ec3a2d82a44a4dbc5277357d",
      "tree": "5cb1a6437051c22f2f3ecca9a4c7d60e4192d377",
      "parents": [
        "723bda2083d44edbd6be0f0b09f902120dc07442"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jun 06 10:50:35 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 16:37:29 2011 -0400"
      },
      "message": "Btrfs: fix duplicate checking logic\n\nWhen merging my code into the integration test the second check for duplicate\nentries got screwed up.  This patch fixes it by dropping ret2 and just using ret\nfor the return value, and checking if we got an error before adding the bitmap\nto the local list.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2cdc342c204dba69ca3b2ec43d8e6ff41ed920b8",
      "tree": "e077a03c0b17799150b837deeffb27f3842be536",
      "parents": [
        "f2bb8f5cfb3bce595b2de251ed7638047fc4e530"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 27 14:07:49 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 16:37:28 2011 -0400"
      },
      "message": "Btrfs: fix bitmap regression\n\nIn cleaning up the clustering code I accidently introduced a regression by\nadding bitmap entries to the cluster rb tree.  The problem is if we\u0027ve maxed out\nthe number of bitmaps we can have for the block group we can only add free space\nto the bitmaps, but since the bitmap is on the cluster we can\u0027t find it and we\ntry to create another one.  This would result in a panic because the total\nbitmaps was bigger than the max bitmaps that were allowed.  This patch fixes\nthis by checking to see if we have a cluster, and then looking at the cluster rb\ntree to see if it has a bitmap entry and if it does and that space belongs to\nthat bitmap, go ahead and add it to that bitmap.\n\nI could hit this panic every time with an fs_mark test within a couple of\nminutes.  With this patch I no longer hit the panic and fs_mark goes to\ncompletion.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3de85bb95cc50d0977cbb7a0c605e894be4c790d",
      "tree": "bb2b0a07f070c1e0cd50b41962cedcccf8428fd8",
      "parents": [
        "86d4a77ba3dc4ace238a0556541a41df2bd71d49"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 25 13:07:37 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 15:08:30 2011 -0400"
      },
      "message": "Btrfs: noinline the cluster searching functions\n\nWhen profiling the find cluster code it\u0027s hard to tell where we are spending our\ntime because the bitmap and non-bitmap functions get inlined by the compiler, so\nmake that not happen.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "86d4a77ba3dc4ace238a0556541a41df2bd71d49",
      "tree": "d59bdf911b0a360f87308c1499a320f1b6f7be06",
      "parents": [
        "aa0467d8d2a00e75b2bb6a56a4ee6d70c5d1928f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 25 13:03:16 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 08 15:08:28 2011 -0400"
      },
      "message": "Btrfs: cache bitmaps when searching for a cluster\n\nIf we are looking for a cluster in a particularly sparse or fragmented block\ngroup, we will do a lot of looping through the free space tree looking for\nvarious things, and if we need to look at bitmaps we will endup doing the whole\ndance twice.  So instead add the bitmap entries to a temporary list so if we\nhave to do the bitmap search we can just look through the list of entries we\u0027ve\nfound quickly instead of having to loop through the entire tree again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7841cb2898f66a73062c64d0ef5733dde7279e46",
      "tree": "b7a94d96d44971845951a59e9fb7b5c2e30c46b3",
      "parents": [
        "4b9465cb9e3859186eefa1ca3b990a5849386320"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 18:07:27 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:11:22 2011 -0400"
      },
      "message": "btrfs: add helper for fs_info-\u003eclosing\n\nwrap checking of filesystem \u0027closing\u0027 flag and fix a few missing memory\nbarriers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\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": "211f96c24f117fcc6e9e2431e40d92f4de22625e",
      "tree": "9f73c5419e905066653660ec33f8d5efeaa3a148",
      "parents": [
        "17aca1c987cff89dc4279371857035da902c8854"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 03 01:26:53 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:43 2011 -0400"
      },
      "message": "Btrfs: make sure we don\u0027t overflow the free space cache crc page\n\nThe free space cache uses only one page for crcs right now,\nwhich means we can\u0027t have a cache file bigger than the\ncrcs we can fit in the first page.  This adds a check to\nenforce that restriction.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff5714cca971848963b87d6b477c16ca8abbaa54",
      "tree": "17ee34b9b5e00804df4059503f82f6f1d94383a9",
      "parents": [
        "174ba50915b08dcfd07c8b5fb795b46a165fa09a",
        "d90c732122a1f6d0efe388a8a204f67f144b2eb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of\ngit://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into for-linus\n\nConflicts:\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "207dde8289d9b005b665cb9d8d2bb9464256101d",
      "tree": "bbe7e61bdf6221468360c31ba293d50197745acb",
      "parents": [
        "cca1c81f43e26ab60c0d1090fb90992358d69bdf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 13 14:49:23 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:16 2011 -0400"
      },
      "message": "Btrfs: check for duplicate entries in the free space cache\n\nIf there are duplicate entries in the free space cache, discard the entire cache\nand load it the old fashioned way.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.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": "0965537308ac3b267ea16e731bd73870a51c53b8",
      "tree": "7b52288b7272b2391f736dd82a313cbbaad68570",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf",
        "82d5902d9c681be37ffa9d70482907f9f0b7ec1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "message": "Merge branch \u0027ino-alloc\u0027 of git://repo.or.cz/linux-btrfs-devel into inode_numbers\n\nConflicts:\n\tfs/btrfs/free-space-cache.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2a97a9dbd86eb1ef956bdf20e05c507b32beb96",
      "tree": "756c2db8fee9c02df0e3217ea208a82b5f1d5e78",
      "parents": [
        "621496f4fd56195b7b273521f467c2945165481f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu May 05 12:44:41 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Fri May 06 12:34:03 2011 +0200"
      },
      "message": "btrfs: remove all unused functions\n\nRemove static and global declarations and/or definitions. Reduces size\nof btrfs.ko by ~3.4kB.\n\n  text    data     bss     dec     hex filename\n402081    7464     200  409745   64091 btrfs.ko.base\n398620    7144     200  405964   631cc btrfs.ko.remove-all\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "b3b4aa74b58bded927f579fff787fb6fa1c0393c",
      "tree": "30dab4ab26558992dd8b6b212bef805de11c4c29",
      "parents": [
        "ba14419264684b290f0d0b7f48d26eafb11fc0c6"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Apr 21 01:20:15 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:22 2011 +0200"
      },
      "message": "btrfs: drop unused parameter from btrfs_release_path\n\nparameter tree root it\u0027s not used since commit\n5f39d397dfbe140a14edecd4e73c34ce23c4f9ee (\"Btrfs: Create extent_buffer\ninterface for large blocksizes\")\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "62a45b60923a576170a1a0c309c240d9f40d193d",
      "tree": "f432d4b9973b977855344dbb2abd0419400d56d0",
      "parents": [
        "c704005d886cf0bc9bc3974eb009b22fe0da32c7"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 20 15:52:26 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:20 2011 +0200"
      },
      "message": "btrfs: make functions static when possible\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "edc95aec57661c8e568e18f6c3f002aefa07ebc8",
      "tree": "a3f2570fb6aa53f89eb7a453bd3435dff4c3ba8d",
      "parents": [
        "306e16ce13c0f3d4fc071b45803b5b83c2606011"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Apr 19 14:31:08 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:19 2011 +0200"
      },
      "message": "btrfs: remove nested duplicate variable declarations\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "a4f0162fd4490daf2c823c185fff79080d266a7c",
      "tree": "c2a7186103a4b31115eb10555864620a46a18ad9",
      "parents": [
        "f789b684bdb96e7ec2fce79445555d4fd55fb94c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 25 19:43:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 25 19:43:52 2011 -0400"
      },
      "message": "Btrfs: free bitmaps properly when evicting the cache\n\nIf our space cache is wrong, we do the right thing and free up everything that\nwe loaded, however we don\u0027t reset the total_bitmaps counter or the thresholds or\nanything.  So in btrfs_remove_free_space_cache make sure to call free_bitmap()\nif it\u0027s a bitmap, this will keep us from panicing when we check to make sure we\ndon\u0027t have too many bitmaps.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f789b684bdb96e7ec2fce79445555d4fd55fb94c",
      "tree": "44bde9e49f5d1d16c3d6890528ce5a9b3977fb7e",
      "parents": [
        "cfece4db110dacfd6b4b87b912c59e77e6846fc0"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 19:43:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 25 19:43:52 2011 -0400"
      },
      "message": "Btrfs: Free free_space item properly in btrfs_trim_block_group()\n\nSince commit dc89e9824464e91fa0b06267864ceabe3186fd8b, we\u0027ve changed\nto use a specific slab for alocation of free_space items.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "82d5902d9c681be37ffa9d70482907f9f0b7ec1f",
      "tree": "c9c99f0b60004ac14d09d277d3216667df09c32d",
      "parents": [
        "33345d01522f8152f99dc84a3e7a1a45707f387f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:33:24 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:11 2011 +0800"
      },
      "message": "Btrfs: Support reading/writing on disk free ino cache\n\nThis is similar to block group caching.\n\nWe dedicate a special inode in fs tree to save free ino cache.\n\nAt the very first time we create/delete a file after mount, the free ino\ncache will be loaded from disk into memory. When the fs tree is commited,\nthe cache will be written back to disk.\n\nTo keep compatibility, we check the root generation against the generation\nof the special inode when loading the cache, so the loading will fail\nif the btrfs filesystem was mounted in an older kernel before.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "0414efae7989a2183fb2cc000ab285c4c2836a00",
      "tree": "102ade7ed6383025388daee30bce7c20d3ffc345",
      "parents": [
        "581bb050941b4f220f84d3e5ed6dace3d42dd382"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:20:14 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:07 2011 +0800"
      },
      "message": "Btrfs: Make the code for reading/writing free space cache generic\n\nExtract out block group specific code from lookup_free_space_inode(),\ncreate_free_space_inode(), load_free_space_cache() and\nbtrfs_write_out_cache(), so the code can be used to read/write\nfree ino cache.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "581bb050941b4f220f84d3e5ed6dace3d42dd382",
      "tree": "5ebd56af5eb3612f508419b188dfc18e959e7c94",
      "parents": [
        "34d52cb6c50b5a43901709998f59fb1c5a43dc4a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:06:11 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:04 2011 +0800"
      },
      "message": "Btrfs: Cache free inode numbers in memory\n\nCurrently btrfs stores the highest objectid of the fs tree, and it always\nreturns (highest+1) inode number when we create a file, so inode numbers\nwon\u0027t be reclaimed when we delete files, so we\u0027ll run out of inode numbers\nas we keep create/delete files in 32bits machines.\n\nThis fixes it, and it works similarly to how we cache free space in block\ncgroups.\n\nWe start a kernel thread to read the file tree. By scanning inode items,\nwe know which chunks of inode numbers are free, and we cache them in\nan rb-tree.\n\nBecause we are searching the commit root, we have to carefully handle the\ncross-transaction case.\n\nThe rb-tree is a hybrid extent+bitmap tree, so if we have too many small\nchunks of inode numbers, we\u0027ll use bitmaps. Initially we allow 16K ram\nof extents, and a bitmap will be used if we exceed this threshold. The\nextents threshold is adjusted in runtime.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "34d52cb6c50b5a43901709998f59fb1c5a43dc4a",
      "tree": "151c61795cceefc97e48e8209dc36303274fbe10",
      "parents": [
        "f38b6e754d8cc4605ac21d9c1094d569d88b163b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Mar 29 13:46:06 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:03 2011 +0800"
      },
      "message": "Btrfs: Make free space cache code generic\n\nSo we can re-use the code to cache free inode numbers.\n\nThe change is quite straightforward. Two new structures are introduced.\n\n- struct btrfs_free_space_ctl\n\n  We move those variables that are used for caching free space from\n  struct btrfs_block_group_cache to this new struct.\n\n- struct btrfs_free_space_op\n\n  We do block group specific work (e.g. calculation of extents threshold)\n  through functions registered in this struct.\n\nAnd then we can remove references to struct btrfs_block_group_cache.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "f38b6e754d8cc4605ac21d9c1094d569d88b163b",
      "tree": "7aec7cc9a9d68f1e7ce97771500c63151a1b2319",
      "parents": [
        "92c423118105e1c8c1587367a26eeb3277bda89a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 14 13:40:51 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:01 2011 +0800"
      },
      "message": "Btrfs: Use bitmap_set/clear()\n\nNo functional change.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "92c423118105e1c8c1587367a26eeb3277bda89a",
      "tree": "fff00ab60c0e2b82b0ab5a997ce311e13390bfa9",
      "parents": [
        "f65647c29b14f5a32ff6f3237b0ef3b375ed5a79"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 02 16:50:21 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:45:59 2011 +0800"
      },
      "message": "Btrfs: Remove unused btrfs_block_group_free_space()\n\nWe\u0027ve already recorded the value in block_group-\u003efrees_space.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "f65647c29b14f5a32ff6f3237b0ef3b375ed5a79",
      "tree": "4ec6b2a20d37f5ce4098cf77f3eb9606e3f241ba",
      "parents": [
        "6d74119f1a3efad9dc7f79a16c201242324b731f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 18 08:55:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 18 08:55:34 2011 -0400"
      },
      "message": "Btrfs: fix free space cache leak\n\nThe free space caching code was recently reworked to\ncache all the pages it needed instead of using find_get_page everywhere.\n\nOne loop was missed though, so it ended up leaking pages.  This fixes\nit to use our page array instead of find_get_page.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "be1a12a0dfed06cf1e62e35bf91620dc610a451a",
      "tree": "f2cd5976aae8a466b926f9fd7c0e10a082b5a11a",
      "parents": [
        "c9ddec74aa950a220cc4caa5215cfc5d886050b7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 06 13:05:22 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Apr 08 13:00:27 2011 -0400"
      },
      "message": "Btrfs: deal with the case that we run out of space in the cache\n\nCurrently we don\u0027t handle running out of space in the cache, so to fix this we\nkeep track of how far in the cache we are.  Then we only dirty the pages if we\nsuccessfully modify all of them, otherwise if we have an error or run out of\nspace we can just drop them and not worry about the vm writing them out.\nThanks,\n\nTested-by Johannes Hirte \u003cjohannes.hirte@fem.tu-ilmenau.de\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "43be21462d8c263e2449b52b23326232fd710bee",
      "tree": "096a8cf240ffa7aa83625245ccdba08970e46612",
      "parents": [
        "08fe4db170b4193603d9d31f40ebaf652d07ac9c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Apr 01 14:55:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:20:24 2011 -0400"
      },
      "message": "Btrfs: fix free space cache when there are pinned extents and clusters V2\n\nI noticed a huge problem with the free space cache that was presenting\nas an early ENOSPC.  Turns out when writing the free space cache out I\nforgot to take into account pinned extents and more importantly\nclusters.  This would result in us leaking free space everytime we\nunmounted the filesystem and remounted it.\n\nI fix this by making sure to check and see if the current block group\nhas a cluster and writing out any entries that are in the cluster to the\ncache, as well as writing any pinned extents we currently have to the\ncache since those will be available for us to use the next time the fs\nmounts.\n\nThis patch also adds a check to the end of load_free_space_cache to make\nsure we got the right amount of free space cache, and if not make sure\nto clear the cache and re-cache the old fashioned way.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "adae52b94e18afa1f84fab67df2a8a872c2f5533",
      "tree": "fb9259b9eac14ac950d127faf1788392081010b0",
      "parents": [
        "6e8df2ae89ab37730c0062782f844c66ecfc97a7"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Mar 31 09:43:23 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:43 2011 -0400"
      },
      "message": "btrfs: clear __GFP_FS flag in the space cache inode\n\nthe object id of the space cache inode\u0027s key is allocated from the relative\nroot, just like the regular file. So we can\u0027t identify space cache inode by\nchecking the object id of the inode\u0027s key, and we have to clear __GFP_FS flag\nat the time we look up the space cache inode.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7039b1d5c32241f87a513e33120db36bf30264d",
      "tree": "e911bc79c795fceb3e9a618d8f18571c2a776307",
      "parents": [
        "5378e60734f5b7bfe1b43dc191aaf6131c1befe7"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Mar 24 10:24:28 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:47 2011 -0400"
      },
      "message": "Btrfs: add btrfs_trim_fs() to handle FITRIM\n\nWe take an free extent out from allocator, trim it, then put it back,\nbut before we trim the block group, we should make sure the block group is\ncached, so plus a little change to make cache_block_group() run without a\ntransaction.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4e69b598f6cfb0940b75abf7e179d6020e94ad1e",
      "tree": "ae14c7078bd7540200ffe32726e33dd8ff64f5d5",
      "parents": [
        "32cb0840ce8e13901fe71a9a8e834a531802ffc4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 21 10:11:24 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 25 19:08:08 2011 -0400"
      },
      "message": "Btrfs: cleanup how we setup free space clusters\n\nThis patch makes the free space cluster refilling code a little easier to\nunderstand, and fixes some things with the bitmap part of it.  Currently we\neither want to refill a cluster with\n\n1) All normal extent entries (those without bitmaps)\n2) A bitmap entry with enough space\n\nThe current code has this ugly jump around logic that will first try and fill up\nthe cluster with extent entries and then if it can\u0027t do that it will try and\nfind a bitmap to use.  So instead split this out into two functions, one that\ntries to find only normal entries, and one that tries to find bitmaps.\n\nThis also fixes a suboptimal thing we would do with bitmaps.  If we used a\nbitmap we would just tell the cluster that we were pointing at a bitmap and it\nwould do the tree search in the block group for that entry every time we tried\nto make an allocation.  Instead of doing that now we just add it to the clusters\ngroup.\n\nI tested this with my ENOSPC tests and xfstests and it survived.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "32cb0840ce8e13901fe71a9a8e834a531802ffc4",
      "tree": "397b22d872a7074fc64b13b507354ce248eb298e",
      "parents": [
        "d0a365e84a886ce6b5b7f7a76be0bb24934ec8f0"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Mar 18 16:16:21 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 21 10:26:03 2011 -0400"
      },
      "message": "Btrfs: don\u0027t be as aggressive about using bitmaps\n\nWe have been creating bitmaps for small extents unconditionally forever.  This\nwas great when testing to make sure the bitmap stuff was working, but is\noverkill normally.  So instead of always adding small chunks of free space to\nbitmaps, only start doing it if we go past half of our extent threshold.  This\nwill keeps us from creating a bitmap for just one small free extent at the front\nof the block group, and will make the allocator a little faster as a result.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d0a365e84a886ce6b5b7f7a76be0bb24934ec8f0",
      "tree": "5e46221ccd86bb44a1fec70fb7ec7e1801601164",
      "parents": [
        "7d0d2e8e6b6f7da221a25238cf490a095c8c4788"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Mar 18 15:27:43 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 21 10:25:56 2011 -0400"
      },
      "message": "Btrfs: deal with min_bytes appropriately when looking for a cluster\n\nWe do all this fun stuff with min_bytes, but either don\u0027t use it in the case of\njust normal extents, or use it completely wrong in the case of bitmaps.  So fix\nthis for both cases\n\n1) In the extent case, stop looking for space with window_free \u003e\u003d min_bytes\ninstead of bytes + empty_size.\n\n2) In the bitmap case, we were looking for streches of free space that was at\nleast min_bytes in size, which was not right at all.  So instead search for\nstretches of free space that are at least bytes in size (this will make a\ndifference when we have \u003e page size blocks) and then only search for min_bytes\namount of free space.\n\nThanks,\n\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7d0d2e8e6b6f7da221a25238cf490a095c8c4788",
      "tree": "a2bce1c429f9efb9d3cc41390afa73839787c96c",
      "parents": [
        "22a94d44bd6876a90630338229da6c0436d46593"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Mar 18 15:13:42 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 21 10:25:48 2011 -0400"
      },
      "message": "Btrfs: check free space in block group before searching for a cluster\n\nThe free space cluster stuff is heavy duty, so there is no sense in going\nthrough the entire song and dance if there isn\u0027t enough space in the block group\nto begin with.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "dc89e9824464e91fa0b06267864ceabe3186fd8b",
      "tree": "82952195464518dce48cb613c74d2326f228669b",
      "parents": [
        "57a45ced94fe48a701361d64230fc16eefa189dd"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 28 17:05:48 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:20 2011 -0400"
      },
      "message": "Btrfs: use a slab for the free space entries\n\nSince we alloc/free free space entries a whole lot, lets use a slab to keep\ntrack of them.  This makes some of my tests slightly faster.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "13dbc08987f25d9dba488a34b44b43e3844b027c",
      "tree": "f1ccabbf2c8bc676be0dacacc3da86c62cf1b19f",
      "parents": [
        "98d5dc13e7e74b77ca3b4c3cbded9f48d2dbbbb7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Feb 03 02:39:52 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 06 07:13:12 2011 -0500"
      },
      "message": "Btrfs: make sure search_bitmap finds something in remove_from_bitmap\n\nWhen we\u0027re cleaning up the tree log we need to be able to remove free space from\nthe block group.  The problem is if that free space spans bitmaps we would not\nfind the space since we\u0027re looking for too many bytes.  So make sure the amount\nof bytes we search for is limited to either the number of bytes we want, or the\nnumber of bytes left in the bitmap.  This was tested by a user who was hitting\nthe BUG() after search_bitmap.  With this patch he can now mount his fs.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f333adb5d64bc1c4d6099072fc341c3c8f84e0cf",
      "tree": "abf1c214113a9c2dec3d42a9e0ee14e1863fe0a1",
      "parents": [
        "120d66eec0dcb966fbd03f743598b2ff2513436b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:57:39 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:57 2011 +0800"
      },
      "message": "btrfs: Check mergeable free space when removing a cluster\n\nAfter returing extents from a cluster to the block group, some\nextents in the block group may be mergeable.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "120d66eec0dcb966fbd03f743598b2ff2513436b",
      "tree": "fc2b1d1e9555f2f9de847ba4134d827613c66e73",
      "parents": [
        "5e71b5d5ec07e4b3fb4c78c4e4b108ff667f123f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:56:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:50 2011 +0800"
      },
      "message": "btrfs: Add a helper try_merge_free_space()\n\nWhen adding a new extent, we\u0027ll firstly see if we can merge\nthis extent to the left or/and right extent. Extract this as\na helper try_merge_free_space().\n\nAs a side effect, we fix a small bug that if the new extent\nhas non-bitmap left entry but is unmergeble, we\u0027ll directly\nlink the extent without trying to drop it into bitmap.\n\nThis also prepares for the next patch.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "5e71b5d5ec07e4b3fb4c78c4e4b108ff667f123f",
      "tree": "4fdb07b18c010f132d10b074bff60226b6517a08",
      "parents": [
        "70b7da304f9f9bbf1566085155895e32e775a745"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:55:34 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:46 2011 +0800"
      },
      "message": "btrfs: Update stats when allocating from a cluster\n\nWhen allocating extent entry from a cluster, we should update\nthe free_space and free_extents fields of the block group.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "70b7da304f9f9bbf1566085155895e32e775a745",
      "tree": "74c6de5ac85b7944292f2486b25946754d57989d",
      "parents": [
        "edf6e2d1ddbac7f326b34a27adbca71ece53ccce"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:51:45 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:41 2011 +0800"
      },
      "message": "btrfs: Free fully occupied bitmap in cluster\n\nIf there\u0027s no more free space in a bitmap, we should free it.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "edf6e2d1ddbac7f326b34a27adbca71ece53ccce",
      "tree": "71df1880c22a88a5f81560ab574bb19f61c83eb9",
      "parents": [
        "8eb2d829ffea3677c21bd038f19e5d8ca6b43e36"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:50:07 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:37 2011 +0800"
      },
      "message": "btrfs: Add helper function free_bitmap()\n\nRemove some duplicated code.\n\nThis prepares for the next patch.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "8eb2d829ffea3677c21bd038f19e5d8ca6b43e36",
      "tree": "fc96e4d61125b703df38ee133a3d031f1c85d4a2",
      "parents": [
        "65e5341b9a0c39767ae1fecc727d70eda0dd6d83"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 14:48:01 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:04:31 2011 +0800"
      },
      "message": "btrfs: Fix threshold calculation for block groups smaller than 1GB\n\nIf a block group is smaller than 1GB, the extent entry threadhold\ncalculation will always set the threshold to 0.\n\nSo as free space gets fragmented, btrfs will switch to use bitmap\nto manage free space, but then will never switch back to extents\ndue to this bug.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "2b20982e3154266106573beac2a4d4ba57a2789a",
      "tree": "13539703ccb713385b4c7ff7eac508bb8f3b1e18",
      "parents": [
        "955256f2c3e25c94ad373c43fbc38d2ac8af2a71"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 03 13:17:53 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:12 2010 -0500"
      },
      "message": "Btrfs: deal with space cache errors better\n\nCurrently if the space cache inode generation number doesn\u0027t match the\ngeneration number in the space cache header we will just fail to load the space\ncache, but we won\u0027t mark the space cache as an error, so we\u0027ll keep getting that\nerror each time somebody tries to cache that block group until we actually clear\nthe thing.  Fix this by marking the space cache as having an error so we only\nget the message once.  This patch also makes it so that we don\u0027t try and setup\nspace cache for a block group that isn\u0027t cached, since we won\u0027t be able to write\nit out anyway.  None of these problems are actual problems, they are just\nannoying and sub-optimal.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "88c2ba3b069f1e0f4694124d02985fa7620a19f1",
      "tree": "e41859aca299e14e2658d75e2bf1ef2aea9ab077",
      "parents": [
        "67377734fd24c32cbdfeb697c2e2bd7fed519e75"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Sep 21 14:21:34 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:36 2010 -0400"
      },
      "message": "Btrfs: Add a clear_cache mount option\n\nIf something goes wrong with the free space cache we need a way to make sure\nit\u0027s not loaded on mount and that it\u0027s cleared for everybody.  When you pass the\nclear_cache option it will make it so all block groups are setup to be cleared,\nwhich keeps them from being loaded and then they will be truncated when the\ntransaction is committed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9d66e233c7042da27ec699453770f41e567a0442",
      "tree": "27fd70c6c07cb96a48123bdec07e9c2feed90f13",
      "parents": [
        "0cb59c9953171e9adf6da8142a5c85ceb77bb60d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Aug 25 16:54:15 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:35 2010 -0400"
      },
      "message": "Btrfs: load free space cache if it exists\n\nThis patch actually loads the free space cache if it exists.  The only thing\nthat really changes here is that we need to cache the block group if we\u0027re going\nto remove an extent from it.  Previously we did not do this since the caching\nkthread would pick it up.  With the on disk cache we don\u0027t have this luxury so\nwe need to make sure we read the on disk cache in first, and then remove the\nextent, that way when the extent is unpinned the free space is added to the\nblock group.  This has been tested with all sorts of things.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0cb59c9953171e9adf6da8142a5c85ceb77bb60d",
      "tree": "f72af47fa18815491814290a1b4907082bd9316d",
      "parents": [
        "0af3d00bad38d3bb9912a60928ad0669f17bdb76"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 02 12:14:14 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:29 2010 -0400"
      },
      "message": "Btrfs: write out free space cache\n\nThis is a simple bit, just dump the free space cache out to our preallocated\ninode when we\u0027re writing out dirty block groups.  There are a bunch of changes\nin inode.c in order to account for special cases.  Mostly when we\u0027re doing the\nwriteout we\u0027re holding trans_mutex, so we need to use the nolock transacation\nfunctions.  Also we can\u0027t do asynchronous completions since the async thread\ncould be blocked on already completed IO waiting for the transaction lock.  This\nhas been tested with xfstests and btrfs filesystem balance, as well as my ENOSPC\ntests.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    }
  ],
  "next": "0af3d00bad38d3bb9912a60928ad0669f17bdb76"
}
