)]}'
{
  "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": "e41f941a23115e84a8550b3d901a13a14b2edc2f",
      "tree": "4f9d029be67bb3be91b5b7c5a28cf3e5c1508e7a",
      "parents": [
        "c3b2da314834499f34cba94f7053e55f6d6f92d8"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 26 09:46:47 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 12:07:52 2012 -0400"
      },
      "message": "Btrfs: move over to use -\u003eupdate_time\n\nBtrfs had been doing it\u0027s own file_update_time so we could catch ENOSPC\nproperly, so just update our btrfs_update_time to work with the new stuff and\nthen we\u0027ll be fancy later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "51eab603f5c86dd1eae4c525df3e7f7eeab401d6",
      "tree": "e7a8c6214b072db126cca62d39008b3620134798",
      "parents": [
        "419f4319495043a9507ac3e616be9ca60af09744",
        "1e20932a23578bb1ec59107843574e259b96193f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:37:31 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 08:37:31 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs updates from Chris Mason:\n \"This includes a fairly large change from Josef around data writeback\n  completion.  Before, the writeback wasn\u0027t completed until the metadata\n  insertions for the extent were done, and this made for fairly large\n  latency spikes on the last page of each ordered extent.\n\n  We already had a separate mechanism for tracking pending metadata\n  insertions, so Josef just needed to tweak things a little to end\n  writeback earlier on the page.  Overall it makes us much friendly to\n  memory reclaim and lowers latencies quite a lot for synchronous IO.\n\n  Jan Schmidt has finished some background work required to track btree\n  blocks as they go through changes in ownership.  It\u0027s the missing\n  piece he needed for both btrfs send/receive and subvolume quotas.\n  Neither of those are ready yet, but the new tracking code is included\n  here.  Most of the time, the new code is off.  It is only used by\n  scrub and other backref walkers.\n\n  Stefan Behrens has added io failure tracking.  This includes counters\n  for which drives are causing the most trouble so the admin (or an\n  automated tool) can choose to kick them out.  We\u0027re tracking IO\n  errors, crc errors, and generation checks we do on each metadata\n  block.\n\n  RAID5/6 did miss the cut this time because I\u0027m having trouble with\n  corruptions.  I\u0027ll nail it down next week and post as a beta testing\n  before 3.6\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (58 commits)\n  Btrfs: fix tree mod log rewinded level and rewinding of moved keys\n  Btrfs: fix tree mod log del_ptr\n  Btrfs: add tree_mod_dont_log helper\n  Btrfs: add missing spin_lock for insertion into tree mod log\n  Btrfs: add inodes before dropping the extent lock in find_all_leafs\n  Btrfs: use delayed ref sequence numbers for all fs-tree updates\n  Btrfs: fix false positive in check-integrity on unmount\n  Btrfs: fix runtime warning in check-integrity check data mode\n  Btrfs: set ioprio of scrub readahead to idle\n  Btrfs: fix return code in drop_objectid_items\n  Btrfs: check to see if the inode is in the log before fsyncing\n  Btrfs: return value of btrfs_read_buffer is checked correctly\n  Btrfs: read device stats on mount, write modified ones during commit\n  Btrfs: add ioctl to get and reset the device stats\n  Btrfs: add device counters for detected IO and checksum errors\n  btrfs: Drop unused function btrfs_abort_devices()\n  Btrfs: fix the same inode id problem when doing auto defragment\n  Btrfs: fall back to non-inline if we don\u0027t have enough space\n  Btrfs: fix how we deal with the orphan block rsv\n  Btrfs: convert the inode bit field to use the actual bit operations\n  ...\n"
    },
    {
      "commit": "2adcac1a7331d93a17285804819caa96070b231f",
      "tree": "d5da1421dc605b64d34bc0cab4ae91de086499fa",
      "parents": [
        "8a35d95ff4680a456d3ce47df9638f33d4f54f20"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 23 16:10:14 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:38 2012 -0400"
      },
      "message": "Btrfs: fall back to non-inline if we don\u0027t have enough space\n\nIf cow_file_range_inline fails with ENOSPC we abort the transaction which\nisn\u0027t very nice.  This really shouldn\u0027t be happening anyways but there\u0027s no\nsense in making it a horrible error when we can easily just go allocate\nnormal data space for this stuff.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8a35d95ff4680a456d3ce47df9638f33d4f54f20",
      "tree": "8adb116747b84209406d29767b56e2a6ade2f2f4",
      "parents": [
        "72ac3c0d7921f943d92d1ef42a549fb52e56817d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 23 14:26:42 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:37 2012 -0400"
      },
      "message": "Btrfs: fix how we deal with the orphan block rsv\n\nCeph was hitting this race where we would remove an inode from the per-root\norphan list before we would release the space we had reserved for the inode.\nWe actually don\u0027t need a list or anything, we just need to make sure the\nroot doesn\u0027t try to free up the orphan reserve until after the inodes have\nreleased their reservations.  So use an atomic counter instead of a list on\nthe root and only decrement the counter after we\u0027ve released our\nreservation.  I\u0027ve tested this as well as several others and we no longer\nsee the warnings that you would see while running ceph.  Thanks,\nBtrfs: fix how we deal with the orphan block rsv\n\nCeph was hitting this race where we would remove an inode from the per-root\norphan list before we would release the space we had reserved for the inode.\nWe actually don\u0027t need a list or anything, we just need to make sure the\nroot doesn\u0027t try to free up the orphan reserve until after the inodes have\nreleased their reservations.  So use an atomic counter instead of a list on\nthe root and only decrement the counter after we\u0027ve released our\nreservation.  I\u0027ve tested this as well as several others and we no longer\nsee the warnings that you would see while running ceph.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "72ac3c0d7921f943d92d1ef42a549fb52e56817d",
      "tree": "c8825a2b3848f201a2b67b3a2ec0aaf9669f9ed3",
      "parents": [
        "cd023e7b17fe86c530475da210b3348421c40e5f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 23 14:13:11 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:36 2012 -0400"
      },
      "message": "Btrfs: convert the inode bit field to use the actual bit operations\n\nMiao pointed this out while I was working on an orphan problem that messing\nwith a bitfield where different ranges are protected by different locks\ndoesn\u0027t work out right.  Turns out we\u0027ve been doing this forever where we\nhave different parts of the bit field protected by either no lock at all or\ndifferent locks which could cause all sorts of weird problems including the\nissue I was hitting.  So instead make a runtime_flags thing that we use the\nnormal bit operations on that are all atomic so we can keep having our\nno/different locking for the different flags and then make force_compress\nit\u0027s own thing so it can be treated normally.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5fd02043553b02867b29de1ac9fff2ec16b84def",
      "tree": "f378b1042b4fbd366185b8b12b082bce4fd4fac4",
      "parents": [
        "4e89915220e2f1341c757b610d0f0c3821f3a65f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 02 14:00:54 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:33 2012 -0400"
      },
      "message": "Btrfs: finish ordered extents in their own thread\n\nWe noticed that the ordered extent completion doesn\u0027t really rely on having\na page and that it could be done independantly of ending the writeback on a\npage.  This patch makes us not do the threaded endio stuff for normal\nbuffered writes and direct writes so we can end page writeback as soon as\npossible (in irq context) and only start threads to do the ordered work when\nit is actually done.  Compression needs to be reworked some to take\nadvantage of this as well, but atm it has to do a find_get_page in its endio\nhandler so it must be done in its own thread.  This makes direct writes\nquite a bit faster.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0c4d2d95d06e920e0c61707e62c7fffc9c57f63a",
      "tree": "5d6fa736c7fea0a0afd60eda8e6e0586df6fb606",
      "parents": [
        "a25c75d5ad04df0a7abd09585231b4021a91a358"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Apr 05 15:03:02 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:27 2012 -0400"
      },
      "message": "Btrfs: use i_version instead of our own sequence\n\nWe\u0027ve been keeping around the inode sequence number in hopes that somebody\nwould use it, but nobody uses it and people actually use i_version which\nserves the same purpose, so use i_version where we used the incore inode\u0027s\nsequence number and that way the sequence is updated properly across the\nboard, and not just in file write.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "f7b006931751f029620ad2f8310ac7a1484fbdb4",
      "tree": "71120f4c4c51752902317fbf853e3b0316c2adb0",
      "parents": [
        "b990f9b3cb068578b8aefd3a34f8c8555661ef95",
        "dc7fdde39e4962b1a88741f7eba2a6b3be1285d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 09:30:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Apr 28 09:30:07 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes from Chris Mason:\n \"This has our collection of bug fixes.  I missed the last rc because I\n  thought our patches were making NFS crash during my xfs test runs.\n  Turns out it was an NFS client bug fixed by someone else while I tried\n  to bisect it.\n\n  All of these fixes are small, but some are fairly high impact.  The\n  biggest are fixes for our mount -o remount handling, a deadlock due to\n  GFP_KERNEL allocations in readdir, and a RAID10 error handling bug.\n\n  This was tested against both 3.3 and Linus\u0027 master as of this morning.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (26 commits)\n  Btrfs: reduce lock contention during extent insertion\n  Btrfs: avoid deadlocks from GFP_KERNEL allocations during btrfs_real_readdir\n  Btrfs: Fix space checking during fs resize\n  Btrfs: fix block_rsv and space_info lock ordering\n  Btrfs: Prevent root_list corruption\n  Btrfs: fix repair code for RAID10\n  Btrfs: do not start delalloc inodes during sync\n  Btrfs: fix that check_int_data mount option was ignored\n  Btrfs: don\u0027t count CRC or header errors twice while scrubbing\n  Btrfs: fix btrfs_ioctl_dev_info() crash on missing device\n  btrfs: don\u0027t return EINTR\n  Btrfs: double unlock bug in error handling\n  Btrfs: always store the mirror we read the eb from\n  fs/btrfs/volumes.c: add missing free_fs_devices\n  btrfs: fix early abort in \u0027remount\u0027\n  Btrfs: fix max chunk size check in chunk allocator\n  Btrfs: add missing read locks in backref.c\n  Btrfs: don\u0027t call free_extent_buffer twice in iterate_irefs\n  Btrfs: Make free_ipath() deal gracefully with NULL pointers\n  Btrfs: avoid possible use-after-free in clear_extent_bit()\n  ...\n"
    },
    {
      "commit": "fede766f28dd766d4e8feb321fdb19edb21ef6fb",
      "tree": "86e59f6bf94ad77c2fa1b232faa8f8b63b8675cb",
      "parents": [
        "7654b72417e10e294563496e25211200f9b8b6d3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 14:23:22 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 14:23:22 2012 -0400"
      },
      "message": "Btrfs: avoid deadlocks from GFP_KERNEL allocations during btrfs_real_readdir\n\nBtrfs has an optimization where it will preallocate dentries during\nreaddir to fill in enough information to open the inode without an extra\nlookup.\n\nBut, we\u0027re calling d_alloc, which is doing GFP_KERNEL allocations, and\nthat leads to deadlocks because our readdir code has tree locks held.\n\nFor now, disable this optimization.  We\u0027ll fix the gfp mask in the next\nmerge window.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5cf1ab56133ad7b712673c071b439d4a555a2d1e",
      "tree": "c7b301296750707f47487f508398f1baec81f48b",
      "parents": [
        "48d282326b3ce5f435835f5fb0e3231c399f4f9a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 16 09:42:26 2012 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:30 2012 +0200"
      },
      "message": "Btrfs: always store the mirror we read the eb from\n\nA user reported a panic where we were trying to fix a bad mirror but the\nmirror number we were giving was 0, which is invalid.  This is because we\ndon\u0027t do the transid verification until after the read, so as far as the\nread code is concerned the read was a success.  So instead store the mirror\nwe read from so that if there is some failure post read we know which mirror\nto try next and which mirror needs to be fixed if we find a good copy of the\nblock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8c9c2bf7a3c4f7e9d158c0be9c49f372fb943ad2",
      "tree": "6c17b4db9b39cb8eb950c21377f453df18f467c3",
      "parents": [
        "848cce0d4102b5b4b26b0987b43e1919d462afe2"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat Feb 25 09:09:30 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:12:44 2012 +0200"
      },
      "message": "btrfs: fix race in reada\n\nWhen inserting into the radix tree returns EEXIST, get the existing\nentry without giving up the spinlock in between.\nThere was a race for both the zones trees and the extent tree.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "848cce0d4102b5b4b26b0987b43e1919d462afe2",
      "tree": "92f2be7324929c9b213c1fcd616b11cc1a479d20",
      "parents": [
        "d53ba47484ed6245e640ee4bfe9d21e9bfc15765"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Feb 21 17:04:28 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:12:44 2012 +0200"
      },
      "message": "Btrfs: avoid setting -\u003ed_op twice\n\nFollow those instructions, and you\u0027ll trigger a warning in the\nbeginning of d_set_d_op():\n\n  # mkfs.btrfs /dev/loop3\n  # mount /dev/loop3 /mnt\n  # btrfs sub create /mnt/sub\n  # btrfs sub snap /mnt /mnt/snap\n  # touch /mnt/snap/sub\n  touch: cannot touch `tmp\u0027: Permission denied\n\n__d_alloc() set d_op to sb-\u003es_d_op (btrfs_dentry_operations), and\nthen simple_lookup() reset it to simple_dentry_operations, which\ntriggered the warning.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.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": "4cb13e5d6ecc47b91b24a35f8fbc2c9f33d075fe",
      "tree": "c1654f1b2f029c8cfd5385568b37f90a0b47f3c4",
      "parents": [
        "1f12bd063285b059cb63315d1424dae1ddd87a64"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: fix recursive defragment with autodefrag option\n\n$ mkfs.btrfs disk\n$ mount disk /mnt -o autodefrag\n$ dd if\u003d/dev/zero of\u003d/mnt/foobar bs\u003d4k count\u003d10 2\u003e/dev/null \u0026\u0026 sync\n$ for i in `seq 9 -2 0`; do dd if\u003d/dev/zero of\u003d/mnt/foobar bs\u003d4k count\u003d1 \\\n  seek\u003d$i conv\u003dnotrunc 2\u003e /dev/null; done \u0026\u0026 sync\n\nthen we\u0027ll get to defrag \"foobar\" again and again.\nSo does option \"-o autodefrag,compress\".\n\nReasons:\nWhen the cleaner kthread gets to fetch inodes from the defrag tree and defrag\nthem, it will dirty pages and submit them, this will comes to another DATA COW\nwhere the processing inode will be inserted to the defrag tree again.\n\nThis patch sets a rule for COW code, i.e. insert an inode when we\u0027re really\ngoing to make some defragments.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1d4284bd6e8d7dd1d5521a6747bdb6dc1caf0225",
      "tree": "a7dde6312ec24eb6368cad7a3efedbf368a5a70c",
      "parents": [
        "b5d67f64f9bc656970dacba245410f0faedad18e",
        "65139ed99234d8505948cdb7a835452eb5c191f9"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:31:37 2012 -0400"
      },
      "message": "Merge branch \u0027error-handling\u0027 into for-linus\n\nConflicts:\n\tfs/btrfs/ctree.c\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/inode.c\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b32f4bbb423f02acee6d43cd442f5f0775db7e0",
      "tree": "1963e5420071e70274bf77c05373dabd43bac675",
      "parents": [
        "5df4235ea15bd39f441ef334d8329b3d46b2cc57"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Mar 13 09:38:00 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 17:04:23 2012 -0400"
      },
      "message": "Btrfs: ensure an entire eb is written at once\n\nThis patch simplifies how we track our extent buffers.  Previously we could exit\nwritepages with only having written half of an extent buffer, which meant we had\nto track the state of the pages and the state of the extent buffers differently.\nNow we only read in entire extent buffers and write out entire extent buffers,\nthis allows us to simply set bits in our bflags to indicate the state of the eb\nand we no longer have to do things like track uptodate with our iotree.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "81c9ad237c604adec79fd4d4034264c6669e0ab3",
      "tree": "673fe5a1c491d43fae6f4309aa699b4e328d534e",
      "parents": [
        "285ff5af6ce358e73f53b55c9efadd4335f4c2ff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jan 18 10:56:06 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 26 14:42:51 2012 -0400"
      },
      "message": "Btrfs: remove search_start and search_end from find_free_extent and callers\n\nWe have been passing nothing but (u64)-1 to find_free_extent for search_end in\nall of the callers, so it\u0027s completely useless, and we\u0027ve always been passing 0\nin as search_start, so just remove them as function arguments and move\nsearch_start into find_free_extent.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "ce598979be6f83549c90f42ba522a19a33727611",
      "tree": "ee3cb422fb05012b7c5ff52be720a6d68f97de03",
      "parents": [
        "2c536799f1bde905bbacf7af3aa6be3f4de66005"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 26 11:32:23 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:36 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON errors from btrfs_create_subvol_root()\n\nThis is called from only one place - create_subvol() which passes errors\nsafely back out to it\u0027s caller, btrfs_mksubvol where they are handled.\n\nAdditionally, btrfs_create_subvol_root() itself bug\u0027s needlessly from error\nreturn of btrfs_update_inode(). Since create_subvol() was fixed to catch\nerrors we can bubble this one up too.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "3fbe5c02ae5a59053d779392b9a12aa8f6d6198e",
      "tree": "39b3383401c031d61b6d4cf625730511a5fe7dae",
      "parents": [
        "d0082371cf086e0ba2bbd0367b2c9920532df24f"
      ],
      "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: split extent_state ops\n\n set_extent_bit can do exclusive locking but only when called by lock_extent*,\n\n Drop the exclusive bits argument except when called by lock_extent.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "d0082371cf086e0ba2bbd0367b2c9920532df24f",
      "tree": "4ae3fb6565f36fd606ab6e4b83d489e66b3b86d7",
      "parents": [
        "143bede527b054a271053f41bfaca2b57baa9408"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: drop gfp_t from lock_extent\n\n lock_extent and unlock_extent are always called with GFP_NOFS, drop the\n argument and use GFP_NOFS consistently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "355808c296c6923db6705f43639969a80b16d15d",
      "tree": "c8f7e1877935fcbfdb0937fea7cd2b29dc474f71",
      "parents": [
        "3444a97255de907f32562741fb6d104620b9fce3"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:14 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: -\u003esubmit_bio_hook error push-up\n\nThis pushes failures from the submit_bio_hook callbacks,\nbtrfs_submit_bio_hook and btree_submit_bio_hook into the callers, including\ncallers of submit_one_bio where it catches the failures with BUG_ON.\n\nIt also pushes up through the -\u003ereadpage_io_failed_hook to\nend_bio_extent_writepage where the error is already caught with BUG_ON.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "3444a97255de907f32562741fb6d104620b9fce3",
      "tree": "6ef2b2cb582a6331e30175ce0d4da7503059f88f",
      "parents": [
        "0417341e6bd93e2a2ceac0e57409706803b335e5"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:13 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:33 2012 +0100"
      },
      "message": "btrfs: Factor out tree-\u003eops-\u003emerge_bio_hook call\n\nIn submit_extent_page, there\u0027s a visually noisy if statement that, in\nthe midst of other conditions, does the tree dependency for tree-\u003eops\nand tree-\u003eops-\u003emerge_bio_hook before calling it, and then another\ncondition afterwards. If an error is returned from merge_bio_hook,\nthere\u0027s no way to catch it. It\u0027s considered a routine \"1\" return\nvalue instead of a failure.\n\nThis patch factors out the dependency check into a new local merge_bio\nroutine and BUG\u0027s on an error. The if statement is less noisy as a side-\neffect.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "0417341e6bd93e2a2ceac0e57409706803b335e5",
      "tree": "718f160e8b4edaa31d1747b6996fc60623903227",
      "parents": [
        "b45a9d8b48e5ce534bd222007c43cbf374544f0b"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Oct 03 23:23:12 2011 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:33 2012 +0100"
      },
      "message": "btrfs: Simplify btrfs_submit_bio_hook\n\nbtrfs_submit_bio_hook currently calls btrfs_bio_wq_end_io in either case\nof an if statement that determines one of the arguments.\n\nThis patch moves the function call outside of the if statement and uses it\nto only determine the different argument. This allows us to catch an\nerror in one place in a more visually obvious way.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "7ac687d9e047b3fa335f04e18c7188db6a170334",
      "tree": "5f17ea504a2185070b75076ea0108d88b96309c3",
      "parents": [
        "e8e3c3d66fd9d1ee2250f68d778cc48c1346d228"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:28 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:21 2012 +0800"
      },
      "message": "btrfs: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "855a85f704026d5fe7de94fb1b765fe03404507f",
      "tree": "553817c0f7230e104623dc7e8a900bbbcc881d3e",
      "parents": [
        "ee3253241a928f6c5c40960629d7071eb6a4b23c",
        "e77266e4c4be6f9dc91bf688bce015a8babd5fe0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nQuoth Chris:\n \"This is later than I wanted because I got backed up running through\n  btrfs bugs from the Oracle QA teams.  But they are all bug fixes that\n  we\u0027ve queued and tested since rc1.\n\n  Nothing in particular stands out, this just reflects bug fixing and QA\n  done in parallel by all the btrfs developers.  The most user visible\n  of these is:\n\n    Btrfs: clear the extent uptodate bits during parent transid failures\n\n  Because that helps deal with out of date drives (say an iscsi disk\n  that has gone away and come back).  The old code wasn\u0027t always\n  properly retrying the other mirror for this type of failure.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)\n  Btrfs: fix compiler warnings on 32 bit systems\n  Btrfs: increase the global block reserve estimates\n  Btrfs: clear the extent uptodate bits during parent transid failures\n  Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n  Btrfs: make sure we update latest_bdev\n  Btrfs: improve error handling for btrfs_insert_dir_item callers\n  Btrfs: be less strict on finding next node in clear_extent_bit\n  Btrfs: fix a bug on overcommit stuff\n  Btrfs: kick out redundant stuff in convert_extent_bit\n  Btrfs: skip states when they does not contain bits to clear\n  Btrfs: check return value of lookup_extent_mapping() correctly\n  Btrfs: fix deadlock on page lock when doing auto-defragment\n  Btrfs: fix return value check of extent_io_ops\n  btrfs: honor umask when creating subvol root\n  btrfs: silence warning in raid array setup\n  btrfs: fix structs where bitfields and spinlock/atomic share 8B word\n  btrfs: delalloc for page dirtied out-of-band in fixup worker\n  Btrfs: fix memory leak in load_free_space_cache()\n  btrfs: don\u0027t check DUP chunks twice\n  Btrfs: fix trim 0 bytes after a device delete\n  ...\n"
    },
    {
      "commit": "fe66a05a06795bd3b788404d69ea7709f46a1609",
      "tree": "8d576c0c69ef44a253370bbec135efe2477d18d2",
      "parents": [
        "692e5759a43b916f0b66bcb39b2957499992381e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 20 08:40:56 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:43:45 2012 -0500"
      },
      "message": "Btrfs: improve error handling for btrfs_insert_dir_item callers\n\nThis allows us to gracefully continue if we aren\u0027t able to insert\ndirectory items, both for normal files/dirs and snapshots.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "12fc9d0923ca70ae8960bccebac09d5c12f8c4d4",
      "tree": "996a0e13d8e15e374144fa4f3d15680e0eada5b1",
      "parents": [
        "8a3344269465b26761b74493cfbeeaa75d821614"
      ],
      "author": {
        "name": "Florian Albrechtskirchinger",
        "email": "falbrechtskirchinger@gmail.com",
        "time": "Fri Feb 10 22:15:54 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 16:35:41 2012 +0100"
      },
      "message": "btrfs: honor umask when creating subvol root\n\nSet the subvol root inode permissions based on the current umask.\n"
    },
    {
      "commit": "87826df0ec36fc28884b4ddbb3f3af41c4c2008f",
      "tree": "7d95bf1ff03c82805903330a279a67642be68699",
      "parents": [
        "a7e221e9002306a753d6f78b4060edabce402033"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Wed Feb 15 16:23:57 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:25 2012 +0100"
      },
      "message": "btrfs: delalloc for page dirtied out-of-band in fixup worker\n\n We encountered an issue that was easily observable on s/390 systems but\n could really happen anywhere. The timing just seemed to hit reliably\n on s/390 with limited memory.\n\n The gist is that when an unexpected set_page_dirty() happened, we\u0027d\n run into the BUG() in btrfs_writepage_fixup_worker since it wasn\u0027t\n properly set up for delalloc.\n\n This patch does the following:\n - Performs the missing delalloc in the fixup worker\n - Allow the start hook to return -EBUSY which informs __extent_writepage\n   that it should mark the page skipped and not to redirty it. This is\n   required since the fixup worker can fail with -ENOSPC and the page\n   will have already been redirtied. That causes an Oops in\n   drop_outstanding_extents later. Retrying the fixup worker could\n   lead to an infinite loop. Deferring the page redirty also saves us\n   some cycles since the page would be stuck in a resubmit-redirty loop\n   until the fixup worker completes. It\u0027s not harmful, just wasteful.\n - If the fixup worker fails, we mark the page and mapping as errored,\n   and end the writeback, similar to what we would do had the page\n   actually been submitted to writeback.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "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": "9998eb703490589c3e8f1bf09b15203156776edb",
      "tree": "5d01f0e7efae049b9be80292c93fe30f11eeefd1",
      "parents": [
        "9b23062840e7c685ef0a0b561285d6e3a3b6811b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 25 13:47:40 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 27 10:44:44 2012 -0500"
      },
      "message": "Btrfs: fix reservations in btrfs_page_mkwrite\n\nJosef fixed btrfs_page_mkwrite to properly release reserved\nextents if there was an error.  But if we fail to get a reservation\nand we fail to dirty the inode (for ENOSPC reasons), we\u0027ll end up\ntrying to release a reservation we never had.\n\nThis makes sure we only release if we were able to reserve.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "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": "f248679e86fead40cc78e724c7181d6bec1a2046",
      "tree": "88abeee0b2a87c0f0377509525c92d3c9ec15a15",
      "parents": [
        "8c2a3ca20f6233677ac3222c6506174010eb414f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 13 12:09:22 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: add a delalloc mutex to inodes for delalloc reservations\n\nI was using i_mutex for this, but we\u0027re getting bogus lockdep warnings by doing\nthat and theres no real way to get rid of those, so just stop using i_mutex to\nprotect delalloc metadata reservations and use a delalloc mutex instead.  This\nshouldn\u0027t be contended often at all, only if you are writing and mmap writing to\nthe file at the same time.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "90290e19820e3323ce6b9c2888eeb68bf29c278b",
      "tree": "cdac13a9718d326cdcd9f4b215a5739906a2325a",
      "parents": [
        "3f7de037fb3727b20bc27332cdcf2488b702394c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 02 15:44:12 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: protect orphan block rsv with spin_lock\n\nWe\u0027ve been seeing warnings coming out of the orphan commit stuff forever from\nceph.  Turns out it\u0027s because we\u0027re racing with checking if the orphan block\nreserve is set, because we clear it outside of the spin_lock.  So leave the\nnormal fastpath checks where they are, but take the spin_lock and _recheck_ to\nmake sure we haven\u0027t had an orphan block rsv added in the meantime.  Then clear\nthe root\u0027s orphan block rsv and release the lock.  With this patch a user said\nthe warnings went away and they usually showed up pretty soon after he started\nceph.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "ec39e180fd3188c983c94603634bfcd019f42ae7",
      "tree": "baf6a56fb98735cc533b6a5bb9c29a364a6c0cf3",
      "parents": [
        "f70a9a6b94af86fca069a7552ab672c31b457786"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: release space on error in page_mkwrite\n\nIf updating the inode gave us an ENOSPC we were just returning in page_mkwrite,\nwhich is a problem since we make our reservation right before trying to update\nthe inode, so fix the out label so that we actually free our reservation.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f70a9a6b94af86fca069a7552ab672c31b457786",
      "tree": "0a62930b2540e11b877a1ead4050c55638bbd874",
      "parents": [
        "7ad85bb76a61801362701b77c5cee5aa09f35369"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: fix btrfsck error 400 when truncating a compressed\n\nReproduce steps:\n # mkfs.btrfs /dev/sdb5\n # mount /dev/sdb5 -o compress\u003dlzo /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile bs\u003d128K count\u003d1\n # sync\n # truncate -s 64K /mnt/tmpfile\n root 5 inode 257 errors 400\n\nThis is because of the wrong if condition, which is used to check if we should\nsubtract the bytes of the dropped range from i_blocks/i_bytes of i-node or not.\nWhen we truncate a compressed extent, btrfs substracts the bytes of the whole\nextent, it\u0027s wrong. We should substract the real size that we truncate, no\nmatter it is a compressed extent or not. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ad85bb76a61801362701b77c5cee5aa09f35369",
      "tree": "e03f4ced4f7c84e9828e4f4a4cbe894369300800",
      "parents": [
        "c126dea771be1b3c370c0ffc4a09e6a82d492a49"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:54 2012 -0500"
      },
      "message": "Btrfs: do not use btrfs_end_transaction_throttle everywhere\n\nA user reported a problem where things like open with O_CREAT would take up to\n30 seconds when he had nfs activity on the same mount.  This is because all of\nour quick metadata operations, like create, symlink etc all do\nbtrfs_end_transaction_throttle, which if the transaction is blocked will wait\nfor the commit to complete before it returns.  This adds a ridiculous amount of\nlatency and isn\u0027t really needed.  The normal btrfs_end_transaction will mark the\ntransaction as blocked and wake the transaction kthread up if it thinks the\ntransaction needs to end (this being in the running out of global reserve space\nscenario), and this is all that is really needed since we\u0027ve already done\neverything we\u0027re going to do, we just need to return.  This should help people\nwith the latency they were seeing when using synchronous heavy workloads.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "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": "6bf7e080d5bcb0d399ee38ce3dabbfad64448192",
      "tree": "954fc4c3ae899b1bb4b89af03582a81546eda4bf",
      "parents": [
        "4692cf58aa7b81f721c1653d48db99ea41421d58"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 01 14:35:19 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 05 15:11:55 2012 +0100"
      },
      "message": "Btrfs: make sure we\u0027re not using obsolete code in btrfs_get_extent\n\nThere\u0027s code in btrfs_get_extent that should never be used. This patch turns\na WARN_ON(1) into a BUG(), hoping we can remove the transaction code from\nbtrfs_get_extent soon.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "175a4eb7ea531cdbf6d574f5d5ba9aa0f5e8ed13",
      "tree": "841812b19b8a5546e472be321b32ca58528b76c3",
      "parents": [
        "030a8ba48fa6fa2a1304bab5b0f49360613c4af2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 03:30:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:10 2012 -0500"
      },
      "message": "fs: propagate umode_t, misc bits\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a67aafb5f72a436ca044293309fa7e6351d6a35",
      "tree": "d9e58600148de9d41b478cf815773b746647d15b",
      "parents": [
        "4acdaf27ebe2034c342f3be57ef49aed1ad885ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:52:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:54 2012 -0500"
      },
      "message": "switch -\u003emknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "827fa4c762fa81fbfcd262505588feeeae7a3b66",
      "tree": "1dbbfcfb0e3a6e6a453f630bfa008fba6bf78daf",
      "parents": [
        "5d219c6b9fa28b990b22e8e3b08a1a1f34400b4f",
        "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 23 14:58:39 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 23 14:58:39 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: call d_instantiate after all ops are setup\n  Btrfs: fix worker lock misuse in find_worker\n"
    },
    {
      "commit": "08c422c27f855d27b0b3d9fa30ebd938d4ae6f1f",
      "tree": "f618c94aa612781c911e18440df7eb16aed8697b",
      "parents": [
        "8d532b2afb2eacc84588db709ec280a3d1219be3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Dec 23 07:58:13 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 23 08:02:26 2011 -0500"
      },
      "message": "Btrfs: call d_instantiate after all ops are setup\n\nThis closes races where btrfs is calling d_instantiate too soon during\ninode creation.  All of the callers of btrfs_add_nondir are updated to\ninstantiate after the inode is fully setup in memory.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "66d7e7f09f77456fe68683247d77721032a00ee5",
      "tree": "bbf7df3933ed47aa202d60d835864543d25df82d",
      "parents": [
        "c7d22a3c3cdb73d8a0151e2ccc8cf4a48c48310b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon Sep 12 15:26:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 22 16:22:27 2011 +0100"
      },
      "message": "Btrfs: mark delayed refs as for cow\n\nAdd a for_cow parameter to add_delayed_*_ref and pass the appropriate value\nfrom every call site. The for_cow parameter will later on be used to\ndetermine if a ref will change anything with respect to qgroups.\n\nDelayed refs coming from relocation are always counted as for_cow, as they\ndon\u0027t change subvol quota.\n\nAlso pass in the fs_info for later use.\n\nbtrfs_find_all_roots() will use this as an optimization, as changes that are\nfor_cow will not change anything with respect to which root points to a\ncertain leaf. Thus, we don\u0027t need to add the current sequence number to\nthose delayed refs.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "c9a7fe9672612c0b595633d2945f52257ad92b20",
      "tree": "df251545a12fdbb895c07ec9dccde10163624b7f",
      "parents": [
        "2cfab8d74ebfbe06ce2947117945c4f45a5915ec",
        "d85c8a6f1bc083279215ff6e79b7c292bf3ec905",
        "142349f541d0bb6bc3e0d4563268105aada42b0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "message": "Merge branches \u0027for-linus\u0027 and \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: unplug every once and a while\n  Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code\n  Btrfs: only set cache_generation if we setup the block group\n  Btrfs: don\u0027t panic if orphan item already exists\n  Btrfs: fix leaked space in truncate\n  Btrfs: fix how we do delalloc reservations and how we free reservations on error\n  Btrfs: deal with enospc from dirtying inodes properly\n  Btrfs: fix num_workers_starting bug and other bugs in async thread\n  BTRFS: Establish i_ops before calling d_instantiate\n  Btrfs: add a cond_resched() into the worker loop\n  Btrfs: fix ctime update of on-disk inode\n  btrfs: keep orphans for subvolume deletion\n  Btrfs: fix inaccurate available space on raid0 profile\n  Btrfs: fix wrong disk space information of the files\n  Btrfs: fix wrong i_size when truncating a file to a larger size\n  Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror\n\n* \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: lower the dirty balance poll interval\n"
    },
    {
      "commit": "567a45e917343c952806bb9f5c19aab0139bd519",
      "tree": "b1d6dac31a3a2836d24662139f21bb1ddc2522d3",
      "parents": [
        "e755d9ab387c4c2401dce5b6f435432a829f41cb",
        "e65cbb94e036058128a5dec6398be2fd64cf88ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of http://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into integration\n\nConflicts:\n\tfs/btrfs/inode.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ee4d89f0c4967c624c92516fcc37b41069bfdc23",
      "tree": "bec733b7d6f2794a86622ad76948c0be2c152170",
      "parents": [
        "7041ee97281c30a78658904140c7bd9373a36142"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Dec 13 12:55:58 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:24 2011 -0500"
      },
      "message": "Btrfs: don\u0027t panic if orphan item already exists\n\nI\u0027ve been hitting this BUG_ON() in btrfs_orphan_add when running xfstest 269 in\na loop.  This is because we will add an orphan item, do the truncate, the\ntruncate will fail for whatever reason (*cough*ENOSPC*cough*) and then we\u0027re\nleft with an orphan item still in the fs.  Then we come back later to do another\ntruncate and it blows up because we already have an orphan item.  This is ok so\njust fix the BUG_ON() to only BUG() if ret is not EEXIST.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7041ee97281c30a78658904140c7bd9373a36142",
      "tree": "7e0426127ca6cbe1c78e3def77b85488c69193ca",
      "parents": [
        "660d3f6cde552323578b85fc5a09a6742f1fe804"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 13:26:22 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:23 2011 -0500"
      },
      "message": "Btrfs: fix leaked space in truncate\n\nWe were occasionaly leaking space when running xfstest 269.  This is because if\nwe failed to start the transaction in the truncate loop we\u0027d just goto out, but\nwe need to break so that the inode is removed from the orphan list and the space\nis properly freed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "660d3f6cde552323578b85fc5a09a6742f1fe804",
      "tree": "7273af0b2a6fe7f9be685cb0586534802c807924",
      "parents": [
        "22c44fe65adacd20a174f3f54686509ee94ef7be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 11:18:51 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:22 2011 -0500"
      },
      "message": "Btrfs: fix how we do delalloc reservations and how we free reservations on error\n\nRunning xfstests 269 with some tracing my scripts kept spitting out errors about\nreleasing bytes that we didn\u0027t actually have reserved.  This took me down a huge\nrabbit hole and it turns out the way we deal with reserved_extents is wrong,\nwe need to only be setting it if the reservation succeeds, otherwise the free()\nmethod will come in and unreserve space that isn\u0027t actually reserved yet, which\ncan lead to other warnings and such.  The math was all working out right in the\nend, but it caused all sorts of other issues in addition to making my scripts\nyell and scream and generally make it impossible for me to track down the\noriginal issue I was looking for.  The other problem is with our error handling\nin the reservation code.  There are two cases that we need to deal with\n\n1) We raced with free.  In this case free won\u0027t free anything because csum_bytes\nis modified before we dro the lock in our reservation path, so free rightly\ndoesn\u0027t release any space because the reservation code may be depending on that\nreservation.  However if we fail, we need the reservation side to do the free at\nthat point since that space is no longer in use.  So as it stands the code was\ndoing this fine and it worked out, except in case #2\n\n2) We don\u0027t race with free.  Nobody comes in and changes anything, and our\nreservation fails.  In this case we didn\u0027t reserve anything anyway and we just\nneed to clean up csum_bytes but not free anything.  So we keep track of\ncsum_bytes before we drop the lock and if it hasn\u0027t changed we know we can just\ndecrement csum_bytes and carry on.\n\nBecause of the case where we can race with free()\u0027s since we have to drop our\nspin_lock to do the reservation, I\u0027m going to serialize all reservations with\nthe i_mutex.  We already get this for free in the heavy use paths, truncate and\nfile write all hold the i_mutex, just needed to add it to page_mkwrite and\nvarious ioctl/balance things.  With this patch my space leak scripts no longer\nscream bloody murder.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "22c44fe65adacd20a174f3f54686509ee94ef7be",
      "tree": "1d590b9e0d238970debd73a730c4e6553c2f7f1b",
      "parents": [
        "0dc3b84a73267f47a75468f924f5d58a840e3152"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 30 10:45:38 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:21 2011 -0500"
      },
      "message": "Btrfs: deal with enospc from dirtying inodes properly\n\nNow that we\u0027re properly keeping track of delayed inode space we\u0027ve been getting\na lot of warnings out of btrfs_dirty_inode() when running xfstest 83.  This is\nbecause a bunch of people call mark_inode_dirty, which is void so we can\u0027t\nreturn ENOSPC.  This needs to be fixed in a few areas\n\n1) file_update_time - this updates the mtime and such when writing to a file,\nwhich will call mark_inode_dirty.  So copy file_update_time into btrfs so we can\ncall btrfs_dirty_inode directly and return an error if we get one appropriately.\n\n2) fix symlinks to use btrfs_setattr for -\u003esetattr.  For some reason we weren\u0027t\nsetting -\u003esetattr for symlinks, even though we should have been.  This catches\none of the cases where we were getting errors in mark_inode_dirty.\n\n3) Fix btrfs_setattr and btrfs_setsize to call btrfs_dirty_inode directly\ninstead of mark_inode_dirty.  This lets us return errors properly for truncate\nand chown/anything related to setattr.\n\n4) Add a new btrfs_fs_dirty_inode which will just call btrfs_dirty_inode and\nprint an error if we have one.  The only remaining user we can\u0027t control for\nthis is touch_atime(), but we don\u0027t really want to keep people from walking\ndown the tree if we don\u0027t have space to save the atime update, so just complain\nbut don\u0027t worry about it.\n\nWith this patch xfstests 83 complains a handful of times instead of hundreds of\ntimes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "ad19db71f498fd858dd84ce603efcf97e321f184",
      "tree": "2e78aa71cf3108ce34fc3e97ca1fecfad63047d2",
      "parents": [
        "8f3b65a3d66bcc086e1eb040b7545e70681f2ed1"
      ],
      "author": {
        "name": "Casey Schaufler",
        "email": "casey@schaufler-ca.com",
        "time": "Thu Dec 15 10:09:07 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:38 2011 -0500"
      },
      "message": "BTRFS: Establish i_ops before calling d_instantiate\n\nThe Smack LSM hook for security_d_instantiate checks\nthe inode\u0027s i_op-\u003egetxattr value to determine if the\ncontaining filesystem supports extended attributes.\nThe BTRFS filesystem sets the inode\u0027s i_op value only\nafter it has instantiated the inode. This results in\nSmack incorrectly giving new BTRFS inodes attributes\nfrom the filesystem defaults on the assumption that\nvalues can\u0027t be stored on the filesystem. This patch\nmoves the assignment of inode operation vectors ahead\nof the calls to d_instantiate, letting Smack know that\nthe filesystem supports extended attributes. There\nshould be no impact on the performance or behavior of\nBTRFS.\n\nSigned-off-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f8e9e0b07be0464e12366631da3da73a1a62449c",
      "tree": "3950d7dfe50186637b0bcca0d38943a64c9dff8c",
      "parents": [
        "39fb26c398ddf8d7794a85e896cfe1a42e55524b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:37 2011 -0500"
      },
      "message": "btrfs: keep orphans for subvolume deletion\n\nSince we have the free space caches, btrfs_orphan_cleanup also runs for\nthe tree_root. Unfortunately this also cleans up the orphans used to mark\nsubvol deletions in progress.\n\nCurrently if a subvol deletion gets interrupted twice by umount/mount, the\ndeletion will not be continued and the space permanently lost, though it\nwould be possible to write a tool to recover those lost subvol deletions.\nThis patch checks if the orphan belongs to a subvol (dead root) and skips\nthe deletion.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3642320e07444cc46327b24977d752f99706dac2",
      "tree": "1ae0d347b6cd2330ca99041d2234672919ebffac",
      "parents": [
        "f4a2f4c548296168832ad4ab7e7f7b0cd0bf1214"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:36 2011 -0500"
      },
      "message": "Btrfs: fix wrong disk space information of the files\n\nBtrfsck report errors after the 83th case of xfstests was run, The error\nnumber is 400, it means the used disk space of the file is wrong.\n\nThe reason of this bug is that:\nThe file truncation may fail when the space of the file system is not enough,\nand leave some file extents, whose offset are beyond the end of the files.\nWhen we want to expand those files, we will drop those file extents, and\nput in dummy file extents, and then we should update the i-node. But btrfs\nforgets to do it.\n\nThis patch adds the forgotten i-node update.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f4a2f4c548296168832ad4ab7e7f7b0cd0bf1214",
      "tree": "10df3e81cc6a10253bb007858ee862a91c596335",
      "parents": [
        "5dbc8fca8ef5d719014f22345d990e957dcfc692"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:01 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:35 2011 -0500"
      },
      "message": "Btrfs: fix wrong i_size when truncating a file to a larger size\n\nBtrfsck report error 100 after the 83th case of xfstests was run, it means\nthe i_size of the file is wrong.\n\nThe reason of this bug is that:\nBtrfs increased i_size of the file at the beginning, but it failed to expand\nthe file, and failed to update the i_size to the old size because there is no\nenough space in the file system, so we found a wrong i_size.\n\nThis patch fixes this bug by updating the i_size just when we pass the file\nexpanding and get enough space to update i-node.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42b2aa86c6670347a2a07e6d7af0e0ecc8fdbff9",
      "tree": "6f8fb2a1efb3e84bf281658befe06dc6a7fb026b",
      "parents": [
        "a13b032776379fa6e2bfccf798969ca51e5fb052"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Mon Nov 28 20:31:00 2011 -0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 02 14:57:31 2011 +0100"
      },
      "message": "treewide: Fix typos in various parts of the kernel, and fix some comments.\n\nThe below patch fixes some typos in various parts of the kernel, as well as fixes some comments.\nPlease let me know if I missed anything, and I will try to get it changed and resent.\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "b930c26416c4ea6855726fd977145ccea9afbdda",
      "tree": "ae18b550c5918ba36f92d0971cc7f2cc8918a05d",
      "parents": [
        "11d814a20166461358e1cefaf6bcd425698b8460",
        "f4a8e6563ea5366f563cb741a27fe90c5fa7f0fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 01 08:28:53 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 01 08:28:53 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: fix meta data raid-repair merge problem\n  Btrfs: skip allocation attempt from empty cluster\n  Btrfs: skip block groups without enough space for a cluster\n  Btrfs: start search for new cluster at the beginning\n  Btrfs: reset cluster\u0027s max_size when creating bitmap\n  Btrfs: initialize new bitmaps\u0027 list\n  Btrfs: fix oops when calling statfs on readonly device\n  Btrfs: Don\u0027t error on resizing FS to same size\n  Btrfs: fix deadlock on metadata reservation when evicting a inode\n  Fix URL of btrfs-progs git repository in docs\n  btrfs scrub: handle -ENOMEM from init_ipath()\n"
    },
    {
      "commit": "aa38a711a893accf5b5192f3d705a120deaa81e0",
      "tree": "59dbb3bca55b7141ba0e0fda1031452ae87a6935",
      "parents": [
        "b52f75a595e8a70ee453bd6fb8023ee294f7a729"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Nov 18 17:43:00 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:03 2011 +0100"
      },
      "message": "Btrfs: fix deadlock on metadata reservation when evicting a inode\n\nWhen I ran the xfstests, I found the test tasks was blocked on meta-data\nreservation.\n\nBy debugging, I found the reason of this bug:\n   start transaction\n        |\n\tv\n   reserve meta-data space\n\t|\n\tv\n   flush delay allocation -\u003e iput inode -\u003e evict inode\n\t^\t\t\t\t\t|\n\t|\t\t\t\t\tv\n   wait for delay allocation flush \u003c- reserve meta-data space\n\nAnd besides that, the flush on evicting inode will block the thread, which\nis reclaiming the memory, and make oom happen easily.\n\nFix this bug by skipping the flush step when evicting inode.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "af36d15f58a3560617f1497ae011c3192049e40e",
      "tree": "f754dd93f4b14745c5e7b8caf52349716f7f7652",
      "parents": [
        "8ba8ed54de4dd79bb88ab6cd7dbf2e83d58d6d57",
        "24a70313969fc3fc440216b40babdb42564acff3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 22 08:53:40 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 22 08:53:40 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: remove free-space-cache.c WARN during log replay\n  Btrfs: sectorsize align offsets in fiemap\n  Btrfs: clear pages dirty for io and set them extent mapped\n  Btrfs: wait on caching if we\u0027re loading the free space cache\n  Btrfs: prefix resize related printks with btrfs:\n  btrfs: fix stat blocks accounting\n  Btrfs: avoid unnecessary bitmap search for cluster setup\n  Btrfs: fix to search one more bitmap for cluster setup\n  btrfs: mirror_num should be int, not u64\n  btrfs: Fix up 32/64-bit compatibility for new ioctls\n  Btrfs: fix barrier flushes\n  Btrfs: fix tree corruption after multi-thread snapshots and inode_cache flush\n"
    },
    {
      "commit": "fadc0d8be4dfca80f6c568bc5874931893c6709b",
      "tree": "a73dd18819b86cc14a1f01a7f58e34d94b8d84da",
      "parents": [
        "52621cb6ed0e0e14358bb317bda7cd5fbd5c2a27"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:15 2011 -0500"
      },
      "message": "btrfs: fix stat blocks accounting\n\nRound inode bytes and delalloc bytes up to real blocksize before\nconverting to sector size. Otherwise eg. files smaller than 512\nare reported with zero blocks due to incorrect rounding.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c1f4246716392ec8693c23cffb969bd73c1b0910",
      "tree": "6160ac2507b28cf7625be79dd539a286c9fe4e43",
      "parents": [
        "fe10e6f4b24ef8ca12cb4d2368deb4861ab1861b",
        "8965593e41dd2d0e2a2f1e6f245336005ea94a2c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 11 23:47:06 2011 -0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 11 23:47:06 2011 -0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: rename the option to nospace_cache\n  Btrfs: handle bio_add_page failure gracefully in scrub\n  Btrfs: fix deadlock caused by the race between relocation\n  Btrfs: only map pages if we know we need them when reading the space cache\n  Btrfs: fix orphan backref nodes\n  Btrfs: Abstract similar code for btrfs_block_rsv_add{, _noflush}\n  Btrfs: fix unreleased path in btrfs_orphan_cleanup()\n  Btrfs: fix no reserved space for writing out inode cache\n  Btrfs: fix nocow when deleting the item\n  Btrfs: tweak the delayed inode reservations again\n  Btrfs: rework error handling in btrfs_mount()\n  Btrfs: close devices on all error paths in open_ctree()\n  Btrfs: avoid null dereference and leaks when bailing from open_ctree()\n  Btrfs: fix subvol_name leak on error in btrfs_mount()\n  Btrfs: fix memory leak in btrfs_parse_early_options()\n  Btrfs: fix our reservations for updating an inode when completing io\n  Btrfs: fix oops on NULL trans handle in btrfs_truncate\n  btrfs: fix double-free \u0027tree_root\u0027 in \u0027btrfs_mount()\u0027\n"
    },
    {
      "commit": "3254c87618354e58fa2a7b375c6664f567480c33",
      "tree": "735c06e860467f567e12c81cabee7956baeee258",
      "parents": [
        "ba38eb4de354d228f2792f93cde2c748a3a3f3b2"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:45:05 2011 -0500"
      },
      "message": "Btrfs: fix unreleased path in btrfs_orphan_cleanup()\n\nWhen we did stress test for the space relocation, the deadlock happened.\nBy debugging, We found it was caused by the carelessness that we forgot\nto unlock the read lock of the extent buffers in btrfs_orphan_cleanup()\nbefore we end the transaction handle, so the transaction commit task waited\nthe task, which called btrfs_orphan_cleanup(), to unlock the extent buffer,\nbut that task waited the commit task to end the transaction commit, and\nthe deadlock happened. Fix it.\n\nSigned-ff-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2115133f8b9a8dbdb217d14080814df07ce90479",
      "tree": "3b2f3d6839cdb1f6495ae10dd548f7fbfee70266",
      "parents": [
        "7fd2ae21a42d178982679b86086661292b4afe4a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:39:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 10 20:39:08 2011 -0500"
      },
      "message": "Btrfs: tweak the delayed inode reservations again\n\nJosef sent along an incremental to the inode reservation\ncode to make sure we try and fall back to directly updating\nthe inode item if things go horribly wrong.\n\nThis reworks that patch slightly, adding a fallback function\nthat will always try to update the inode item directly without\ngoing through the delayed_inode code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7fd2ae21a42d178982679b86086661292b4afe4a",
      "tree": "236c22d807ca5f2419a1b0394bd1092aab730cde",
      "parents": [
        "917c16b2b69fc2eeb432eabca73258f08c58361e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 08 15:47:34 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 15:47:34 2011 -0500"
      },
      "message": "Btrfs: fix our reservations for updating an inode when completing io\n\nPeople have been reporting ENOSPC crashes in finish_ordered_io.  This is because\nwe try to steal from the delalloc block rsv to satisfy a reservation to update\nthe inode.  The problem with this is we don\u0027t explicitly save space for updating\nthe inode when doing delalloc.  This is kind of a problem and we\u0027ve gotten away\nwith this because way back when we just stole from the delalloc reserve without\nany questions, and this worked out fine because generally speaking the leaf had\nbeen modified either by the mtime update when we did the original write or\nbecause we just updated the leaf when we inserted the file extent item, only on\nrare occasions had the leaf not actually been modified, and that was still ok\nbecause we\u0027d just use a block or two out of the over-reservation that is\ndelalloc.\n\nThen came the delayed inode stuff.  This is amazing, except it wants a full\nreservation for updating the inode since it may do it at some point down the\nroad after we\u0027ve written the blocks and we have to recow everything again.  This\nworked out because the delayed inode stuff just stole from the global reserve,\nthat is until recently when I changed that because it caused other problems.\n\nSo here we are, we\u0027re doing everything right and being screwed for it.  So take\nan extra reservation for the inode at delalloc reservation time and carry it\nthrough the life of the delalloc reservation.  If we need it we can steal it in\nthe delayed inode stuff.  If we have already stolen it try and do a normal\nmetadata reservation.  If that fails try to steal from the delalloc reservation.\nIf _that_ fails we\u0027ll get a WARN_ON() so I can start thinking of a better way to\nsolve this and in the meantime we\u0027ll steal from the global reserve.\n\nWith this patch I ran xfstests 13 in a loop for a couple of hours and didn\u0027t see\nany problems.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "917c16b2b69fc2eeb432eabca73258f08c58361e",
      "tree": "3eb8b7d59bbb8c7d6cb54876428b485e72878692",
      "parents": [
        "45ea6095c8f0d6caad5658306416a5d254f1205e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 14:49:59 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 08 14:49:59 2011 -0500"
      },
      "message": "Btrfs: fix oops on NULL trans handle in btrfs_truncate\n\nIf we fail to reserve space in the transaction during truncate, we can\nerror out with a NULL trans handle.  The cleanup code needs an extra\ncheck to make sure we aren\u0027t trying to use the bad handle.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6a6662ced4153f6dbcfc40d7225c3cc45416039c",
      "tree": "77ad5d577333f02cd854e44827a407dd0388d4eb",
      "parents": [
        "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
        "7c7e82a77fe3d89ae50824aa7c897454675eb4c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (114 commits)\n  Btrfs: check for a null fs root when writing to the backup root log\n  Btrfs: fix race during transaction joins\n  Btrfs: fix a potential btrfs_bio leak on scrub fixups\n  Btrfs: rename btrfs_bio multi -\u003e bbio for consistency\n  Btrfs: stop leaking btrfs_bios on readahead\n  Btrfs: stop the readahead threads on failed mount\n  Btrfs: fix extent_buffer leak in the metadata IO error handling\n  Btrfs: fix the new inspection ioctls for 32 bit compat\n  Btrfs: fix delayed insertion reservation\n  Btrfs: ClearPageError during writepage and clean_tree_block\n  Btrfs: be smarter about committing the transaction in reserve_metadata_bytes\n  Btrfs: make a delayed_block_rsv for the delayed item insertion\n  Btrfs: add a log of past tree roots\n  btrfs: separate superblock items out of fs_info\n  Btrfs: use the global reserve when truncating the free space cache inode\n  Btrfs: release metadata from global reserve if we have to fallback for unlink\n  Btrfs: make sure to flush queued bios if write_cache_pages waits\n  Btrfs: fix extent pinning bugs in the tree log\n  Btrfs: make sure btrfs_remove_free_space doesn\u0027t leak EAGAIN\n  Btrfs: don\u0027t wait as long for more batches during SSD log commit\n  ...\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "5a77d76c243be18d854aa1b14d697525f60e169a",
      "tree": "ddf15400e692085b5914297eb2d88989e5246c11",
      "parents": [
        "01d658f2ca3c85c1ffb20b306e30d16197000ce7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 01 14:32:23 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:03:49 2011 -0500"
      },
      "message": "Btrfs: release metadata from global reserve if we have to fallback for unlink\n\nI fixed a problem where we weren\u0027t reserving space for an orphan item when we\nhad to fallback to using the global reserve for an unlink, but I introduced\nanother problem.  I was migrating the bytes from the transaction reserve to the\nglobal reserve and then releasing from the global reserve in\nbtrfs_end_transaction().  The problem with this is that a migrate will jack up\nthe size for the destination, but leave the size alone for the source, with the\nidea that you can do a release normally on the source and it all washes out, and\nthen you can do a release again on the destination and it works out right.  My\nway was skipping the release on the trans_block_rsv which still had the jacked\nup size from our original reservation.  So instead release manually from the\nglobal reserve if this transaction was using it, and then set the\ntrans-\u003eblock_rsv back to the trans_block_rsv so that btrfs_end_transaction\ncleans everything up properly.  With this patch xfstest 83 doesn\u0027t emit warnings\nabout leaking space.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "f0dd9592a1aa014b3a01aa2be7e795aae040d65b",
      "tree": "a57eaec0eb40c490254af749c2bda77534002e9e",
      "parents": [
        "560f7d75457f86a43970aa413e334e394082dce4"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Sep 08 10:26:51 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:44 2011 +0200"
      },
      "message": "Btrfs: fix direct-io vs nodatacow\n\nTo reproduce the bug:\n\n  # mount -o nodatacow /dev/sda7 /mnt/\n  # dd if\u003d/dev/zero of\u003d/mnt/tmp bs\u003d4K count\u003d1\n  1+0 records in\n  1+0 records out\n  4096 bytes (4.1 kB) copied, 0.000136115 s, 30.1 MB/s\n  # dd if\u003d/dev/zero of\u003d/mnt/tmp bs\u003d4K count\u003d1 conv\u003dnotrunc oflag\u003ddirect\n  dd: writing `/mnt/tmp\u0027: Input/output error\n  1+0 records in\n  0+0 records out\n\nbtrfs_ordered_update_i_size() may return 1, but btrfs_endio_direct_write()\nmistakenly takes it as an error.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "560f7d75457f86a43970aa413e334e394082dce4",
      "tree": "19167f699de731a0c9cc1faf44035e0e958ab9fb",
      "parents": [
        "a05a9bb18ae0abec0b513b5fde876c47905fa13e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Sep 08 10:22:01 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:43 2011 +0200"
      },
      "message": "Btrfs: remove BUG_ON() in compress_file_range()\n\nIt\u0027s not a big deal if we fail to allocate the array, and instead of\npanic we can just give up compressing.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.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": "3880a1b46d87a6b030c31889875befc745d95dff",
      "tree": "b693669e3a58f39e706bca7f2da8a71211be99de",
      "parents": [
        "b24e03db0df3e9164c9649db12fecc8c2d81b0d1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 14 14:46:51 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:59 2011 -0400"
      },
      "message": "Btrfs: reserve some space for an orphan item when unlinking\n\nIn __unlink_start_trans() if we don\u0027t have enough room for a reservation we will\ncheck to see if the unlink will free up space.  If it does that\u0027s great, but we\nwill still could add an orphan item, so we need to reserve enough space to add\nthe orphan item.  Do this and migrate the space the global reserve so it all\nworks out right.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "e70bea5fe0e3d6355fd95674eaff5aa5a32f0564",
      "tree": "dad7af7a0d449c43393c9249d4634a8279580534",
      "parents": [
        "4b91c14f913f649d4302b3677b85c4ce87a3d8e7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 11 14:18:24 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:55 2011 -0400"
      },
      "message": "Btrfs: fix the amount of space reserved for unlink\n\nOur unlink reservations were a bit much, we were reserving 10 and I only count 8\npossible items we\u0027re touching, so comment what we\u0027re reserving for and fix the\ncount value.  Thanks,\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": "8f6d7f4f45f18a5b669dbbf068c74b3d5be59dbf",
      "tree": "6a43f6ec137c0c491a308ba258552a0b47cbc8c0",
      "parents": [
        "726c35fa0edf1d9b8a88b73255532e73089aedda"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Sep 26 15:55:20 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:49 2011 -0400"
      },
      "message": "Btrfs: break out of orphan cleanup if we can\u0027t make progress\n\nI noticed while running xfstests 83 that if we didn\u0027t have enough space to\ndelete our inode the orphan cleanup would just loop.  This is because it keeps\nfinding the same orphan item and keeps trying to kill it but can\u0027t because we\ndon\u0027t get an error back from iput for deleting the inode.  So keep track of the\nlast guy we tried to kill, if it\u0027s the same as the one we\u0027re trying to kill\ncurrently we know we are having problems and can just error out.  I don\u0027t have a\nway to test this so look hard and make sure it\u0027s right.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "726c35fa0edf1d9b8a88b73255532e73089aedda",
      "tree": "5b2c95df5854b5b5829ce5f88e3e807eb4bc8d4a",
      "parents": [
        "1728366efa5ebf48bd2ed544afa8700cd07ba822"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Sep 26 15:46:06 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:48 2011 -0400"
      },
      "message": "Btrfs: use the global reserve as a backup for deleting inodes\n\nXfstests 83 really stresses our ENOSPC since it uses a 100mb fs which ends up\nwith the mixed block group stuff.  Because of this we can run into a situation\nwhere we don\u0027t have enough space to delete inodes, or even worse we can\u0027t free\nthe inodes when we next mount the fs which causes the orphan code to lose its\nmind.  So if we fail to make our reservation, steal from the global reserve.\nThe global reserve will end up taking up the entire rest of the free space on\nthe fs in this worst case so there really is no other option.  With this patch\ntest 83 doesn\u0027t freak out.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a8c9e5769718d47e87cce40c9b84cab421804797",
      "tree": "6bfc08ccb5afa532449741230f5733c4f44499fc",
      "parents": [
        "3b16a4e3c355ee3c790473decfcf83d4faeb8ce0"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Sep 21 16:55:59 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:46 2011 -0400"
      },
      "message": "Btrfs: fix orphan cleanup regression\n\nIn fixing how we deal with bad inodes, we had a regression in the orphan cleanup\ncode, since it expects to get a bad inode back.  So fix it to deal with getting\n-ESTALE back by deleting the orphan item manually and moving on.  Thanks,\n\nReported-by: Simon Kirby \u003csim@hostway.ca\u003e\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": "4a33854257764c2ec6337ee0c8ecafb64f8e29e1",
      "tree": "2070f0d4a53c9124d2ff44c78e13f45ae184298c",
      "parents": [
        "7f70150896ebd1169d9c43484c8c424f755353c4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Aug 29 11:01:31 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:40 2011 -0400"
      },
      "message": "Btrfs: set truncate block rsv\u0027s size\n\nWhile debugging a different issue I noticed that we were always reserving space\nwhen we tried to use our truncate block rsv\u0027s.  This is because they didn\u0027t have\na -\u003esize value, so use_block_rsv just assumes there is nothing reserved and it\ndoes a reserve_metadata_bytes.  This is because btrfs_check_block_rsv() doesn\u0027t\nactually add to the size of the block rsv.  That seems to be the right thing to\ndo so set -\u003esize to the minimum truncate size we need, since we will always only\nrefill to that size anyway, and this way everything works out correctly.\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": "07127184efb629f1336c0592bfdacec258cab731",
      "tree": "c527bfd0444cd9a589278873dd78ef185f66d2fc",
      "parents": [
        "1b9c332b6c92e992b1971a08412c6f460a54b514"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Aug 19 10:29:59 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:37 2011 -0400"
      },
      "message": "Btrfs: reduce the amount of space needed for truncates\n\nWith btrfs_truncate_inode_items we always return if we have to go to another\nleaf, which makes us do our reservation again.  This means we will only ever\nmodify one leaf at a time, so we only need 1 items worth of slack space.  Also,\nsince we are deleting we will not be creating nodes as we go down, if anything\nwe\u0027ll be free\u0027ing them as we merge them together, so make a different\ncalculation for truncate which will only have the worst case useage of COW\u0027ing\nthe entire path down to the leaf.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "907cbcebd4e5f641faf08601f216b1ceb6cb3bdf",
      "tree": "2f605e19e8d44360c9eb4033adda940e9e5ab007",
      "parents": [
        "13553e5221d6901a33b3f2157a389de085c161fe"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Aug 08 13:46:15 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:35 2011 -0400"
      },
      "message": "Btrfs: optimize how we account for space in truncate\n\nCurrently we\u0027re starting and stopping a transaction for no real reason, so kill\nthat and just reserve enough space as if we can truncate all in one transaction.\nAlso use btrfs_block_rsv_check() for our reserve to minimize the amount of space\nwe may have to allocate for our slack space.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4289a667a0d7c6b134898cac7bfbe950267c305c",
      "tree": "2a0564c4d33dc7f56eb7c1b0671885d5dbb79381",
      "parents": [
        "37be25bcb6d731914e126f8de59c4367f0d66b80"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Aug 05 13:22:24 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:33 2011 -0400"
      },
      "message": "Btrfs: fix how we reserve space for deleting inodes\n\nI converted btrfs_truncate to do sane reservations for truncate, but didn\u0027t\nconvert btrfs_evict_inode.  Basically we need to save the orphan_rsv for\ndeleting the orphan item, and do normal reservations for our truncate.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "37be25bcb6d731914e126f8de59c4367f0d66b80",
      "tree": "d9e78eb4440f60a7697f8f7c56a37c163734cf66",
      "parents": [
        "dba68306f3fae681b1005137f130f5bcfdfed34a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Aug 05 10:25:38 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:32 2011 -0400"
      },
      "message": "Btrfs: kill the durable block rsv stuff\n\nThis is confusing code and isn\u0027t used by anything anymore, so delete it.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "dba68306f3fae681b1005137f130f5bcfdfed34a",
      "tree": "eb19fa46bc8f7130fd68393420255876cc8f73fb",
      "parents": [
        "7709cde33f12db71efb377fae4ae7aab6c94ebc6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Aug 04 15:34:57 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:32 2011 -0400"
      },
      "message": "Btrfs: kill the orphan space calculation for snapshots\n\nThis patch kills off the calculation for the amount of space needed for the\norphan operations during a snapshot.  The thing is we only do snapshots on\ncommit, so any space that is in the block_rsv-\u003efreed[] isn\u0027t going to be in the\nnew snapshot anyway, so there isn\u0027t any reason to require that space to be\nreserved for the snapshot to occur.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7709cde33f12db71efb377fae4ae7aab6c94ebc6",
      "tree": "f60b4ff7dafa0fcf64e0d9e9445d6984739cbfe6",
      "parents": [
        "9e4871070b5f070cacf26525389d56e0345ba156"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Aug 04 10:25:02 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:31 2011 -0400"
      },
      "message": "Btrfs: calculate checksum space correctly\n\nWe have not been reserving enough space for checksums.  We were just reserving\nbytes for the checksum items themselves, we were not taking into account having\nto cow the tree and such.  This patch adds a csum_bytes counter to the inode for\nkeeping track of the number of bytes outstanding we have for checksums.  Then we\ncalculate how many leaves would be required for the checksums we are given and\nuse that to reserve space.  This adds a significant amount of bytes to our\nreservations, but we will handle this later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0cbbdf7c9c46467bfb7129c30236f36a679ab244",
      "tree": "eb46b44f991d77fb7ee2e4eeab690a92af692189",
      "parents": [
        "f1bdcc0a8278aa42cb77331275890aac85a4e7cd"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jul 14 16:02:04 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:28 2011 -0400"
      },
      "message": "Btrfs: kill reserved_bytes in inode\n\nreserved_bytes is not used for anything in the inode, remove it.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4a54c8c165b66300830a67349fc7595e3fc442f7",
      "tree": "fea3a5e86c2ee9304711e18b2557912166d6d52f",
      "parents": [
        "2774b2ca3d49124bf1ae89e8d575b3dab4221266"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Jul 22 15:41:52 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 13:38:42 2011 +0200"
      },
      "message": "btrfs: Moved repair code from inode.c to extent_io.c\n\nThe raid-retry code in inode.c can be generalized so that it works for\nmetadata as well. Thus, this patch moves it to extent_io.c and makes the\nraid-retry code a raid-repair code.\n\nRepair works that way: Whenever a read error occurs and we have more\nmirrors to try, note the failed mirror, and retry another. If we find a\ngood one, check if we did note a failure earlier and if so, do not allow\nthe read to complete until after the bad sector was written with the good\ndata we just fetched. As we have the extent locked while reading, no one\ncan change the data in between.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "1503140d3ec2be9b917d2f8f7c64cb77b79a215b",
      "tree": "6138ec14ae6301c69687a769cc96a39044ee49aa",
      "parents": [
        "a1d3c4786a4b9c71c0767aa656a759968f7554b6"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jun 16 14:37:03 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 13:38:42 2011 +0200"
      },
      "message": "btrfs: Do not use bio-\u003ebi_bdev after submission\n\nThe block layer modifies bio-\u003ebi_bdev and bio-\u003ebi_sector while working on\nthe bio, they do _not_ come back unmodified in the completion callback.\n\nTo call add_page, we need at least some bi_bdev set, which is why the code\nwas working, previously. With this patch, we use the latest_bdev from\nfsinfo instead of the leftover in the bio. This gives us the possibility to\nuse the bi_bdev field for another purpose.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    }
  ],
  "next": "8ddc7d9cd0a00062247c732b96386ec2462bdbc7"
}
