)]}'
{
  "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": "1e20932a23578bb1ec59107843574e259b96193f",
      "tree": "844ae54293c4414fc4c232a36d0e4d4939dc35aa",
      "parents": [
        "cfc442b69696b593cb442f09997dcb4cb5748171",
        "c31931088fd6cf953bd0868a2647b6c3928e6c96"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:50:28 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:49:53 2012 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/ulist.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c31931088fd6cf953bd0868a2647b6c3928e6c96",
      "tree": "657827f1fd4be55e2f1d52a661c8803b80c08de7",
      "parents": [
        "f395694c2cd76cb1882fa82dd37e761598367fe9"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:24:36 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:56:19 2012 +0200"
      },
      "message": "Btrfs: fix tree mod log rewinded level and rewinding of moved keys\n\nWhen we rewind REMOVE_WHILE_FREEING operations, there\u0027s code that allocates\na fresh buffer instead of cloning the old one. Setting that buffer\u0027s level\ncorrectly was missing in this case.\n\nWhen rewinding a MOVE_KEYS operation, btrfs_node_key_ptr_offset(slot) was\nmissing for memmove_extent_buffer()\u0027s arguments.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "f395694c2cd76cb1882fa82dd37e761598367fe9",
      "tree": "08e0ef4499046d1400d86b86c2f61a2a52a66cf6",
      "parents": [
        "e9b7fd4d8b7c915cff353ca085b83bd19737396b"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 15:02:32 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:56:19 2012 +0200"
      },
      "message": "Btrfs: fix tree mod log del_ptr\n\nLogging for del_ptr when we\u0027re not deleting the last pointer was wrong. This\nfixes both, duplicate log entries and log sequence.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "e9b7fd4d8b7c915cff353ca085b83bd19737396b",
      "tree": "44cb78d1d1a5d677b0c01fd082554150a2f0ce20",
      "parents": [
        "926dd8a640da1bbf7478eebea1c23a842fc9c890"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 14:59:09 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:56:18 2012 +0200"
      },
      "message": "Btrfs: add tree_mod_dont_log helper\n\nReplace duplicate code by small inline helper function.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "926dd8a640da1bbf7478eebea1c23a842fc9c890",
      "tree": "92ca5d559964d910575de487fdb66372ad5caa60",
      "parents": [
        "3301958b7c1dae8f0f5ded63aa881e0b71e78464"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 14:00:15 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:56:18 2012 +0200"
      },
      "message": "Btrfs: add missing spin_lock for insertion into tree mod log\n\ntree_mod_alloc calls __get_tree_mod_seq and must acquire a spinlock before\ndoing so.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "3301958b7c1dae8f0f5ded63aa881e0b71e78464",
      "tree": "11d1c098981a65bcbe11f4be594d6e9855f55448",
      "parents": [
        "95a06077f7edbd00d32612562be4d857a5b7df54"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 18:05:21 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 31 19:53:08 2012 +0200"
      },
      "message": "Btrfs: add inodes before dropping the extent lock in find_all_leafs\n\nWe must build up the inode list with the extent lock held after following\nindirect refs.\n\nThis also requires an extension to ulists, which allows to modify the stored\naux value in case a key already exists in the list.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "95a06077f7edbd00d32612562be4d857a5b7df54",
      "tree": "664ff2a92a2de3ba96be5a49ac36531d933ee5eb",
      "parents": [
        "20b297d620cd1bb94127942bbb3702fb7b1030b2"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 29 17:06:54 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 18:18:21 2012 +0200"
      },
      "message": "Btrfs: use delayed ref sequence numbers for all fs-tree updates\n\nThe sequence number for delayed refs is needed to postpone certain delayed\nrefs for a very short period while walking backrefs. Before the tree\nmodification log, we thought we\u0027d only have to hold back those references\nthat don\u0027t have a counter operation.\n\nWhile now we\u0027ve the tree mod log, we\u0027re rewinding fs tree blocks to a\ndefined consistent state. We cannot know in advance for which tree block\nwe\u0027ll be doing rewind operations later. Therefore, we must postpone all the\ndelayed refs for fs-tree blocks, even those having a counter operation.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "48235a68a3d1db579fc20d9915815228a1825757",
      "tree": "38dfe2fd0e8e3641492b32203ab04e5281887438",
      "parents": [
        "86ff7ffce0b93aed14df4c8dcedd05bb5e2fdfbc"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Wed May 23 17:57:49 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:44 2012 -0400"
      },
      "message": "Btrfs: fix false positive in check-integrity on unmount\n\nDuring unmount, it could happen that the integrity checker printed a\nwarning message \"attempt to free ... on umount which is not yet iodone\"\nwhich turned out to be a false positive.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "86ff7ffce0b93aed14df4c8dcedd05bb5e2fdfbc",
      "tree": "2d770c05a6d4539a0defe9a43449362383109b10",
      "parents": [
        "3d136a1131c66f7d26fb171e4c5b0b8baacd3129"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Tue Apr 24 18:10:16 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:43 2012 -0400"
      },
      "message": "Btrfs: fix runtime warning in check-integrity check data mode\n\nIf a file_extent_item was located at the very end of a leaf and there was\nnot enough space to hold a full item, but there was enough space to hold\none of type BTRFS_FILE_EXTENT_INLINE or PREALLOC, and it was only such a\nshort item, a warning was printed anyway. This check is now fixed.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "3d136a1131c66f7d26fb171e4c5b0b8baacd3129",
      "tree": "e09f9a755e05fc2a6e21ef87762f5f1f979320f6",
      "parents": [
        "5bdbeb2187a99d690b374a8c5ec9911fcbcfe739"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri Feb 03 11:20:04 2012 +0100"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:43 2012 -0400"
      },
      "message": "Btrfs: set ioprio of scrub readahead to idle\n\nReduce ioprio class of scrub readahead threads to idle priority.\nThis setting is fixed. This priority has shown the best performance\nduring all measurements.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "5bdbeb2187a99d690b374a8c5ec9911fcbcfe739",
      "tree": "ca0120adbf92af41980371706781f8845b0fab05",
      "parents": [
        "22ee6985de7d3e81ec0cef9c6ba01b45ad1bafeb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue May 29 16:59:49 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:42 2012 -0400"
      },
      "message": "Btrfs: fix return code in drop_objectid_items\n\nSo dpkg fsync()\u0027s the file and the directory containing the file whenever it\nwrites to a file which is really slow in btrfs.  This is partly because\nfsync()\u0027ing a directory _always_ committed the transaction instead of just\ngoing to the tree log.  This is because drop_objectid_items() would return 1\nsince it does a btrfs_search_slot() which returns 1.  In tree-log jargon\nthis means that we have to commit the transaction to be safe.  So just check\nif ret is greater than 0 and set it to 0 if it does.  With this patch we now\nuse the tree-log instead of committing the entire transaction, which is\ntwice as fast on my box.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "22ee6985de7d3e81ec0cef9c6ba01b45ad1bafeb",
      "tree": "96f9f1b4a4e0f0e77503fd63e6552a4a4b477e21",
      "parents": [
        "018642a1f197887058e97291460b890d296e8953"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue May 29 16:57:49 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:42 2012 -0400"
      },
      "message": "Btrfs: check to see if the inode is in the log before fsyncing\n\nWe have this check down in the actual logging code, but this is after we\nstart a transaction and all that good stuff.  So move the helper\ninode_in_log() out so we can call it in fsync() and avoid starting a\ntransaction altogether and just exit if we\u0027ve already fsync()\u0027ed this file\nrecently.  You would notice this issue if you fsync()\u0027ed a file over and\nover again until the transaction committed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "018642a1f197887058e97291460b890d296e8953",
      "tree": "5fc77a516728d0281873dc19f66ef9ca9e92ae34",
      "parents": [
        "733f4fbbc1083aa343da739f46ee839705d6cfe3"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue May 29 18:10:13 2012 +0900"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:41 2012 -0400"
      },
      "message": "Btrfs: return value of btrfs_read_buffer is checked correctly\n\nbtrfs_read_buffer() has the possibility of returning the error.\nTherefore, I add the code in which the return value of btrfs_read_buffer()\nis checked.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "733f4fbbc1083aa343da739f46ee839705d6cfe3",
      "tree": "0c6dab9e8610eb9b4ccd9a6453caa1588583b1b8",
      "parents": [
        "c11d2c236cc260b36ef644700fbe99bcc7e7da33"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:10 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:41 2012 -0400"
      },
      "message": "Btrfs: read device stats on mount, write modified ones during commit\n\nThe device statistics are written into the device tree with each\ntransaction commit. Only modified statistics are written.\nWhen a filesystem is mounted, the device statistics for each involved\ndevice are read from the device tree and used to initialize the\ncounters.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "c11d2c236cc260b36ef644700fbe99bcc7e7da33",
      "tree": "e240721e0b6e5784177ac39bc299db4063b93c72",
      "parents": [
        "442a4f6308e694e0fa6025708bd5e4e424bbf51c"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:09 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:40 2012 -0400"
      },
      "message": "Btrfs: add ioctl to get and reset the device stats\n\nAn ioctl interface is added to get the device statistic counters.\nA second ioctl is added to atomically get and reset these counters.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "442a4f6308e694e0fa6025708bd5e4e424bbf51c",
      "tree": "e782db1bcbec25283048d77871e0bed7ad04567c",
      "parents": [
        "d07eb9117050c9ed3f78296ebcc06128b52693be"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:08 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:39 2012 -0400"
      },
      "message": "Btrfs: add device counters for detected IO and checksum errors\n\nThe goal is to detect when drives start to get an increased error rate,\nwhen drives should be replaced soon. Therefore statistic counters are\nadded that count IO errors (read, write and flush). Additionally, the\nsoftware detected errors like checksum errors and corrupted blocks are\ncounted.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "d07eb9117050c9ed3f78296ebcc06128b52693be",
      "tree": "e4328e49440b4330d5a58416e40ec13e738d5dad",
      "parents": [
        "762f2263260d576504aeb23d20f90120acdb025f"
      ],
      "author": {
        "name": "Asias He",
        "email": "asias@redhat.com",
        "time": "Fri May 25 11:10:21 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:39 2012 -0400"
      },
      "message": "btrfs: Drop unused function btrfs_abort_devices()\n\n1) This function is not used anywhere.\n\n2) Using the blk_abort_queue() to abort the queue seems not correct.\nblk_abort_queue() is used for timeout handling (block/blk-timeout.c).\n\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: linux-btrfs@vger.kernel.org\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: linux-kernel@vger.kernel.org\nSigned-off-by: Asias He \u003casias@redhat.com\u003e\n"
    },
    {
      "commit": "762f2263260d576504aeb23d20f90120acdb025f",
      "tree": "9f6e426d359faf438775df1d1cc5a59a4924478f",
      "parents": [
        "2adcac1a7331d93a17285804819caa96070b231f"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu May 24 18:58:27 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:38 2012 -0400"
      },
      "message": "Btrfs: fix the same inode id problem when doing auto defragment\n\nTwo files in the different subvolumes may have the same inode id, so\nThe rb-tree which is used to manage the defragment object must take it\ninto account. This patch fix this problem.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\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": "cd023e7b17fe86c530475da210b3348421c40e5f",
      "tree": "b80cf40b7ad18af59ef43602b673fe1c7d371232",
      "parents": [
        "9ba1f6e44ed7a1fa52d3f292508bf921b5054172"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 14 10:06:40 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:36 2012 -0400"
      },
      "message": "Btrfs: merge contigous regions when loading free space cache\n\nWhen we write out the free space cache we will write out everything that is\nin our in memory tree, and then we will just walk the pinned extents tree\nand write anything we see there.  The problem with this is that during\nnormal operations the pinned extents will be merged back into the free space\ntree normally, and then we can allocate space from the merged areas and\ncommit them to the tree log.  If we crash and replay the tree log we will\ncrash again because the tree log will try to free up space from what looks\nlike 2 seperate but contiguous entries, since one entry is from the original\nfree space cache and the other was a pinned extent that was merged back.  To\nfix this we just need to walk the free space tree after we load it and merge\ncontiguous entries back together.  This will keep the tree log stuff from\nbreaking and it will make the allocator behave more nicely.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9ba1f6e44ed7a1fa52d3f292508bf921b5054172",
      "tree": "2c20508be673a9ebce14d27efa6ee05a04695787",
      "parents": [
        "d1ac6e41d5437385957fd708e285defd0b1a430c"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Fri May 11 18:11:26 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:35 2012 -0400"
      },
      "message": "Btrfs: do not do balance in readonly mode\n\nIn normal cases, we would not be allowed to do balance in RO mode.\nHowever, when we\u0027re using a seeding device and adding another device to sprout,\nthings will change:\n\n$ mkfs.btrfs /dev/sdb7\n$ btrfstune -S 1 /dev/sdb7\n$ mount /dev/sdb7 /mnt/btrfs -o ro\n$ btrfs fi bal /mnt/btrfs   -----------------------\u003e fail.\n$ btrfs dev add /dev/sdb8 /mnt/btrfs\n$ btrfs fi bal /mnt/btrfs   -----------------------\u003e works!\n\nIt should not be designed as an exception, and we\u0027d better add another check for\nmnt flags.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d1ac6e41d5437385957fd708e285defd0b1a430c",
      "tree": "43ca3c14aa8b5b89de1b519e326799ce594a7779",
      "parents": [
        "f8c5d0b443ff87c43ba690fa2b5bd2c9387d8624"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu May 10 18:10:39 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:34 2012 -0400"
      },
      "message": "Btrfs: use fastpath in extent state ops as much as possible\n\nFully utilize our extent state\u0027s new helper functions to use\nfastpath as much as possible.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f8c5d0b443ff87c43ba690fa2b5bd2c9387d8624",
      "tree": "683da2f43916956f87551de7e806e69d0663ee1d",
      "parents": [
        "5fd02043553b02867b29de1ac9fff2ec16b84def"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu May 10 18:10:38 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:34 2012 -0400"
      },
      "message": "Btrfs: fix wrong error returned by adding a device\n\nReproduce:\n$ mkfs.btrfs /dev/sdb7\n$ mount /dev/sdb7 /mnt/btrfs -o ro\n$ btrfs dev add /dev/sdb8 /mnt/btrfs\nERROR: error adding the device \u0027/dev/sdb8\u0027 - Invalid argument\n\nSince we mount with readonly options, and /dev/sdb7 is not a seeding one,\na readonly notification is preferred.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nReviewed-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": "4e89915220e2f1341c757b610d0f0c3821f3a65f",
      "tree": "5c70b0fab1d05a924ce316e8ba632b95b6555c16",
      "parents": [
        "f60d16a8923201bb27ad7c09016abab2818cf8ce"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 02 13:52:09 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:33 2012 -0400"
      },
      "message": "Btrfs: do not check delalloc when updating disk_i_size\n\nWe are checking delalloc to see if it is ok to update the i_size.  There are\n2 cases it stops us from updating\n\n1) If there is delalloc between our current disk_i_size and this ordered\nextent\n\n2) If there is delalloc between our current ordered extent and the next\nordered extent\n\nThese tests are racy however since we can set delalloc for these ranges at\nany time.  Also for the first case if we notice there is delalloc between\ndisk_i_size and our ordered extent we will not update disk_i_size and assume\nthat when that delalloc bit gets written out it will update everything\nproperly.  However if we crash before that we will have file extents outside\nof our i_size, which is not good, so this test is dangerous as well as racy.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "f60d16a8923201bb27ad7c09016abab2818cf8ce",
      "tree": "7bb7f019dad20883b01cb7689d80195d483e37a4",
      "parents": [
        "a27202fbe92b12eec895c36644440175de01d7a6"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "meyering@redhat.com",
        "time": "Wed Apr 25 21:24:17 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:32 2012 -0400"
      },
      "message": "Btrfs: avoid buffer overrun in mount option handling\n\nThere is an off-by-one error: allocating room for a maximal result\nstring but without room for a trailing NUL.  That, can lead to\nreturning a transformed string that is not NUL-terminated, and\nthen to a caller reading beyond end of the malloc\u0027d buffer.\n\nRewrite to s/kzalloc/kmalloc/, remove unwarranted use of strncpy\n(the result is guaranteed to fit), remove dead strlen at end, and\nchange a few variable names and comments.\n\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Jim Meyering \u003cmeyering@redhat.com\u003e\n"
    },
    {
      "commit": "a27202fbe92b12eec895c36644440175de01d7a6",
      "tree": "90e3dfc70f43afe69e1e8f11ad5be08549a0e614",
      "parents": [
        "f07c9a79f06cd33b1c9c2c4eacb60bafa7e3f310"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "jim@meyering.net",
        "time": "Thu Apr 26 18:36:56 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:31 2012 -0400"
      },
      "message": "Btrfs: NUL-terminate path buffer in DEV_INFO ioctl result\n\nA device with name of length BTRFS_DEVICE_PATH_NAME_MAX or longer\nwould not be NUL-terminated in the DEV_INFO ioctl result buffer.\n\nSigned-off-by: Jim Meyering \u003cmeyering@redhat.com\u003e\n"
    },
    {
      "commit": "f07c9a79f06cd33b1c9c2c4eacb60bafa7e3f310",
      "tree": "73e493a66005d90f73d00cb3b09c6dc8fd5c18a2",
      "parents": [
        "2eec6c8102c62c540c637176271cfdb13d828d7b"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "jim@meyering.net",
        "time": "Thu Apr 26 18:35:12 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:31 2012 -0400"
      },
      "message": "Btrfs: avoid buffer overrun in btrfs_printk\n\nThe buffer read-overrun would be triggered by a printk format\nstarting with \u003cN\u003e, where N is a single digit.  NUL-terminate\nafter strncpy.  Use memcpy, not strncpy, since we know the\nstring we\u0027re copying fits in the destination buffer and\ncontains no NUL byte.\n\nSigned-off-by: Jim Meyering \u003cmeyering@redhat.com\u003e\n"
    },
    {
      "commit": "2eec6c8102c62c540c637176271cfdb13d828d7b",
      "tree": "35b32d27bf50122b8f89385940fb8c7a4926343b",
      "parents": [
        "0d2450abfa359ff94a2bee64a7daeba68c346c81"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel@quora.org",
        "time": "Thu Apr 26 00:37:14 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:30 2012 -0400"
      },
      "message": "Fix minor type issues\n\nAddress some minor type issues identified by sparse checker.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel@quora.org\u003e\n"
    },
    {
      "commit": "0d2450abfa359ff94a2bee64a7daeba68c346c81",
      "tree": "b6b9f88d0d51fa325dfa059a203e7e40856fc36c",
      "parents": [
        "0885ef5b5601e9b007c383e77c172769b1f214fd"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Tue Apr 24 22:59:16 2012 +0300"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:30 2012 -0400"
      },
      "message": "btrfs: allow changing \u0027thread_pool\u0027 size at remount time\n\nChanging \u0027mount -oremount,thread_pool\u003d2 /\u0027 didn\u0027t make any effect:\n\nmaximum amount of worker threads is specified in 2 places:\n- in \u0027strict btrfs_fs_info::thread_pool_size\u0027\n- in each worker struct: \u0027struct btrfs_workers::max_workers\u0027\n\n\u0027mount -oremount\u0027 updated only \u0027btrfs_fs_info::thread_pool_size\u0027.\n\nFix it by pushing new maximum value to all created worker structures\nas well.\n\nCc: Josef Bacik \u003cjosef@redhat.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\n"
    },
    {
      "commit": "0885ef5b5601e9b007c383e77c172769b1f214fd",
      "tree": "637186daaaa3201ca534e9981b574e538245e39e",
      "parents": [
        "551ebb2d34304ee2abfe6b00d39ec65d5e4e8266"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 23 15:09:39 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:29 2012 -0400"
      },
      "message": "Btrfs: do not do filemap_write_and_wait_range in fsync\n\nWe already do the btrfs_wait_ordered_range which will do this for us, so\njust remove this call so we don\u0027t call it twice.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "551ebb2d34304ee2abfe6b00d39ec65d5e4e8266",
      "tree": "19e9e5717e2dc031ba9b87bc314552dda886fce4",
      "parents": [
        "d7dbe9e7f64e72ec6548658857c5d92327a73633"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 23 14:41:09 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:28 2012 -0400"
      },
      "message": "Btrfs: remove useless waiting and extra filemap work\n\nIn btrfs_wait_ordered_range we have been calling filemap_fdata_write() twice\nbecause compression does strange things and then waiting.  Then we look up\nordered extents and if we find any we will always schedule_timeout(); once\nand then loop back around and do it all again.  We will even check to see if\nthere is delalloc pages on this range and loop again.  So this patch gets\nrid of the multipe fdata_write() calls and just does\nfilemap_write_and_wait().  In the case of compression we will still find the\nordered extents and start those individually if we need to so that is ok,\nbut in the normal buffered case we avoid all this weird overhead.\n\nThen in the case of the schedule_timeout(1), we don\u0027t need it.  All callers\neither 1) don\u0027t care, they just want to make sure what they just wrote maeks\nit to disk or 2) are doing the lock()-\u003elookup ordered-\u003eunlock-\u003eflush thing\nin which case it will lock and check for ordered extents _anyway_ so get\nback to them as quickly as possible.  The delaloc check is simply not\nneeded, this only catches the case where we write to the file again since\ndoing the filemap_write_and_wait() and if the caller truly cares about that\nit will take care of everything itself.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d7dbe9e7f64e72ec6548658857c5d92327a73633",
      "tree": "bd8867012783e347c3965aabe25352e7da272081",
      "parents": [
        "30f8fe3e47c5bb5715aa80b2a2fa0cab8b218fae"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 23 14:00:51 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:28 2012 -0400"
      },
      "message": "Btrfs: fix compile warnings in extent_io.c\n\nThese warnings are bogus since we will always have at least one page in an\neb, but to make the compiler happy just set ret \u003d 0 in these two cases.\nThanks,\nBtrfs: fix compile warnings in extent_io.c\n\nThese warnings are bogus since we will always have at least one page in an\neb, but to make the compiler happy just set ret \u003d 0 in these two cases.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "30f8fe3e47c5bb5715aa80b2a2fa0cab8b218fae",
      "tree": "127c63efa5d8676e9915124654e42dda27276847",
      "parents": [
        "0c4d2d95d06e920e0c61707e62c7fffc9c57f63a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 23 13:55:30 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:27 2012 -0400"
      },
      "message": "Btrfs: cache no acl on new inodes\n\nWhen running compilebench I noticed we were spending some time looking up\nacls on new inodes, which shouldn\u0027t be happening since there were no acls.\nThis is because when we init acls on the inode after creating them we don\u0027t\ncache the fact there are no acls if there aren\u0027t any.  Doing this adds a\nlittle bit of a bump to my compilebench runs.  Thanks,\nBtrfs: cache no acl on new inodes\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": "20b297d620cd1bb94127942bbb3702fb7b1030b2",
      "tree": "45e1d42c376b168ae55460e2d481f915d6cc8b78",
      "parents": [
        "19ae4e8133f370d820c4cdd61a4b703235664a5f"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sun May 20 15:43:53 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:36 2012 +0200"
      },
      "message": "Btrfs: tree mod log sanity checks in join_transaction\n\nWhen a fresh transaction begins, the tree mod log must be clean. Users of\nthe tree modification log must ensure they never span across transaction\nboundaries.\n\nWe reset the sequence to 0 in this safe situation to make absolutely sure\noverflow can\u0027t happen.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "19ae4e8133f370d820c4cdd61a4b703235664a5f",
      "tree": "3d8e34c149ea6a6ed4bdc5c176a4967e5ce37f39",
      "parents": [
        "8445f61cad927b6efffdd4e042a51a783ff8853f"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sun May 20 15:42:19 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:35 2012 +0200"
      },
      "message": "Btrfs: fs_info variable for join_transaction\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "8445f61cad927b6efffdd4e042a51a783ff8853f",
      "tree": "4f3b0c3172376fe73c3a296f47e0f38388015944",
      "parents": [
        "5d9e75c41d11ca79b1d1ff6ed17c88c9047d1fea"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 18:36:03 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:34 2012 +0200"
      },
      "message": "Btrfs: use the tree modification log for backref resolving\n\nThis enables backref resolving on life trees while they are changing. This\nis a prerequisite for quota groups and just nice to have for everything\nelse.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "5d9e75c41d11ca79b1d1ff6ed17c88c9047d1fea",
      "tree": "c7e6e1011997dcba5fd9522cd4172b34dec15860",
      "parents": [
        "f3ea38da3e76455fbd6d405cdca4d050ed085458"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 18:25:47 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:33 2012 +0200"
      },
      "message": "Btrfs: add btrfs_search_old_slot\n\nThe tree modification log together with the current state of the tree gives\na consistent, old version of the tree. btrfs_search_old_slot is used to\nsearch through this old version and return old (dummy!) extent buffers.\nNaturally, this function cannot do any tree modifications.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "f3ea38da3e76455fbd6d405cdca4d050ed085458",
      "tree": "8d0a86f40ca9516cb1a174c0716075e230bbfa0f",
      "parents": [
        "f230475e62f77930e776881deb6e95cfd2226bd4"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 11:45:21 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:32 2012 +0200"
      },
      "message": "Btrfs: add del_ptr and insert_ptr modifications to the tree mod log\n\nRecord all relevant modifications to block pointers in the tree mod log so\nthat we can rewind them later on for backref walking.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "f230475e62f77930e776881deb6e95cfd2226bd4",
      "tree": "bf57ab6531a988d5566138b9a4cf916ecfcbbf3f",
      "parents": [
        "bd989ba359f2acb8bc5f5490e19010fc0a6f8356"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 11:43:17 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:29 2012 +0200"
      },
      "message": "Btrfs: put all block modifications into the tree mod log\n\nWhen running functions that can make changes to the internal trees\n(e.g. btrfs_search_slot), we check if somebody may be interested in the\nblock we\u0027re currently modifying. If so, we record our modification to be\nable to rewind it later on.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "bd989ba359f2acb8bc5f5490e19010fc0a6f8356",
      "tree": "3689629e226678802bfe9b8a91ae560ef50a93f0",
      "parents": [
        "f29021b29a85701c08afadfd51d87163fb078059"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:18:50 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 30 15:17:01 2012 +0200"
      },
      "message": "Btrfs: add tree modification log functions\n\nThe tree mod log will log modifications made fs-tree nodes. Most\nmodifications are done by autobalance of the tree. Such changes are recorded\nas long as a block entry exists. When released, the log is cleaned.\n\nWith the tree modification log, it\u0027s possible to reconstruct a consistent\nold state of the tree. This is required to do backref walking on a busy\nfile system.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "528c032764f4d3c6cb5f5ece090d9d5882655982",
      "tree": "70996200fbb6d3baa52cd0028ef6a60d826417be",
      "parents": [
        "1db5df98faaf7aa6c25bc7d9703342d13678452a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 13 11:03:55 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:35 2012 -0400"
      },
      "message": "btrfs: trivial endianness annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0b0382bb4904965a9e9fca77ad87514dfda0d1c",
      "tree": "dc46873fa74e0d194e4a2571b16f0767e1919ae8",
      "parents": [
        "6d42e7e9f6d86ed4dfacde75a6cf515068f9749c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 02 14:34:06 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "-\u003eencode_fh() API change\n\npass inode + parent\u0027s inode or NULL instead of dentry + bool saying\nwhether we want the parent or not.\n\nNOTE: that needs ceph fix folded in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "f29021b29a85701c08afadfd51d87163fb078059",
      "tree": "b3d0bd17f97ae92c1c70031704ddf833b3bd8a7f",
      "parents": [
        "815a51c74ad14864d0a8fff5eea983819c18feae"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:55:38 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:54 2012 +0200"
      },
      "message": "Btrfs: add tree mod log to fs_info\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "815a51c74ad14864d0a8fff5eea983819c18feae",
      "tree": "be0835a915143fe9fa63a1c6f2a40dbfdc0c8646",
      "parents": [
        "64947ec0d16dd20d6542b58cf82c8d5f9678cabf"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:00:02 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:54 2012 +0200"
      },
      "message": "Btrfs: dummy extent buffers for tree mod log\n\nThe tree modification log needs two ways to create dummy extent buffers,\nonce by allocating a fresh one (to rebuild an old root) and once by\ncloning an existing one (to make private rewind modifications) to it.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "64947ec0d16dd20d6542b58cf82c8d5f9678cabf",
      "tree": "149082d2a5ae1fe3900c753f3129e83dd5ff6e9e",
      "parents": [
        "5581a51a59a1f5f51ac3d4bacafb738d35e0350b"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 16:57:09 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:53 2012 +0200"
      },
      "message": "Btrfs: move struct seq_list to ctree.h\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "5581a51a59a1f5f51ac3d4bacafb738d35e0350b",
      "tree": "d7e291e139d08f2be7870c9da602658df8f51ce8",
      "parents": [
        "976b1908d97bd8cbd024ba7aafaa3fb637ea8e13"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:04:52 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:53 2012 +0200"
      },
      "message": "Btrfs: don\u0027t set for_cow parameter for tree block functions\n\nThree callers of btrfs_free_tree_block or btrfs_alloc_tree_block passed\nparameter for_cow \u003d 1. In fact, these two functions should never mark\ntheir tree modification operations as for_cow, because they can change\nthe number of blocks referenced by a tree.\n\nHence, we remove the extra for_cow parameter from these functions and\nmake them pass a zero down.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "976b1908d97bd8cbd024ba7aafaa3fb637ea8e13",
      "tree": "77d53f8b40ea6a1692fbf93bdc2bbc0daf01e85c",
      "parents": [
        "d5c88b735fdf2ef796bb937396dd58dac84e8407"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu May 17 16:43:03 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:52 2012 +0200"
      },
      "message": "Btrfs: look into the extent during find_all_leafs\n\nBefore this patch we called find_all_leafs for a data extent, then called\nfind_all_roots and then looked into the extent to grab the information\nwe were seeking. This was done without holding the leaves locked to avoid\ndeadlocks. However, this can obviouly race with concurrent tree\nmodifications.\n\nInstead, we now look into the extent while we\u0027re holding the lock during\nfind_all_leafs and store this information together with the leaf list.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "d5c88b735fdf2ef796bb937396dd58dac84e8407",
      "tree": "791a9d9f670bacfd153680f9ef992f40099734bd",
      "parents": [
        "dadcaf78b51e239d93f5ec9aac736de99081ee74"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 15 17:55:51 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:51 2012 +0200"
      },
      "message": "Btrfs: bugfix: ignore the wrong key for indirect tree block backrefs\n\nThe key we store with a tree block backref is only a hint. It is set when\nthe ref is created and can remain correct for a long time. As the tree is\nrebalanced, however, eventually the key no longer points to the correct\ndestination.\n\nWith this patch, we change find_parent_nodes to no longer add keys unless it\nknows for sure they\u0027re correct (e.g. because they\u0027re for an extent data\nbackref). Then when we later encounter a backref ref with no parent and no\nkey set, we grab the block and take the first key from the block itself.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "dadcaf78b51e239d93f5ec9aac736de99081ee74",
      "tree": "d4c9e78136621f901300c5e8e0846babc59daea3",
      "parents": [
        "cd1b413c5c863a96bfdeab8e91b1fb3a52665e42"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 22 13:43:25 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:51 2012 +0200"
      },
      "message": "Btrfs: bugfix in btrfs_find_parent_nodes\n\nThat one has been around since the addition of backref.c. Due to the way we\ncalculate our slot numbers, after adding inline refs we\u0027re missing one keyed\nref unless it\u0027s located at the beginning of a new leaf.\n\nReported-by: Alexander Block \u003cablock84@googlemail.com\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "cd1b413c5c863a96bfdeab8e91b1fb3a52665e42",
      "tree": "a433c13c530c487f2d7e209402ef72ec67e48647",
      "parents": [
        "b9fab919b748c7b39c19ff236ed6c5682c266dde"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue May 22 14:56:50 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:49 2012 +0200"
      },
      "message": "Btrfs: ulist realloc bugfix\n\nulist_next gets the pointer to the previously returned element to find the\nnext element from there. However, when we call ulist_add while iteration\nwith ulist_next is in progress (ulist explicitly supports this), we can\nrealloc the ulist internal memory, which makes the pointer to the previous\nelement useless.\n\nInstead, we now use an iterator parameter that\u0027s independent from the\ninternal pointers.\n\nReported-by: Alexander Block \u003cablock84@googlemail.com\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "e8650a08232e75274304b812ff04cfce9af9671c",
      "tree": "0609c942e6ca99016e788ff2ee2bbed1bb9215a4",
      "parents": [
        "3c2c4b73aa79e4a1b601710b59e092441175f4bb",
        "f70d4a95edc7da87f39cd8b603ba131df2c198ed"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 19:22:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 22 19:22:50 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial updates from Jiri Kosina:\n \"As usual, it\u0027s mostly typo fixes, redundant code elimination and some\n  documentation updates.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (57 commits)\n  edac, mips: don\u0027t change code that has been removed in edac/mips tree\n  xtensa: Change mail addresses of Hannes Weiner and Oskar Schirmer\n  lib: Change mail address of Oskar Schirmer\n  net: Change mail address of Oskar Schirmer\n  arm/m68k: Change mail address of Sebastian Hess\n  i2c: Change mail address of Oskar Schirmer\n  net: Fix tcp_build_and_update_options comment in struct tcp_sock\n  atomic64_32.h: fix parameter naming mismatch\n  Kconfig: replace \"--- help ---\" with \"---help---\"\n  c2port: fix bogus Kconfig \"default no\"\n  edac: Fix spelling errors.\n  qla1280: Remove redundant NULL check before release_firmware() call\n  remoteproc: remove redundant NULL check before release_firmware()\n  qla2xxx: Remove redundant NULL check before release_firmware() call.\n  aic94xx: Get rid of redundant NULL check before release_firmware() call\n  tehuti: delete redundant NULL check before release_firmware()\n  qlogic: get rid of a redundant test for NULL before call to release_firmware()\n  bna: remove redundant NULL test before release_firmware()\n  tg3: remove redundant NULL test before release_firmware() call\n  typhoon: get rid of redundant conditional before all to release_firmware()\n  ...\n"
    },
    {
      "commit": "a25c75d5ad04df0a7abd09585231b4021a91a358",
      "tree": "699256c4426baa4648bba4faa2f69bda393c75c8",
      "parents": [
        "e06baab4184509bdfddd294efc6cae7a410c6f07"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Apr 18 09:59:29 2012 +0300"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:41 2012 -0400"
      },
      "message": "Btrfs: cleanup: use consistent lock naming\n\nIt confuses Smatch that we use two names for the same lock.  Plus the\nshorter name is nicer.  This doesn\u0027t change how the code works, it\u0027s\njust a cleanup.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\n"
    },
    {
      "commit": "e06baab4184509bdfddd294efc6cae7a410c6f07",
      "tree": "301e2060646d47de7885c925dd61b1c41f20b8f5",
      "parents": [
        "fd5e62a37cef5b212318c522eac0ecd394b50a19"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Thu Apr 12 12:53:40 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:40 2012 -0400"
      },
      "message": "Btrfs: change integrity checker to support big blocks\n\nThe integrity checker used to be coded for nodesize \u003d\u003d leafsize \u003d\u003d\nsectorsize \u003d\u003d PAGE_CACHE_SIZE.\nThis is now changed to support sizes for nodesize and leafsize which are\nN * PAGE_CACHE_SIZE.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "fd5e62a37cef5b212318c522eac0ecd394b50a19",
      "tree": "f25574f8dcb176445baf37f8766edf8a99d87727",
      "parents": [
        "477d7eafa9585ded87ee1c6f69638a6baf9d8922"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Fri Apr 06 14:35:05 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:40 2012 -0400"
      },
      "message": "Btrfs: remove the useless assignment to *entry in function tree_insert of file extent_io.c\n\nIn tree_insert, var *entry is used in the loop only, and is useless\nout of the loop. Remove the useless assignment after the loop.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\n"
    },
    {
      "commit": "477d7eafa9585ded87ee1c6f69638a6baf9d8922",
      "tree": "7508201e9d639c3049303bf91d53de6ab52e0bed",
      "parents": [
        "39bab87ba6f4d8cce2b70c19e60233ad8030d7b4"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Fri Apr 06 14:35:47 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:39 2012 -0400"
      },
      "message": "Btrfs: fix the comment for find_first_extent_bit\n\nThe return value of find_first_extent_bit is 1 or 0, no \u003c 0.\nAnd if found something, return 0; if nothing was found, return 1.\nFix the comment.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\n"
    },
    {
      "commit": "39bab87ba6f4d8cce2b70c19e60233ad8030d7b4",
      "tree": "000084281b76183533122fd2db482d3dc2376237",
      "parents": [
        "1b303fc0545b4bfbb2b8a69eec89e6f077f69b56"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Fri Apr 06 14:35:31 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:38 2012 -0400"
      },
      "message": "Btrfs: fix btrfs_release_extent_buffer_page with the right usage of num_extent_pages\n\nnum_extent_pages returns the number of pages in the specific range, not\nthe index of the last page in the eb range.\n\nbtrfs_release_extent_buffer_page is called with start_idx set 0 in current\ncodes, so it\u0027s not a problem yet. But the logic is indeed wrong.\n\nFix it here.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\n"
    },
    {
      "commit": "1b303fc0545b4bfbb2b8a69eec89e6f077f69b56",
      "tree": "442a84ff12f6b1ee905128c12640e32923a3296e",
      "parents": [
        "f775738f6fba9c7f6deaa540860d6fb7e2d28445"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Fri Apr 06 14:35:18 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:38 2012 -0400"
      },
      "message": "Btrfs: cleanup the comment for clear_state_bit in extent_io.c\n\nNo \u0027delete\u0027 arg is used for clear_state_bit.\nCleanup the comment.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\n"
    },
    {
      "commit": "f775738f6fba9c7f6deaa540860d6fb7e2d28445",
      "tree": "ad2276d30997368ea4f5fc90daee9d8c71ad03ba",
      "parents": [
        "d48b97b403d23f6df0b990cee652bdf9a52337a3"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Fri Mar 30 15:14:27 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 11 10:56:37 2012 -0400"
      },
      "message": "btrfs/ctree.c: remove the unnecessary \u0027return -1;\u0027 at the end of bin_search\n\nThe code path should not reach there. Remove it.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\n"
    },
    {
      "commit": "271fd5d7286eb931142402c170943d14640bb922",
      "tree": "dc60c1623f63a7db588de4c3c7362a9ac7abf56a",
      "parents": [
        "ce7e5d2d19bc371e1b67826bfbc79bbcbaa9772f",
        "b9fab919b748c7b39c19ff236ed6c5682c266dde"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 10:20:07 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 06 10:20: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 \"The big ones here are a memory leak we introduced in rc1, and a\n  scheduling while atomic if the transid on disk doesn\u0027t match the\n  transid we expected.  This happens for corrupt blocks, or out of date\n  disks.\n\n  It also fixes up the ioctl definition for our ioctl to resolve logical\n  inode numbers.  The __u32 was a merging error and doesn\u0027t match what\n  we ship in the progs.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: avoid sleeping in verify_parent_transid while atomic\n  Btrfs: fix crash in scrub repair code when device is missing\n  btrfs: Fix mismatching struct members in ioctl.h\n  Btrfs: fix page leak when allocing extent buffers\n  Btrfs: Add properly locking around add_root_to_dirty_list\n"
    },
    {
      "commit": "b9fab919b748c7b39c19ff236ed6c5682c266dde",
      "tree": "49e5a6f8041a7f0a9be0c1a39cd9088e3faa1df2",
      "parents": [
        "ea9947b4395fa34666086b2fa6f686e94903e047"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 06 07:23:47 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 06 07:23:47 2012 -0400"
      },
      "message": "Btrfs: avoid sleeping in verify_parent_transid while atomic\n\nverify_parent_transid needs to lock the extent range to make\nsure no IO is underway, and so it can safely clear the\nuptodate bits if our checks fail.\n\nBut, a few callers are using it with spinlocks held.  Most\nof the time, the generation numbers are going to match, and\nwe don\u0027t want to switch to a blocking lock just for the error\ncase.  This adds an atomic flag to verify_parent_transid,\nand changes it to return EAGAIN if it needs to block to\nproperly verifiy things.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "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": "ea9947b4395fa34666086b2fa6f686e94903e047",
      "tree": "086ab5150fc7f37b2070ab1200bf8b5275c85f06",
      "parents": [
        "d04b1debc92535453df2494d0b019edf0bb91003"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 04 15:16:07 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 04 15:16:07 2012 -0400"
      },
      "message": "Btrfs: fix crash in scrub repair code when device is missing\n\nFix that when scrub tries to repair an I/O or checksum error and one of\nthe devices containing the mirror is missing, it crashes in bio_add_page\nbecause the bdev is a NULL pointer for missing devices.\n\nReported-by: Marco L. Crociani \u003cmarco.crociani@gmail.com\u003e\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d04b1debc92535453df2494d0b019edf0bb91003",
      "tree": "386e5ce40a3d4c211bafc20da9480eb6783f6ab4",
      "parents": [
        "17de39ac17bf99b8bf0d819d13668d5048836efc"
      ],
      "author": {
        "name": "Alexander Block",
        "email": "ablock84@googlemail.com",
        "time": "Fri May 04 15:16:06 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 04 15:16:06 2012 -0400"
      },
      "message": "btrfs: Fix mismatching struct members in ioctl.h\n\nFix the size members of btrfs_ioctl_ino_path_args and\nbtrfs_ioctl_logical_ino_args. The user space btrfs-progs utilities used\n__u64 and the kernel headers used __u32 before.\n\nSigned-off-by: Alexander Block \u003cablock84@googlemail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17de39ac17bf99b8bf0d819d13668d5048836efc",
      "tree": "6afd6d7659ad9d4d46aecc24e359c026bae7c7f7",
      "parents": [
        "e5846fc665d1c3dd32d877febe7402ccd583b8a1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri May 04 15:16:06 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 04 15:16:06 2012 -0400"
      },
      "message": "Btrfs: fix page leak when allocing extent buffers\n\nIf we happen to alloc a extent buffer and then alloc a page and notice that\npage is already attached to an extent buffer, we will only unlock it and\nfree our existing eb.  Any pages currently attached to that eb will be\nproperly freed, but we don\u0027t do the page_cache_release() on the page where\nwe noticed the other extent buffer which can cause us to leak pages and I\nhope cause the weird issues we\u0027ve been seeing in this area.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e5846fc665d1c3dd32d877febe7402ccd583b8a1",
      "tree": "162d4487dd5cb573036507821d92d5c0c559d56b",
      "parents": [
        "dc7fdde39e4962b1a88741f7eba2a6b3be1285d8"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 03 12:08:48 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 04 15:14:11 2012 -0400"
      },
      "message": "Btrfs: Add properly locking around add_root_to_dirty_list\n\nadd_root_to_dirty_list happens once at the very beginning of the\ntransaction, but it is still racey.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.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": "dc7fdde39e4962b1a88741f7eba2a6b3be1285d8",
      "tree": "97cd8b1f9d8c0682c64303d45de1fb55925abcdf",
      "parents": [
        "fede766f28dd766d4e8feb321fdb19edb21ef6fb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 14:31:29 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 14:51:05 2012 -0400"
      },
      "message": "Btrfs: reduce lock contention during extent insertion\n\nWe\u0027re spending huge amounts of time on lock contention during\nend_io processing because we unconditionally assume we are overwriting\nan existing extent in the file for each IO.\n\nThis checks to see if we are outside i_size, and if so, it uses a\nless expensive readonly search of the btree to look for existing\nextents.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\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": "7654b72417e10e294563496e25211200f9b8b6d3",
      "tree": "5ca24ea9bb735133c0e09a789d3eb50d9a8b69b4",
      "parents": [
        "1f699d38b6556c393ac80f1c23c2053502a51631"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel@quora.org",
        "time": "Fri Apr 27 12:41:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:14 2012 -0400"
      },
      "message": "Btrfs: Fix space checking during fs resize\n\nFix out-of-space checking, addressing a warning and potential resource\nleak when resizing the filesystem down while allocating blocks.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel@quora.org\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f699d38b6556c393ac80f1c23c2053502a51631",
      "tree": "9ba8e3c95cc044461eab17dfba50515535ca2a25",
      "parents": [
        "1daf3540fa77faea2f91d96bcaf07ce48ee827be"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri Apr 27 12:41:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:14 2012 -0400"
      },
      "message": "Btrfs: fix block_rsv and space_info lock ordering\n\nmay_commit_transaction() calls\n        spin_lock(\u0026space_info-\u003elock);\n        spin_lock(\u0026delayed_rsv-\u003elock);\nand update_global_block_rsv() calls\n        spin_lock(\u0026block_rsv-\u003elock);\n        spin_lock(\u0026sinfo-\u003elock);\n\nLockdep complains about this at run time.\nEverywhere except in update_global_block_rsv(), the space_info lock is\nthe outer lock, therefore the locking order in update_global_block_rsv()\nis changed.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1daf3540fa77faea2f91d96bcaf07ce48ee827be",
      "tree": "0cdec92cca58085352b7ba8f4c3245a91dd0b5a9",
      "parents": [
        "3e74317ad773ba9df36db1fa32848cba41ac4d1a"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel@quora.org",
        "time": "Fri Apr 27 12:41:46 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:13 2012 -0400"
      },
      "message": "Btrfs: Prevent root_list corruption\n\nI was seeing root_list corruption on unmount during fs resize in 3.4-rc4; add\ncorrect locking to address this.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel@quora.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3e74317ad773ba9df36db1fa32848cba41ac4d1a",
      "tree": "ad017d3a85aeaf32dbfd5c63312ff200502d33a7",
      "parents": [
        "996d282c7ff470f150a467eb4815b90159d04c47"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Apr 27 12:41:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:13 2012 -0400"
      },
      "message": "Btrfs: fix repair code for RAID10\n\nbtrfs_map_block sets mirror_num, so that the repair code knows eventually\nwhich device gave us the read error. For RAID10, mirror_num must be 1 or 2.\nBefore this fix mirror_num was incorrectly related to our stripe index.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "996d282c7ff470f150a467eb4815b90159d04c47",
      "tree": "e6dcab1fc9db79eff901aa3ea07d01ddc734999a",
      "parents": [
        "25cd999e1a685dab65292afbe9fa24d790d8a859"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 23 20:35:03 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Apr 27 13:55:12 2012 -0400"
      },
      "message": "Btrfs: do not start delalloc inodes during sync\n\nbtrfs_start_delalloc_inodes will just walk the list of delalloc inodes and\nstart writing them out, but it doesn\u0027t splice the list or anything so as\nlong as somebody is doing work on the box you could end up in this section\n_forever_.  So just remove it, it\u0027s not needed anyway since sync will start\nwriteback on all inodes anyway, all we need to do is wait for ordered\nextents and then we can commit the transaction.  In my horrible torture test\nsync goes from taking 4 minutes to about 1.5 minutes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "25cd999e1a685dab65292afbe9fa24d790d8a859",
      "tree": "56e2c7ceefddd657046f87eca111e2265cf00141",
      "parents": [
        "5c84fc3c3914e9adfa6155a167c6c0c2709e6a62"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri Mar 30 13:58:32 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:38 2012 +0200"
      },
      "message": "Btrfs: fix that check_int_data mount option was ignored\n\nThe bitfield member mount_opt was too small by one bit to hold the mount\noption that enabled to include data extents in the integrity checker.\nSince the same issue happened when the BTRFS_MOUNT_PANIC_ON_FATAL_ERROR\noption was added (git rebase silently merges so that the increase of the\nsize of the bitfield member is lost), the bit limit was removed entirely.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "5c84fc3c3914e9adfa6155a167c6c0c2709e6a62",
      "tree": "b2ef30b7872dc9f31f621681169abaf4eb9e8205",
      "parents": [
        "99ba55ad696944b37d5557bc5b4816890854fdb9"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri Mar 30 13:58:31 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:36 2012 +0200"
      },
      "message": "Btrfs: don\u0027t count CRC or header errors twice while scrubbing\n\nEach CRC or header error was counted twice, this is now fixed.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "99ba55ad696944b37d5557bc5b4816890854fdb9",
      "tree": "2c8bf9a167f351b89ef86e2133ffec7dfb5d1ce7",
      "parents": [
        "b9688bb8459b67e42327de6420edb405a9188775"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Mon Mar 19 16:17:22 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:35 2012 +0200"
      },
      "message": "Btrfs: fix btrfs_ioctl_dev_info() crash on missing device\n\nWhen a filesystem is mounted with the degraded option, it is\npossible that some of the devices are not there.\nbtrfs_ioctl_dev_info() crashs in this case because the device\nname is a NULL pointer. This ioctl was only used for scrub.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "b9688bb8459b67e42327de6420edb405a9188775",
      "tree": "90f1b5be9f4829463082e24357f5c9a5677797f3",
      "parents": [
        "253beebd5a255e07d6a8b65515491f33664e82a2"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed Apr 18 10:27:16 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:33 2012 +0200"
      },
      "message": "btrfs: don\u0027t return EINTR\n\nIt is basically a good thing if we are interruptible when waiting for\nfree space, but the generality in which it is implemented currently\nleads to system calls being interruptible that are not documented this\nway. For example git can\u0027t handle interrupted unlink(), leading to\ncorrupt repos under space pressure.\nInstead we raise the bar to only be interruptible by SIGKILL.\nThanks to David Sterba for suggesting this.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "253beebd5a255e07d6a8b65515491f33664e82a2",
      "tree": "9bc6b5f567b7683df4b2a8d46ecdc6d8dd139d1e",
      "parents": [
        "5cf1ab56133ad7b712673c071b439d4a555a2d1e"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Apr 18 09:59:03 2012 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:31 2012 +0200"
      },
      "message": "Btrfs: double unlock bug in error handling\n\nThe caller expects this function to return with the lock held and\nreleases it immediately on error.\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@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": "48d282326b3ce5f435835f5fb0e3231c399f4f9a",
      "tree": "eaac4c3c02d2168ed47ba50e41f765a32f319c61",
      "parents": [
        "8a3db1849e9e2563727ea2dc32737502e0096641"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "Julia.Lawall@lip6.fr",
        "time": "Sat Apr 14 11:24:33 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:28 2012 +0200"
      },
      "message": "fs/btrfs/volumes.c: add missing free_fs_devices\n\nFree fs_devices as done in the error-handling code just below.\n\nSigned-off-by: Julia Lawall \u003cJulia.Lawall@lip6.fr\u003e\n"
    },
    {
      "commit": "8a3db1849e9e2563727ea2dc32737502e0096641",
      "tree": "378c3527b32dea43c50a3cd1cf534d7901aab4be",
      "parents": [
        "37db63a400d3bac467795aa43901065fd8d903b7"
      ],
      "author": {
        "name": "Sergei Trofimovich",
        "email": "slyfox@gentoo.org",
        "time": "Mon Apr 16 06:44:37 2012 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:26 2012 +0200"
      },
      "message": "btrfs: fix early abort in \u0027remount\u0027\n\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Sergei Trofimovich \u003cslyfox@gentoo.org\u003e\n"
    },
    {
      "commit": "37db63a400d3bac467795aa43901065fd8d903b7",
      "tree": "6dcafae4fa5e43bccaac3799685b1519575968a2",
      "parents": [
        "b916a59adfdc875381b68ced258694b434cf43ae"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Apr 13 17:05:08 2012 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:25 2012 +0200"
      },
      "message": "Btrfs: fix max chunk size check in chunk allocator\n\nFix a bug, where in case we need to adjust stripe_size so that the\nlength of the resulting chunk is less than or equal to max_chunk_size,\nDUP chunks turn out to be only half as big as they could be.\n\nCc: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "b916a59adfdc875381b68ced258694b434cf43ae",
      "tree": "7c73c9326cd558e9a5ae34381a6450e354a65a9d",
      "parents": [
        "aefc1eb13ebbb86c5ffade8a9e2425cd71032d7e"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Apr 13 12:28:08 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:23 2012 +0200"
      },
      "message": "Btrfs: add missing read locks in backref.c\n\niref_to_path and iterate_irefs both increment the eb\u0027s refcount to use it\nafter releasing the path. Both depend on consistent data remaining in the\nextent buffer and need a read lock to protect it.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "aefc1eb13ebbb86c5ffade8a9e2425cd71032d7e",
      "tree": "36acddddf6f4b50877b22e683704bc2cbaf4d3b5",
      "parents": [
        "4735fb282830c0966b301dabcccf4753fa6604bb"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Apr 13 12:28:00 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:21 2012 +0200"
      },
      "message": "Btrfs: don\u0027t call free_extent_buffer twice in iterate_irefs\n\nAvoid calling free_extent_buffer more than once when the iterator function\nreturns non-zero. The only code that uses this is scrub repair for corrupted\nnodatasum blocks.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "4735fb282830c0966b301dabcccf4753fa6604bb",
      "tree": "1749491d41f888c29dbad6de37fe3fbe81a38fc3",
      "parents": [
        "cdc6a3952558f00b1bc3b6401e1cf98797632fe2"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Apr 12 22:47:52 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:20 2012 +0200"
      },
      "message": "Btrfs: Make free_ipath() deal gracefully with NULL pointers\n\nMake free_ipath() behave like most other freeing functions in the\nkernel and gracefully do nothing when passed a NULL pointer.\n\nBesides this making the bahaviour consistent with functions such as\nkfree(), vfree(), btrfs_free_path() etc etc, it also fixes a real NULL\nderef issue in fs/btrfs/ioctl.c::btrfs_ioctl_ino_to_path(). In that\nfunction we have this code:\n\n...\n        ipath \u003d init_ipath(size, root, path);\n        if (IS_ERR(ipath)) {\n                ret \u003d PTR_ERR(ipath);\n                ipath \u003d NULL;\n                goto out;\n        }\n...\nout:\n        btrfs_free_path(path);\n        free_ipath(ipath);\n...\n\nIf we ever take the true branch of that \u0027if\u0027 statement we\u0027ll end up\npassing a NULL pointer to free_ipath() which will subsequently\ndereference it and we\u0027ll go \"Boom\" :-(\nThis patch will avoid that.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\n"
    },
    {
      "commit": "cdc6a3952558f00b1bc3b6401e1cf98797632fe2",
      "tree": "b97cf714429b439c6887b2fe0acf9065e1d09f1f",
      "parents": [
        "8e52acf70459020d7e9e9fda25066be4da520943"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 12 16:39:48 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:18 2012 +0200"
      },
      "message": "Btrfs: avoid possible use-after-free in clear_extent_bit()\n\nclear_extent_bit()\n{\n    next_node \u003d rb_next(\u0026state-\u003erb_node);\n    ...\n    clear_state_bit(state);  \u003c-- this may free next_node\n    if (next_node) {\n        state \u003d rb_entry(next_node);\n        ...\n    }\n}\n\nclear_state_bit() calls merge_state() which may free the next node\nof the passing extent_state, so clear_extent_bit() may end up\nreferencing freed memory.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "8e52acf70459020d7e9e9fda25066be4da520943",
      "tree": "f6c63a909414958b3a8155fa83b17ea1c3c10525",
      "parents": [
        "871383be592ba7e819d27556591e315a0df38cee"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 12 16:39:28 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:16 2012 +0200"
      },
      "message": "Btrfs: retrurn void from clear_state_bit\n\nCurrently it returns a set of bits that were cleared, but this return\nvalue is not used at all.\n\nMoreover it doesn\u0027t seem to be useful, because we may clear the bits\nof a few extent_states, but only the cleared bits of last one is\nreturned.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "871383be592ba7e819d27556591e315a0df38cee",
      "tree": "0f0c2bc7ecf2d70a5ffa842001d70b5b0f8958d0",
      "parents": [
        "8d082fb727ac11930ea20bf1612e334ea7c2b697"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Apr 02 18:31:37 2012 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:14 2012 +0200"
      },
      "message": "btrfs: add missing unlocks to transaction abort paths\n\nAdded in commit 49b25e0540904be0bf558b84475c69d72e4de66e\n(\"btrfs: enhance transaction abort infrastructure\")\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "8d082fb727ac11930ea20bf1612e334ea7c2b697",
      "tree": "417f84a4e3743bf0af435e0e339ef3fc54520a68",
      "parents": [
        "207a232ccac0a8cb79d304bd17298dbc96e2e082"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Tue Apr 03 09:56:53 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:13 2012 +0200"
      },
      "message": "Btrfs: do not mount when we have a sectorsize unequal to PAGE_SIZE\n\nOur code is not ready to cope with a sectorsize that\u0027s not equal to PAGE_SIZE.\nIt will lead to hanging-on while writing something.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "207a232ccac0a8cb79d304bd17298dbc96e2e082",
      "tree": "baed843e078e80d04ff28054751dea22e98bea0b",
      "parents": [
        "8c9c2bf7a3c4f7e9d158c0be9c49f372fb943ad2"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sat Feb 25 09:09:47 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:12:44 2012 +0200"
      },
      "message": "btrfs: don\u0027t add both copies of DUP to reada extent tree\n\nNormally when there are 2 copies of a block, we add both to the\nreada extent tree and prefetch only the one that is easier to reach.\nThis way we can better utilize multiple devices.\nIn case of DUP this makes no sense as both copies reside on the\nsame device.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\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"
    }
  ],
  "next": "d44c6d4fa9b3d9b4f6d8d1751d9cbc50ed53cffe"
}
