)]}'
{
  "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": "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": "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": "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": "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": "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": "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": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "d0082371cf086e0ba2bbd0367b2c9920532df24f",
      "tree": "4ae3fb6565f36fd606ab6e4b83d489e66b3b86d7",
      "parents": [
        "143bede527b054a271053f41bfaca2b57baa9408"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: drop gfp_t from lock_extent\n\n lock_extent and unlock_extent are always called with GFP_NOFS, drop the\n argument and use GFP_NOFS consistently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "855a85f704026d5fe7de94fb1b765fe03404507f",
      "tree": "553817c0f7230e104623dc7e8a900bbbcc881d3e",
      "parents": [
        "ee3253241a928f6c5c40960629d7071eb6a4b23c",
        "e77266e4c4be6f9dc91bf688bce015a8babd5fe0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nQuoth Chris:\n \"This is later than I wanted because I got backed up running through\n  btrfs bugs from the Oracle QA teams.  But they are all bug fixes that\n  we\u0027ve queued and tested since rc1.\n\n  Nothing in particular stands out, this just reflects bug fixing and QA\n  done in parallel by all the btrfs developers.  The most user visible\n  of these is:\n\n    Btrfs: clear the extent uptodate bits during parent transid failures\n\n  Because that helps deal with out of date drives (say an iscsi disk\n  that has gone away and come back).  The old code wasn\u0027t always\n  properly retrying the other mirror for this type of failure.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)\n  Btrfs: fix compiler warnings on 32 bit systems\n  Btrfs: increase the global block reserve estimates\n  Btrfs: clear the extent uptodate bits during parent transid failures\n  Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n  Btrfs: make sure we update latest_bdev\n  Btrfs: improve error handling for btrfs_insert_dir_item callers\n  Btrfs: be less strict on finding next node in clear_extent_bit\n  Btrfs: fix a bug on overcommit stuff\n  Btrfs: kick out redundant stuff in convert_extent_bit\n  Btrfs: skip states when they does not contain bits to clear\n  Btrfs: check return value of lookup_extent_mapping() correctly\n  Btrfs: fix deadlock on page lock when doing auto-defragment\n  Btrfs: fix return value check of extent_io_ops\n  btrfs: honor umask when creating subvol root\n  btrfs: silence warning in raid array setup\n  btrfs: fix structs where bitfields and spinlock/atomic share 8B word\n  btrfs: delalloc for page dirtied out-of-band in fixup worker\n  Btrfs: fix memory leak in load_free_space_cache()\n  btrfs: don\u0027t check DUP chunks twice\n  Btrfs: fix trim 0 bytes after a device delete\n  ...\n"
    },
    {
      "commit": "6af021d8fc3bcce790e7fbb391e39c5920fa3f71",
      "tree": "9b3e3f49627aed11fa3105c469b1719c71a39636",
      "parents": [
        "8f24b49688281a77e8331894ed407f0cfe732303"
      ],
      "author": {
        "name": "Jeff Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Thu Feb 09 14:25:50 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Feb 15 16:40:23 2012 +0100"
      },
      "message": "Btrfs: return the internal error unchanged if btrfs_get_extent_fiemap() call failed for SEEK_DATA/SEEK_HOLE inquiry\n\nGiven that ENXIO only means \"offset beyond EOF\" for either SEEK_DATA or SEEK_HOLE inquiry\nin a desired file range, so we should return the internal error unchanged if btrfs_get_extent_fiemap()\ncall failed, rather than ENXIO.\n\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\n"
    },
    {
      "commit": "d98456fcafa6f3fd1985f9b7429aaa3531c6bfa0",
      "tree": "7cf01b839f68a612b8d612e7eb6315955f792d73",
      "parents": [
        "9998eb703490589c3e8f1bf09b15203156776edb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 31 20:27:41 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 31 20:27:41 2012 -0500"
      },
      "message": "Btrfs: don\u0027t reserve data with extents locked in btrfs_fallocate\n\nbtrfs_fallocate tries to allocate space only if ranges in the file don\u0027t\nalready exist.  But the enospc checks it does are not allowed with\nextents locked.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
      "tree": "7bd26fc9a111c6af1601ecd2d1b0ab60da32f3f0",
      "parents": [
        "67175b855bfd6ed95ffeff95532173c07de6432d",
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)\n  Btrfs: use larger system chunks\n  Btrfs: add a delalloc mutex to inodes for delalloc reservations\n  Btrfs: space leak tracepoints\n  Btrfs: protect orphan block rsv with spin_lock\n  Btrfs: add allocator tracepoints\n  Btrfs: don\u0027t call btrfs_throttle in file write\n  Btrfs: release space on error in page_mkwrite\n  Btrfs: fix btrfsck error 400 when truncating a compressed\n  Btrfs: do not use btrfs_end_transaction_throttle everywhere\n  Btrfs: add balance progress reporting\n  Btrfs: allow for resuming restriper after it was paused\n  Btrfs: allow for canceling restriper\n  Btrfs: allow for pausing restriper\n  Btrfs: add skip_balance mount option\n  Btrfs: recover balance on mount\n  Btrfs: save balance parameters to disk\n  Btrfs: soft profile changing mode (aka soft convert)\n  Btrfs: implement online profile changing\n  Btrfs: do not reduce profile in do_chunk_alloc()\n  Btrfs: virtual address space subset filter\n  ...\n\nFix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new\nmnt_drop_write_file() helper.\n"
    },
    {
      "commit": "45a8090e626ab470c91142954431a93846030b0d",
      "tree": "2a13259734f99cbc8f176ed395a2d1f35e36ad27",
      "parents": [
        "ec39e180fd3188c983c94603634bfcd019f42ae7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Jan 12 19:10:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:28:55 2012 -0500"
      },
      "message": "Btrfs: don\u0027t call btrfs_throttle in file write\n\nBtrfs_throttle will make us wait if there is a currently committing transaction\nuntil we can open new transactions, which is ridiculous since we don\u0027t actually\nstart any transactions within the file write path anyway, so all this does is\nintroduce big latencies if we have a sync/fsync heavy workload going on while\nsomebody else is trying to do work.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "001a541ea9163ace5e8243ee0e907ad80a4c0ec2",
      "tree": "a76225046369c440de93739add9823f5ea060245",
      "parents": [
        "40ba587923ae67090d9f141c1d3c951be5c1420e",
        "bc31b86a5923fad5f3fbb6192f767f410241ba27"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:59:59 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:59:59 2012 -0800"
      },
      "message": "Merge branch \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\n* \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: move MIN_WRITEBACK_PAGES to fs-writeback.c\n  writeback: balanced_rate cannot exceed write bandwidth\n  writeback: do strict bdi dirty_exceeded\n  writeback: avoid tiny dirty poll intervals\n  writeback: max, min and target dirty pause time\n  writeback: dirty ratelimit - think time compensation\n  btrfs: fix dirtied pages accounting on sub-page writes\n  writeback: fix dirtied pages accounting on redirty\n  writeback: fix dirtied pages accounting on sub-page writes\n  writeback: charge leaked page dirties to active tasks\n  writeback: Include all dirty inodes in background writeback\n"
    },
    {
      "commit": "e3a41a5ba9c2ab988b9f1442925109dca2382fd9",
      "tree": "a89e8b4bc3aa5e60f16c390d1abb3760317a5207",
      "parents": [
        "0faa70cb0180d45a06208e54b552a538aabb8a30"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Tue Jan 10 15:07:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:44 2012 -0800"
      },
      "message": "btrfs: pass __GFP_WRITE for buffered write page allocations\n\nTell the page allocator that pages allocated for a buffered write are\nexpected to become dirty soon.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66d7e7f09f77456fe68683247d77721032a00ee5",
      "tree": "bbf7df3933ed47aa202d60d835864543d25df82d",
      "parents": [
        "c7d22a3c3cdb73d8a0151e2ccc8cf4a48c48310b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon Sep 12 15:26:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 22 16:22:27 2011 +0100"
      },
      "message": "Btrfs: mark delayed refs as for cow\n\nAdd a for_cow parameter to add_delayed_*_ref and pass the appropriate value\nfrom every call site. The for_cow parameter will later on be used to\ndetermine if a ref will change anything with respect to qgroups.\n\nDelayed refs coming from relocation are always counted as for_cow, as they\ndon\u0027t change subvol quota.\n\nAlso pass in the fs_info for later use.\n\nbtrfs_find_all_roots() will use this as an optimization, as changes that are\nfor_cow will not change anything with respect to which root points to a\ncertain leaf. Thus, we don\u0027t need to add the current sequence number to\nthose delayed refs.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "32c7f202a4801252a0f3578807b75a961f792870",
      "tree": "c09d5578604e83c2c421aca32b6b125d70b4a2bc",
      "parents": [
        "2f800fbd777b792de54187088df19a7df0251254"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Aug 08 15:19:47 2011 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sun Dec 18 14:20:25 2011 +0800"
      },
      "message": "btrfs: fix dirtied pages accounting on sub-page writes\n\nWhen doing 1KB sequential writes to the same page,\nbalance_dirty_pages_ratelimited_nr() should be called once instead of 4\ntimes, the latter makes the dirtier tasks be throttled much too heavy.\n\nFix it with proper de-accounting on clear_page_dirty_for_io().\n\nCC: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "c9a7fe9672612c0b595633d2945f52257ad92b20",
      "tree": "df251545a12fdbb895c07ec9dccde10163624b7f",
      "parents": [
        "2cfab8d74ebfbe06ce2947117945c4f45a5915ec",
        "d85c8a6f1bc083279215ff6e79b7c292bf3ec905",
        "142349f541d0bb6bc3e0d4563268105aada42b0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Dec 16 12:15:50 2011 -0800"
      },
      "message": "Merge branches \u0027for-linus\u0027 and \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: unplug every once and a while\n  Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code\n  Btrfs: only set cache_generation if we setup the block group\n  Btrfs: don\u0027t panic if orphan item already exists\n  Btrfs: fix leaked space in truncate\n  Btrfs: fix how we do delalloc reservations and how we free reservations on error\n  Btrfs: deal with enospc from dirtying inodes properly\n  Btrfs: fix num_workers_starting bug and other bugs in async thread\n  BTRFS: Establish i_ops before calling d_instantiate\n  Btrfs: add a cond_resched() into the worker loop\n  Btrfs: fix ctime update of on-disk inode\n  btrfs: keep orphans for subvolume deletion\n  Btrfs: fix inaccurate available space on raid0 profile\n  Btrfs: fix wrong disk space information of the files\n  Btrfs: fix wrong i_size when truncating a file to a larger size\n  Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror\n\n* \u0027for-linus-3.2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  btrfs: lower the dirty balance poll interval\n"
    },
    {
      "commit": "142349f541d0bb6bc3e0d4563268105aada42b0b",
      "tree": "c86e13b5cf8b87b3b4f3c5218442e221ce17f67b",
      "parents": [
        "dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Fri Dec 16 12:32:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 16 12:32:57 2011 -0500"
      },
      "message": "btrfs: lower the dirty balance poll interval\n\nTests show that the original large intervals can easily make the dirty\nlimit exceeded on 100 concurrent dd\u0027s. So adapt to as large as the\nnext check point selected by the dirty throttling algorithm.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "22c44fe65adacd20a174f3f54686509ee94ef7be",
      "tree": "1d590b9e0d238970debd73a730c4e6553c2f7f1b",
      "parents": [
        "0dc3b84a73267f47a75468f924f5d58a840e3152"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 30 10:45:38 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:21 2011 -0500"
      },
      "message": "Btrfs: deal with enospc from dirtying inodes properly\n\nNow that we\u0027re properly keeping track of delayed inode space we\u0027ve been getting\na lot of warnings out of btrfs_dirty_inode() when running xfstest 83.  This is\nbecause a bunch of people call mark_inode_dirty, which is void so we can\u0027t\nreturn ENOSPC.  This needs to be fixed in a few areas\n\n1) file_update_time - this updates the mtime and such when writing to a file,\nwhich will call mark_inode_dirty.  So copy file_update_time into btrfs so we can\ncall btrfs_dirty_inode directly and return an error if we get one appropriately.\n\n2) fix symlinks to use btrfs_setattr for -\u003esetattr.  For some reason we weren\u0027t\nsetting -\u003esetattr for symlinks, even though we should have been.  This catches\none of the cases where we were getting errors in mark_inode_dirty.\n\n3) Fix btrfs_setattr and btrfs_setsize to call btrfs_dirty_inode directly\ninstead of mark_inode_dirty.  This lets us return errors properly for truncate\nand chown/anything related to setattr.\n\n4) Add a new btrfs_fs_dirty_inode which will just call btrfs_dirty_inode and\nprint an error if we have one.  The only remaining user we can\u0027t control for\nthis is touch_atime(), but we don\u0027t really want to keep people from walking\ndown the tree if we don\u0027t have space to save the atime update, so just complain\nbut don\u0027t worry about it.\n\nWith this patch xfstests 83 complains a handful of times instead of hundreds of\ntimes.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "6a6662ced4153f6dbcfc40d7225c3cc45416039c",
      "tree": "77ad5d577333f02cd854e44827a407dd0388d4eb",
      "parents": [
        "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
        "7c7e82a77fe3d89ae50824aa7c897454675eb4c4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 20:03:41 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (114 commits)\n  Btrfs: check for a null fs root when writing to the backup root log\n  Btrfs: fix race during transaction joins\n  Btrfs: fix a potential btrfs_bio leak on scrub fixups\n  Btrfs: rename btrfs_bio multi -\u003e bbio for consistency\n  Btrfs: stop leaking btrfs_bios on readahead\n  Btrfs: stop the readahead threads on failed mount\n  Btrfs: fix extent_buffer leak in the metadata IO error handling\n  Btrfs: fix the new inspection ioctls for 32 bit compat\n  Btrfs: fix delayed insertion reservation\n  Btrfs: ClearPageError during writepage and clean_tree_block\n  Btrfs: be smarter about committing the transaction in reserve_metadata_bytes\n  Btrfs: make a delayed_block_rsv for the delayed item insertion\n  Btrfs: add a log of past tree roots\n  btrfs: separate superblock items out of fs_info\n  Btrfs: use the global reserve when truncating the free space cache inode\n  Btrfs: release metadata from global reserve if we have to fallback for unlink\n  Btrfs: make sure to flush queued bios if write_cache_pages waits\n  Btrfs: fix extent pinning bugs in the tree log\n  Btrfs: make sure btrfs_remove_free_space doesn\u0027t leak EAGAIN\n  Btrfs: don\u0027t wait as long for more batches during SSD log commit\n  ...\n"
    },
    {
      "commit": "ef3d0fd27e90f67e35da516dafc1482c82939a60",
      "tree": "dea852eab2a52782867becffb11bce2577ed2b91",
      "parents": [
        "847cc6371ba820763773e993000410d6d8d23515"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Thu Sep 15 16:06:48 2011 -0700"
      },
      "committer": {
        "name": "root",
        "email": "root@serles.lst.de",
        "time": "Fri Oct 28 14:58:58 2011 +0200"
      },
      "message": "vfs: do (nearly) lockless generic_file_llseek\n\nThe i_mutex lock use of generic _file_llseek hurts.  Independent processes\naccessing the same file synchronize over a single lock, even though\nthey have no need for synchronization at all.\n\nUnder high utilization this can cause llseek to scale very poorly on larger\nsystems.\n\nThis patch does some rethinking of the llseek locking model:\n\nFirst the 64bit f_pos is not necessarily atomic without locks\non 32bit systems. This can already cause races with read() today.\nThis was discussed on linux-kernel in the past and deemed acceptable.\nThe patch does not change that.\n\nLet\u0027s look at the different seek variants:\n\nSEEK_SET: Doesn\u0027t really need any locking.\nIf there\u0027s a race one writer wins, the other loses.\n\nFor 32bit the non atomic update races against read()\nstay the same. Without a lock they can also happen\nagainst write() now.  The read() race was deemed\nacceptable in past discussions, and I think if it\u0027s\nok for read it\u0027s ok for write too.\n\n\u003d\u003e Don\u0027t need a lock.\n\nSEEK_END: This behaves like SEEK_SET plus it reads\nthe maximum size too. Reading the maximum size would have the\n32bit atomic problem. But luckily we already have a way to read\nthe maximum size without locking (i_size_read), so we\ncan just use that instead.\n\nWithout i_mutex there is no synchronization with write() anymore,\nhowever since the write() update is atomic on 64bit it just behaves\nlike another racy SEEK_SET.  On non atomic 32bit it\u0027s the same\nas SEEK_SET.\n\n\u003d\u003e Don\u0027t need a lock, but need to use i_size_read()\n\nSEEK_CUR: This has a read-modify-write race window\non the same file. One could argue that any application\ndoing unsynchronized seeks on the same file is already broken.\nBut for the sake of not adding a regression here I\u0027m\nusing the file-\u003ef_lock to synchronize this. Using this\nlock is much better than the inode mutex because it doesn\u0027t\nsynchronize between processes.\n\n\u003d\u003e So still need a lock, but can use a f_lock.\n\nThis patch implements this new scheme in generic_file_llseek.\nI dropped generic_file_llseek_unlocked and changed all callers.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3b16a4e3c355ee3c790473decfcf83d4faeb8ce0",
      "tree": "5c3dad941468cf6952623cc18d6b1e682ee3f264",
      "parents": [
        "455757c322cc0a0f2a692c5625dd88aaf6a7b889"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Sep 21 15:05:58 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:45 2011 -0400"
      },
      "message": "Btrfs: use the inode\u0027s mapping mask for allocating pages\n\nJohannes pointed out we were allocating only kernel pages for doing writes,\nwhich is kind of a big deal if you are on 32bit and have more than a gig of ram.\nSo fix our allocations to use the mapping\u0027s gfp but still clear __GFP_FS so we\ndon\u0027t re-enter.  Thanks,\n\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "1b9c332b6c92e992b1971a08412c6f460a54b514",
      "tree": "efdff83971345340faaf57823c0316962445a458",
      "parents": [
        "5e962c7850c273b483acc747b41bd5cddf631049"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Aug 17 10:19:52 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:36 2011 -0400"
      },
      "message": "Btrfs: only reserve space in fallocate if we have to do a preallocate\n\nLukas found a problem where if he tries to fallocate over the same region twice\nand the first fallocate took up all the space we would fail with ENOSPC.  This\nis because we reserve the total space we want to use for fallocate, regardless\nof wether or not we will have to actually preallocate.  So instead move the\ncheck into the loop where we actually have to do the preallocate.  Thanks,\n\nTested-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7fd21be75dce605e7cf273bd64b6d733d422fb04",
      "tree": "4a75560e71e10fb773d4ed367bcf0dd23be147c8",
      "parents": [
        "9b13776977d45505469edc6decc93e9e3799afe2",
        "b6316429af7f365f307dfd2b6a7a42f2563aef19"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 03 12:17:44 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 03 12:17:44 2011 -0700"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 of git://github.com/chrismason/linux\n\n* \u0027btrfs-3.0\u0027 of git://github.com/chrismason/linux:\n  Btrfs: force a page fault if we have a shorty copy on a page boundary\n"
    },
    {
      "commit": "b6316429af7f365f307dfd2b6a7a42f2563aef19",
      "tree": "f445576e448d3287d56650775bb7d0bc5a7d37c7",
      "parents": [
        "b6f3409b2197e8fcedb43e6600e37b7cfbe0715b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Sep 30 15:23:54 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Sep 30 15:23:54 2011 -0400"
      },
      "message": "Btrfs: force a page fault if we have a shorty copy on a page boundary\n\nA user reported a problem where ceph was getting into 100% cpu usage while doing\nsome writing.  It turns out it\u0027s because we were doing a short write on a not\nuptodate page, which means we\u0027d fall back at one page at a time and fault the\npage in.  The problem is our position is on the page boundary, so our fault in\nlogic wasn\u0027t actually reading the page, so we\u0027d just spin forever or until the\npage got read in by somebody else.  This will force a readpage if we end up\ndoing a short copy.  Alexandre could reproduce this easily with ceph and reports\nit fixes his problem.  I also wrote a reproducer that no longer hangs my box\nwith this patch.  Thanks,\n\nReported-and-tested-by: Alexandre Oliva \u003caoliva@redhat.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "48802c8ae2a9d618ec734a61283d645ad527e06c",
      "tree": "ee6da3e2edae6e355e6133dafd08d5323c136ac5",
      "parents": [
        "2cf4ce7c2a07782c3f4d899b380a78522bca3238"
      ],
      "author": {
        "name": "Jeff Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Sun Sep 18 10:34:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:34:02 2011 -0400"
      },
      "message": "BTRFS: Fix lseek return value for error\n\nThe recent reworking of btrfs\u0027 lseek lead to incorrect\nvalues being returned.  This adds checks for seeking\nbeyond EOF in SEEK_HOLE and makes sure the error\nvalues come back correct.\n\nAndi Kleen also sent in similar patches.\n\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\nReported-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b001b2edaead6fd906b1f87967ae05f082189c4",
      "tree": "2df377b4b08946af496941e9d18a48e9a100af6b",
      "parents": [
        "5dfcc87fd79dfb96ed155b524337dbd0da4f5993",
        "d525e8ab022cb000e6e31a515ba8c3cf0d9c6130"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://github.com/chrismason/linux\n\n* \u0027for-linus\u0027 of git://github.com/chrismason/linux:\n  Btrfs: add dummy extent if dst offset excceeds file end in\n  Btrfs: calc file extent num_bytes correctly in file clone\n  btrfs: xattr: fix attribute removal\n  Btrfs: fix wrong nbytes information of the inode\n  Btrfs: fix the file extent gap when doing direct IO\n  Btrfs: fix unclosed transaction handle in btrfs_cont_expand\n  Btrfs: fix misuse of trans block rsv\n  Btrfs: reset to appropriate block rsv after orphan operations\n  Btrfs: skip locking if searching the commit root in csum lookup\n  btrfs: fix warning in iput for bad-inode\n  Btrfs: fix an oops when deleting snapshots\n"
    },
    {
      "commit": "0c1a98c81413e00a6c379d898e06a09350d31926",
      "tree": "6f92bcd7954fc8131197ccca25b94a3a88dbb368",
      "parents": [
        "5b397377e97d436fc2ed872fc53f85395bb984e0"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Sun Sep 11 10:52:24 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:24 2011 -0400"
      },
      "message": "Btrfs: fix the file extent gap when doing direct IO\n\nWhen we write some data to the place that is beyond the end of the file\nin direct I/O mode, a data hole will be created. And Btrfs should insert\na file extent item that point to this hole into the fs tree. But unfortunately\nBtrfs forgets doing it.\n\nThe following is a simple way to reproduce it:\n # mkfs.btrfs /dev/sdc2\n # mount /dev/sdc2 /test4\n # touch /test4/a\n # dd if\u003d/dev/zero of\u003d/test4/a seek\u003d8 count\u003d1 bs\u003d4K oflag\u003ddirect conv\u003dnocreat,notrunc\n # umount /test4\n # btrfsck /dev/sdc2\n root 5 inode 257 errors 100\n\nReported-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "81d86e1b70961f4816f961875e0c706b0954acad",
      "tree": "ac69ce2e8d174260770d1a84d7d8fe910939c923",
      "parents": [
        "9a4327ca1f45f82edad7dc0a4e52ce9316e0950c",
        "f1e490a7ebe41e06324abbbcd86005b0af02a375"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:38:03 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:38:03 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "f1e490a7ebe41e06324abbbcd86005b0af02a375",
      "tree": "c8ffa501d66399656377b7b4c633aaadd1604467",
      "parents": [
        "f81c9cdc567cd3160ff9e64868d9a1a7ee226480"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Aug 18 10:36:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:36:39 2011 -0400"
      },
      "message": "Btrfs: set i_size properly when fallocating and we already\n\nxfstests exposed a problem with preallocate when it fallocates a range that\nalready has an extent.  We don\u0027t set the new i_size properly because we see that\nwe already have an extent.  This isn\u0027t right and we should update i_size if the\nspace already exists.  With this patch we now pass xfstests 075.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9a4327ca1f45f82edad7dc0a4e52ce9316e0950c",
      "tree": "322aa21ccdd9a9aaeac28ccdb08ae1e1b5baeb12",
      "parents": [
        "cb6db4e57632ba8589cc2f9fe1d0aa9116b87ab8"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Aug 18 10:16:05 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:16:05 2011 -0400"
      },
      "message": "btrfs: unlock on error in btrfs_file_llseek()\n\nThere were some unlocks on error missing in a recent patch to\nbtrfs_file_llseek().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f4ac904c411b55e58bb240f332f93db2455f0010",
      "tree": "410d865fa3f723e023970ece5637f4a21e6de0aa",
      "parents": [
        "c97c2916e25c56e878e3e94efd449e2d688fcb31"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Fri Aug 05 14:19:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 16 21:09:15 2011 -0400"
      },
      "message": "btrfs: memory leak in btrfs_add_inode_defrag()\n\nWe don\u0027t use the defrag struct on this path.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed8f37370d83e695c0a4fa5d5fc7a83ecb947526",
      "tree": "2e57247c609a495b31892b2d05ea52e35556ab60",
      "parents": [
        "a6b11f53388973d99c4a357c22b19753b424e73c",
        "0d10ee2e6deb5c8409ae65b970846344897d5e4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (31 commits)\n  Btrfs: don\u0027t call writepages from within write_full_page\n  Btrfs: Remove unused variable \u0027last_index\u0027 in file.c\n  Btrfs: clean up for find_first_extent_bit()\n  Btrfs: clean up for wait_extent_bit()\n  Btrfs: clean up for insert_state()\n  Btrfs: remove unused members from struct extent_state\n  Btrfs: clean up code for merging extent maps\n  Btrfs: clean up code for extent_map lookup\n  Btrfs: clean up search_extent_mapping()\n  Btrfs: remove redundant code for dir item lookup\n  Btrfs: make acl functions really no-op if acl is not enabled\n  Btrfs: remove remaining ref-cache code\n  Btrfs: remove a BUG_ON() in btrfs_commit_transaction()\n  Btrfs: use wait_event()\n  Btrfs: check the nodatasum flag when writing compressed files\n  Btrfs: copy string correctly in INO_LOOKUP ioctl\n  Btrfs: don\u0027t print the leaf if we had an error\n  btrfs: make btrfs_set_root_node void\n  Btrfs: fix oops while writing data to SSD partitions\n  Btrfs: Protect the readonly flag of block group\n  ...\n\nFix up trivial conflicts (due to acl and writeback cleanups) in\n - fs/btrfs/acl.c\n - fs/btrfs/ctree.h\n - fs/btrfs/extent_io.c\n"
    },
    {
      "commit": "341d14f161a475ebdbc9adff1f7e681e1185dee9",
      "tree": "fff1cee32665375837b5ae735ddff17a173f24db",
      "parents": [
        "69261c4b6a394ead1b5ca2966c908469355eb603"
      ],
      "author": {
        "name": "Mitch Harder",
        "email": "mitch.harder@sabayonlinux.org",
        "time": "Tue Jul 12 19:43:45 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:32:39 2011 -0400"
      },
      "message": "Btrfs: Remove unused variable \u0027last_index\u0027 in file.c\n\nThe variable \u0027last_index\u0027 is calculated in the __btrfs_buffered_write\nfunction and passed as a parameter to the prepare_pages function,\nbut is not used anywhere in the prepare_pages function.\n\nRemove instances of \u0027last_index\u0027 in these functions.\n\nSigned-off-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a0f98dde11a1afe9fbf5c98f57968e086e98b6f5",
      "tree": "e2521f3d54605f9bfc261da0665ffced19acd997",
      "parents": [
        "b43b31bdf2e662006c27cc4dcccf863312d62bc1"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "wanlong.gao@gmail.com",
        "time": "Mon Jul 18 12:19:35 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:41 2011 -0400"
      },
      "message": "Btrfs:don\u0027t check the return value of __btrfs_add_inode_defrag\n\nDon\u0027t need to check the return value of __btrfs_add_inode_defrag(),\nsince it will always return 0.\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b43b31bdf2e662006c27cc4dcccf863312d62bc1",
      "tree": "9e12413edbd9d7a77e4c0b692dd28ca4ae5039bd",
      "parents": [
        "ff95acb6733d41a8d45feb0e18b96df25e610e78",
        "38a1a919535742af677303271eb4ff731547b706"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:27:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:27:34 2011 -0400"
      },
      "message": "Merge branch \u0027alloc_path\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/btrfs-error-handling into for-linus\n"
    },
    {
      "commit": "22712200e175e0df5c7f9edfe6c6bf5c94c23b83",
      "tree": "a3e332aab7f5a953ff4f12e67af2a0e5f32f5be5",
      "parents": [
        "597a67e0ba758e3d2239c81fbb648c6e69ec30a2",
        "ff95acb6733d41a8d45feb0e18b96df25e610e78"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: make sure reserve_metadata_bytes doesn\u0027t leak out strange errors\n  Btrfs: use the commit_root for reading free_space_inode crcs\n  Btrfs: reduce extent_state lock contention for metadata\n  Btrfs: remove lockdep magic from btrfs_next_leaf\n  Btrfs: make a lockdep class for each root\n  Btrfs: switch the btrfs tree locks to reader/writer\n  Btrfs: fix deadlock when throttling transactions\n  Btrfs: stop using highmem for extent_buffers\n  Btrfs: fix BUG_ON() caused by ENOSPC when relocating space\n  Btrfs: tag pages for writeback in sync\n  Btrfs: fix enospc problems with delalloc\n  Btrfs: don\u0027t flush delalloc arbitrarily\n  Btrfs: use find_or_create_page instead of grab_cache_page\n  Btrfs: use a worker thread to do caching\n  Btrfs: fix how we merge extent states and deal with cached states\n  Btrfs: use the normal checksumming infrastructure for free space cache\n  Btrfs: serialize flushers in reserve_metadata_bytes\n  Btrfs: do transaction space reservation before joining the transaction\n  Btrfs: try to only do one btrfs_search_slot in do_setxattr\n"
    },
    {
      "commit": "9e0baf60dea69f31ac3b1adeb35b03b02a53e8e1",
      "tree": "0fb899e1fa78b599d22389ca3befc8ab51ff5049",
      "parents": [
        "a5991428064e98c7367fe1c1686ea6a23fb6a4b3"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 15 15:16:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:44 2011 -0400"
      },
      "message": "Btrfs: fix enospc problems with delalloc\n\nSo I had this brilliant idea to use atomic counters for outstanding and reserved\nextents, but this turned out to be a bad idea.  Consider this where we have 1\noutstanding extent and 1 reserved extent\n\nReserver\t\t\t\tReleaser\n\t\t\t\t\tatomic_dec(outstanding) now 0\natomic_read(outstanding)+1 get 1\natomic_read(reserved) get 1\ndon\u0027t actually reserve anything because\nthey are the same\n\t\t\t\t\tatomic_cmpxchg(reserved, 1, 0)\natomic_inc(outstanding)\natomic_add(0, reserved)\n\t\t\t\t\tfree reserved space for 1 extent\n\nThen the reserver now has no actual space reserved for it, and when it goes to\nfinish the ordered IO it won\u0027t have enough space to do it\u0027s allocation and you\nget those lovely warnings.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a94733d0bc630edaedc6ca156752dd5a7cb82521",
      "tree": "3f0bd508aa1ce5894e43df45bb73031a380ed8f5",
      "parents": [
        "bab39bf998133510f2dad08158006197ec0dabea"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 10:47:06 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:43 2011 -0400"
      },
      "message": "Btrfs: use find_or_create_page instead of grab_cache_page\n\ngrab_cache_page will use mapping_gfp_mask(), which for all inodes is set to\nGFP_HIGHUSER_MOVABLE.  So instead use find_or_create_page in all cases where we\nneed GFP_NOFS so we don\u0027t deadlock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b26751575a9aa55fd6dbf3febde3ff06dfadc44f",
      "tree": "78fc36a92757eafb90bbeae36495adb369fbf6d7",
      "parents": [
        "982d816581eeeacfe5b2b7c6d47d13a157616eff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:36 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:56 2011 -0400"
      },
      "message": "Btrfs: implement our own -\u003ellseek\n\nIn order to handle SEEK_HOLE/SEEK_DATA we need to implement our own llseek.\nBasically for the normal SEEK_*\u0027s we will just defer to the generic helper, and\nfor SEEK_HOLE/SEEK_DATA we will use our fiemap helper to figure out the nearest\nhole or data.  Currently this helper doesn\u0027t check for delalloc bytes for\nprealloc space, so for now treat prealloc as data until that is fixed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d8926bb3badd36670fecf2de4a062c78bc37430b",
      "tree": "60c8194f9fbba47ff9535b62b9fe439239997e9c",
      "parents": [
        "8d86e5f91440aa56a5df516bf58fe3883552ad56"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Wed Jul 13 10:38:47 2011 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Thu Jul 14 14:14:44 2011 -0700"
      },
      "message": "btrfs: don\u0027t BUG_ON btrfs_alloc_path() errors\n\nThis patch fixes many callers of btrfs_alloc_path() which BUG_ON allocation\nfailure. All the sites that are fixed in this patch were checked by me to\nbe fairly trivial to fix because of at least one of two criteria:\n\n - Callers of the function catch errors from it already so bubbling the\n   error up will be handled.\n - Callers of the function might BUG_ON any nonzero return code in which\n   case there is no behavior changed (but we still got to remove a BUG_ON)\n\nThe following functions were updated:\n\nbtrfs_lookup_extent, alloc_reserved_tree_block, btrfs_remove_block_group,\nbtrfs_lookup_csums_range, btrfs_csum_file_blocks, btrfs_mark_extent_written,\nbtrfs_inode_by_name, btrfs_new_inode, btrfs_symlink,\ninsert_reserved_file_extent, and run_delalloc_nocow\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "7841cb2898f66a73062c64d0ef5733dde7279e46",
      "tree": "b7a94d96d44971845951a59e9fb7b5c2e30c46b3",
      "parents": [
        "4b9465cb9e3859186eefa1ca3b990a5849386320"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 18:07:27 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:11:22 2011 -0400"
      },
      "message": "btrfs: add helper for fs_info-\u003eclosing\n\nwrap checking of filesystem \u0027closing\u0027 flag and fix a few missing memory\nbarriers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "a4689d2bd3b00dcf5c4320f06e0ab88810fbff9c",
      "tree": "295bcdb0fdbe5a4cda80eb886694efd45e276699",
      "parents": [
        "d132a538d258f8f52fd0cd8b5017755f4e915386"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 17:08:14 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:46 2011 -0400"
      },
      "message": "btrfs: use btrfs_ino to access inode number\n\ncommit 4cb5300bc (\"Btrfs: add mount -o auto_defrag\") accesses inode\nnumber directly while it should use the helper with the new inode\nnumber allocator.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff5714cca971848963b87d6b477c16ca8abbaa54",
      "tree": "17ee34b9b5e00804df4059503f82f6f1d94383a9",
      "parents": [
        "174ba50915b08dcfd07c8b5fb795b46a165fa09a",
        "d90c732122a1f6d0efe388a8a204f67f144b2eb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of\ngit://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into for-linus\n\nConflicts:\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4cb5300bc839b8a943eb19c9f27f25470e22d0ca",
      "tree": "ac0f2fb481c7aa6af08a624d276fa6d580c94c9b",
      "parents": [
        "d6c0cb379c5198487e4ac124728cbb2346d63b1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 24 15:35:30 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:15 2011 -0400"
      },
      "message": "Btrfs: add mount -o auto_defrag\n\nThis will detect small random writes into files and\nqueue the up for an auto defrag process.  It isn\u0027t well suited to\ndatabase workloads yet, but works for smaller files such as rpm, sqlite\nor bdb databases.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a4abeea41adfa3c143c289045f4625dfaeba2212",
      "tree": "792e2a398d8ba77447ba3f9f2c4266a1ce2f611c",
      "parents": [
        "2a1eb4614d984d5cd4c928784e9afcf5c07f93be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 11 17:25:13 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:57 2011 -0400"
      },
      "message": "Btrfs: kill trans_mutex\n\nWe use trans_mutex for lots of things, here\u0027s a basic list\n\n1) To serialize trans_handles joining the currently running transaction\n2) To make sure that no new trans handles are started while we are committing\n3) To protect the dead_roots list and the transaction lists\n\nReally the serializing trans_handles joining is not too hard, and can really get\nbogged down in acquiring a reference to the transaction.  So replace the\ntrans_mutex with a trans_lock spinlock and use it to do the following\n\n1) Protect fs_info-\u003erunning_transaction.  All trans handles have to do is check\nthis, and then take a reference of the transaction and keep on going.\n2) Protect the fs_info-\u003etrans_list.  This doesn\u0027t get used too much, basically\nit just holds the current transactions, which will usually just be the currently\ncommitting transaction and the currently running transaction at most.\n3) Protect the dead roots list.  This is only ever processed by splicing the\nlist so this is relatively simple.\n4) Protect the fs_info-\u003ereloc_ctl stuff.  This is very lightweight and was using\nthe trans_mutex before, so this is a pretty straightforward change.\n5) Protect fs_info-\u003eno_trans_join.  Because we don\u0027t hold the trans_lock over\nthe entirety of the commit we need to have a way to block new people from\ncreating a new transaction while we\u0027re doing our work.  So we set no_trans_join\nand in join_transaction we test to see if that is set, and if it is we do a\nwait_on_commit.\n6) Make the transaction use count atomic so we don\u0027t need to take locks to\nmodify it when we\u0027re dropping references.\n7) Add a commit_lock to the transaction to make sure multiple people trying to\ncommit the same transaction don\u0027t race and commit at the same time.\n8) Make open_ioctl_trans an atomic so we don\u0027t have to take any locks for ioctl\ntrans.\n\nI have tested this with xfstests, but obviously it is a pretty hairy change so\nlots of testing is greatly appreciated.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "945d8962ceee6bb273365d0bdf42f763225b290f",
      "tree": "43f5617022c7c947c3c63664e49eb9575ab82f2f",
      "parents": [
        "0d0ca30f180906224be6279788f2b202cfd959d8",
        "4ea028859bbdad34b84c9951fbb832ae10c6a96c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups\u0027 of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/tree-log.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b3b4aa74b58bded927f579fff787fb6fa1c0393c",
      "tree": "30dab4ab26558992dd8b6b212bef805de11c4c29",
      "parents": [
        "ba14419264684b290f0d0b7f48d26eafb11fc0c6"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Apr 21 01:20:15 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:22 2011 +0200"
      },
      "message": "btrfs: drop unused parameter from btrfs_release_path\n\nparameter tree root it\u0027s not used since commit\n5f39d397dfbe140a14edecd4e73c34ce23c4f9ee (\"Btrfs: Create extent_buffer\ninterface for large blocksizes\")\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "172ddd60a662c4d8bf2809462866ddddd6431ea5",
      "tree": "fc3c82d8e20a10f77fd26de64a58c416b80b42ac",
      "parents": [
        "a8067e022ab54fde8953880a64572c3acca644dc"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Apr 21 00:48:27 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:21 2011 +0200"
      },
      "message": "btrfs: drop gfp parameter from alloc_extent_map\n\npass GFP_NOFS directly to kmem_cache_alloc\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "c704005d886cf0bc9bc3974eb009b22fe0da32c7",
      "tree": "b9effb8d686af95ca92782697b75a70bf34a3964",
      "parents": [
        "4891aca2dac612a2f21a3278d9906ade13b55788"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue Apr 19 18:00:01 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:20 2011 +0200"
      },
      "message": "btrfs: unify checking of IS_ERR and null\n\nuse IS_ERR_OR_NULL when possible, done by this coccinelle script:\n\n@ match @\nidentifier id;\n@@\n(\n- BUG_ON(IS_ERR(id) || !id);\n+ BUG_ON(IS_ERR_OR_NULL(id));\n|\n- IS_ERR(id) || !id\n+ IS_ERR_OR_NULL(id)\n|\n- !id || IS_ERR(id)\n+ IS_ERR_OR_NULL(id)\n)\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "33345d01522f8152f99dc84a3e7a1a45707f387f",
      "tree": "6a978702dc4421768e63501fa15bc8fedd5bff32",
      "parents": [
        "0414efae7989a2183fb2cc000ab285c4c2836a00"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:31:50 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:09 2011 +0800"
      },
      "message": "Btrfs: Always use 64bit inode number\n\nThere\u0027s a potential problem in 32bit system when we exhaust 32bit inode\nnumbers and start to allocate big inode numbers, because btrfs uses\ninode-\u003ei_ino in many places.\n\nSo here we always use BTRFS_I(inode)-\u003elocation.objectid, which is an\nu64 variable.\n\nThere are 2 exceptions that BTRFS_I(inode)-\u003elocation.objectid !\u003d\ninode-\u003ei_ino: the btree inode (0 vs 1) and empty subvol dirs (256 vs 2),\nand inode-\u003ei_ino will be used in those cases.\n\nAnother reason to make this change is I\u0027m going to use a special inode\nto save free ino cache, and the inode number must be \u003e (u64)-256.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "be1a12a0dfed06cf1e62e35bf91620dc610a451a",
      "tree": "f2cd5976aae8a466b926f9fd7c0e10a082b5a11a",
      "parents": [
        "c9ddec74aa950a220cc4caa5215cfc5d886050b7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 06 13:05:22 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Apr 08 13:00:27 2011 -0400"
      },
      "message": "Btrfs: deal with the case that we run out of space in the cache\n\nCurrently we don\u0027t handle running out of space in the cache, so to fix this we\nkeep track of how far in the cache we are.  Then we only dirty the pages if we\nsuccessfully modify all of them, otherwise if we have an error or run out of\nspace we can just drop them and not worry about the vm writing them out.\nThanks,\n\nTested-by Johannes Hirte \u003cjohannes.hirte@fem.tu-ilmenau.de\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "c9149235a42ab93914434fff45c44b45023363f3",
      "tree": "827035f0710a01bf35c5c365387f650addfe647f",
      "parents": [
        "d9d04879321af570ea7285c6dad92d9c3cd108a1"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Mar 30 00:57:23 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:41 2011 -0400"
      },
      "message": "Btrfs: fix compiler warning in file.c\n\nWhile compiling Btrfs, I got following messages:\n\n  CC [M]  fs/btrfs/file.o\nfs/btrfs/file.c: In function \u0027__btrfs_buffered_write\u0027:\nfs/btrfs/file.c:909: warning: \u0027ret\u0027 may be used uninitialized in this function\n  CC [M]  fs/btrfs/tree-defrag.o\n\nThis patch fixes compiler warning.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1abe9b8a138c9988ba8f7bfded6453649a31541f",
      "tree": "9fe0c181e78b075b65f6b1802f0a5092e7afbc6a",
      "parents": [
        "240f62c8756df285da11469259b3900f32883168"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 24 11:18:59 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:33 2011 -0400"
      },
      "message": "Btrfs: add initial tracepoint support for btrfs\n\nTracepoints can provide insight into why btrfs hits bugs and be greatly\nhelpful for debugging, e.g\n              dd-7822  [000]  2121.641088: btrfs_inode_request: root \u003d 5(FS_TREE), gen \u003d 4, ino \u003d 256, blocks \u003d 8, disk_i_size \u003d 0, last_trans \u003d 8, logged_trans \u003d 0\n              dd-7822  [000]  2121.641100: btrfs_inode_new: root \u003d 5(FS_TREE), gen \u003d 8, ino \u003d 257, blocks \u003d 0, disk_i_size \u003d 0, last_trans \u003d 0, logged_trans \u003d 0\n btrfs-transacti-7804  [001]  2146.935420: btrfs_cow_block: root \u003d 2(EXTENT_TREE), refs \u003d 2, orig_buf \u003d 29368320 (orig_level \u003d 0), cow_buf \u003d 29388800 (cow_level \u003d 0)\n btrfs-transacti-7804  [001]  2146.935473: btrfs_cow_block: root \u003d 1(ROOT_TREE), refs \u003d 2, orig_buf \u003d 29364224 (orig_level \u003d 0), cow_buf \u003d 29392896 (cow_level \u003d 0)\n btrfs-transacti-7804  [001]  2146.972221: btrfs_transaction_commit: root \u003d 1(ROOT_TREE), gen \u003d 8\n   flush-btrfs-2-7821  [001]  2155.824210: btrfs_chunk_alloc: root \u003d 3(CHUNK_TREE), offset \u003d 1103101952, size \u003d 1073741824, num_stripes \u003d 1, sub_stripes \u003d 0, type \u003d DATA\n   flush-btrfs-2-7821  [001]  2155.824241: btrfs_cow_block: root \u003d 2(EXTENT_TREE), refs \u003d 2, orig_buf \u003d 29388800 (orig_level \u003d 0), cow_buf \u003d 29396992 (cow_level \u003d 0)\n   flush-btrfs-2-7821  [001]  2155.824255: btrfs_cow_block: root \u003d 4(DEV_TREE), refs \u003d 2, orig_buf \u003d 29372416 (orig_level \u003d 0), cow_buf \u003d 29401088 (cow_level \u003d 0)\n   flush-btrfs-2-7821  [000]  2155.824329: btrfs_cow_block: root \u003d 3(CHUNK_TREE), refs \u003d 2, orig_buf \u003d 20971520 (orig_level \u003d 0), cow_buf \u003d 20975616 (cow_level \u003d 0)\n btrfs-endio-wri-7800  [001]  2155.898019: btrfs_cow_block: root \u003d 5(FS_TREE), refs \u003d 2, orig_buf \u003d 29384704 (orig_level \u003d 0), cow_buf \u003d 29405184 (cow_level \u003d 0)\n btrfs-endio-wri-7800  [001]  2155.898043: btrfs_cow_block: root \u003d 7(CSUM_TREE), refs \u003d 2, orig_buf \u003d 29376512 (orig_level \u003d 0), cow_buf \u003d 29409280 (cow_level \u003d 0)\n\nHere is what I have added:\n\n1) ordere_extent:\n        btrfs_ordered_extent_add\n        btrfs_ordered_extent_remove\n        btrfs_ordered_extent_start\n        btrfs_ordered_extent_put\n\nThese provide critical information to understand how ordered_extents are\nupdated.\n\n2) extent_map:\n        btrfs_get_extent\n\nextent_map is used in both read and write cases, and it is useful for tracking\nhow btrfs specific IO is running.\n\n3) writepage:\n        __extent_writepage\n        btrfs_writepage_end_io_hook\n\nPages are cirtical resourses and produce a lot of corner cases during writeback,\nso it is valuable to know how page is written to disk.\n\n4) inode:\n        btrfs_inode_new\n        btrfs_inode_request\n        btrfs_inode_evict\n\nThese can show where and when a inode is created, when a inode is evicted.\n\n5) sync:\n        btrfs_sync_file\n        btrfs_sync_fs\n\nThese show sync arguments.\n\n6) transaction:\n        btrfs_transaction_commit\n\nIn transaction based filesystem, it will be useful to know the generation and\nwho does commit.\n\n7) back reference and cow:\n\tbtrfs_delayed_tree_ref\n\tbtrfs_delayed_data_ref\n\tbtrfs_delayed_ref_head\n\tbtrfs_cow_block\n\nBtrfs natively supports back references, these tracepoints are helpful on\nunderstanding btrfs\u0027s COW mechanism.\n\n8) chunk:\n\tbtrfs_chunk_alloc\n\tbtrfs_chunk_free\n\nChunk is a link between physical offset and logical offset, and stands for space\ninfomation in btrfs, and these are helpful on tracing space things.\n\n9) reserved_extent:\n\tbtrfs_reserved_extent_alloc\n\tbtrfs_reserved_extent_free\n\nThese can show how btrfs uses its space.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "41415730a1050499fbd63b3f7dd59b3a4c3bb91a",
      "tree": "f379a75ded5241e303fd78bcfe5d6ca257058dc1",
      "parents": [
        "a826d6dcb32d811b4c81df57a5ef1367516586b0"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Mar 16 13:59:32 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:39 2011 -0400"
      },
      "message": "Btrfs: check return value of btrfs_search_slot properly\n\nDoing an audit of where we use btrfs_search_slot only showed one place where we\ndon\u0027t check the return value of btrfs_search_slot properly.  Just fix\nmark_extent_written to see if btrfs_search_slot failed and act accordingly.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a41ad394a03b802497958d7c98a9dcf607266645",
      "tree": "f18d97b7feb5c3dcf0d3c1a670d4eaf6b94e8b79",
      "parents": [
        "dc89e9824464e91fa0b06267864ceabe3186fd8b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jan 31 15:30:16 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:22 2011 -0400"
      },
      "message": "Btrfs: convert to the new truncate sequence\n\n-\u003etruncate() is going away, instead all of the work needs to be done in\n-\u003esetattr().  So this converts us over to do this.  It\u0027s fairly straightforward,\njust get rid of our .truncate inode operation and call btrfs_truncate() directly\nfrom btrfs_setsize.  This works out better for us since truncate can technically\nreturn ENOSPC, and before we had no way of letting anybody know.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4a64001f0047956e283f7ada9843dfc3f3b5d8c8",
      "tree": "f45d7b09808ef70cf31e7da4e5e8b1c0c7521f4a",
      "parents": [
        "d0215f3e5ebb5803cd6ec067b10c5e00a3ad7cfc"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 25 15:10:08 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:16 2011 -0400"
      },
      "message": "Btrfs: fix how we deal with the pages array in the write path\n\nReally we don\u0027t need to memset the pages array at all, since we know how many\npages we\u0027re going to use in the array and pass that around.  So don\u0027t memset,\njust trust we\u0027re not idiots and we pass num_pages around properly.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "d0215f3e5ebb5803cd6ec067b10c5e00a3ad7cfc",
      "tree": "790070af3c6c05b0599e26c7ce93516192a04a94",
      "parents": [
        "9f570b8d48b6677b5557d86fb3ca148215e295f2"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 25 14:57:24 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:15 2011 -0400"
      },
      "message": "Btrfs: simplify our write path\n\nOur aio_write function is huge and kind of hard to follow at times.  So this\npatch fixes this by breaking out the buffered and direct write paths out into\nseperate functions so it\u0027s a little clearer what\u0027s going on.  I\u0027ve also fixed\nsome wrong typing that we had and added the ability to handle getting an error\nback from btrfs_set_extent_delalloc.  Tested this with xfstests and everything\ncame out fine.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9f570b8d48b6677b5557d86fb3ca148215e295f2",
      "tree": "d4cfb2622bad6559bd6afb2a3b3fe19f1cc274fa",
      "parents": [
        "521cb40b0c44418a4fd36dc633f575813d59a43d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 25 12:42:37 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:13 2011 -0400"
      },
      "message": "Btrfs: fix formatting in file.c\n\nSorry, but these were bugging me.  Just cleanup some of the formatting in\nfile.c.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0e5b88cd9975dca6c191cc9bd11f233fac4ca882",
      "tree": "6302317acfb24d6b5ad7924aceaa0dd1c4a7a371",
      "parents": [
        "eebea5d13d391981061d6ef069a841002eba4a7a",
        "36e39c40b3facc9b489a13f1d301fc53ff6960a3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 13 16:00:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 13 16:00:49 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: break out of shrink_delalloc earlier\n  btrfs: fix not enough reserved space\n  btrfs: fix dip leak\n  Btrfs: make sure not to return overlapping extents to fiemap\n  Btrfs: deal with short returns from copy_from_user\n  Btrfs: fix regressions in copy_from_user handling\n"
    },
    {
      "commit": "31339acd07b4ba687906702085127895a56eb920",
      "tree": "c1f2d464acfc97e8c5faecf57e644578cccce94d",
      "parents": [
        "b1bf862e9dad431175a1174379476299dbfdc017"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 07 11:10:24 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 07 11:10:24 2011 -0500"
      },
      "message": "Btrfs: deal with short returns from copy_from_user\n\nWhen copy_from_user is only able to copy some of the bytes we requested,\nwe may end up creating a partially up to date page.  To avoid garbage in\nthe page, we need to treat a partial copy as a zero length copy.\n\nThis makes the rest of the file_write code drop the page and\nretry the whole copy instead of marking the partially up to\ndate page as dirty.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "b1bf862e9dad431175a1174379476299dbfdc017",
      "tree": "a53811b2112fbe2a0106e3ac051fffc63872d317",
      "parents": [
        "ec29ed5b407d618a8128f5942aade9e1758aa14b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 28 09:52:08 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 07 10:42:27 2011 -0500"
      },
      "message": "Btrfs: fix regressions in copy_from_user handling\n\nCommit 914ee295af418e936ec20a08c1663eaabe4cd07a fixed deadlocks in\nbtrfs_file_write where we would catch page faults on pages we had\nlocked.\n\nBut, there were a few problems:\n\n1) The x86-32 iov_iter_copy_from_user_atomic code always fails to copy\ndata when the amount to copy is more than 4K and the offset to start\ncopying from is not page aligned.  The result was btrfs_file_write\nlooping forever retrying the iov_iter_copy_from_user_atomic\n\nWe deal with this by changing btrfs_file_write to drop down to single\npage copies when iov_iter_copy_from_user_atomic starts returning failure.\n\n2) The btrfs_file_write code was leaking delalloc reservations when\niov_iter_copy_from_user_atomic returned zero.  The looping above would\nresult in the entire filesystem running out of delalloc reservations and\nconstantly trying to flush things to disk.\n\n3) btrfs_file_write will lock down page cache pages, make sure\nany writeback is finished, do the copy_from_user and then release them.\nBefore the loop runs we check the first and last pages in the write to\nsee if they are only being partially modified.  If the start or end of\nthe write isn\u0027t aligned, we make sure the corresponding pages are\nup to date so that we don\u0027t introduce garbage into the file.\n\nWith the copy_from_user changes, we\u0027re allowing the VM to reclaim the\npages after a partial update from copy_from_user, but we\u0027re not\nmaking sure the page cache page is up to date when we loop around to\nresume the write.\n\nWe deal with this by pushing the up to date checks down into the page\nprep code.  This fits better with how the rest of file_write works.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nReported-by: Mitch Harder \u003cmitch.harder@sabayonlinux.org\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "007a14af2649c9ac77f38cd23469518ffb8b355a",
      "tree": "d6bc4477c11d7c8fd892f059acf0fc1ed547ba52",
      "parents": [
        "261cd298a8c363d7985e3482946edb4bfedacf98",
        "c26a920373a983b52223eed5a13b97404d8b4158"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 15 08:00:35 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 15 08:00:35 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: check return value of alloc_extent_map()\n  Btrfs - Fix memory leak in btrfs_init_new_device()\n  btrfs: prevent heap corruption in btrfs_ioctl_space_info()\n  Btrfs: Fix balance panic\n  Btrfs: don\u0027t release pages when we can\u0027t clear the uptodate bits\n  Btrfs: fix page-\u003eprivate races\n"
    },
    {
      "commit": "c26a920373a983b52223eed5a13b97404d8b4158",
      "tree": "a7f76fe1b0cecbc712f0b152ff537805f126b113",
      "parents": [
        "67100f255dba284bcbb5ce795355dad1cff35658"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Feb 14 00:45:29 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 16:21:37 2011 -0500"
      },
      "message": "Btrfs: check return value of alloc_extent_map()\n\nI add the check on the return value of alloc_extent_map() to several places.\nIn addition, alloc_extent_map() returns only the address or NULL.\nTherefore, check by IS_ERR() is unnecessary. So, I remove IS_ERR() checking.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cb5520f02c010e3cb974b9ac06f30aafa2eebc38",
      "tree": "8342407cebb6420f04f46694b8d812552a14cb49",
      "parents": [
        "eee4da2cef8e2dc2b15066e9ebb5b2ff63396eb3",
        "3a90983dbdcb2f4f48c0d771d8e5b4d88f27fae6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 07 14:06:18 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 07 14:06:18 2011 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (33 commits)\n  Btrfs: Fix page count calculation\n  btrfs: Drop __exit attribute on btrfs_exit_compress\n  btrfs: cleanup error handling in btrfs_unlink_inode()\n  Btrfs: exclude super blocks when we read in block groups\n  Btrfs: make sure search_bitmap finds something in remove_from_bitmap\n  btrfs: fix return value check of btrfs_start_transaction()\n  btrfs: checking NULL or not in some functions\n  Btrfs: avoid uninit variable warnings in ordered-data.c\n  Btrfs: catch errors from btrfs_sync_log\n  Btrfs: make shrink_delalloc a little friendlier\n  Btrfs: handle no memory properly in prepare_pages\n  Btrfs: do error checking in btrfs_del_csums\n  Btrfs: use the global block reserve if we cannot reserve space\n  Btrfs: do not release more reserved bytes to the global_block_rsv than we need\n  Btrfs: fix check_path_shared so it returns the right value\n  btrfs: check return value of btrfs_start_ioctl_transaction() properly\n  btrfs: fix return value check of btrfs_join_transaction()\n  fs/btrfs/inode.c: Add missing IS_ERR test\n  btrfs: fix missing break in switch phrase\n  btrfs: fix several uncheck memory allocations\n  ...\n"
    },
    {
      "commit": "3a90983dbdcb2f4f48c0d771d8e5b4d88f27fae6",
      "tree": "3179f5e834e482cc3f782e709a53b08591416c76",
      "parents": [
        "8e4eef7a60eeca0fe7503e5cbd3b24ff4941c732"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@linux.intel.com",
        "time": "Tue Jan 18 13:34:40 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 07 14:13:51 2011 -0500"
      },
      "message": "Btrfs: Fix page count calculation\n\ntake offset of start position into account when calculating page count.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7adf5dfbb3af65a00e20b3ead224c3a1b40e4ec4",
      "tree": "5723e9679a7926ea744c242cc8351e64ce7503e4",
      "parents": [
        "ad0397a7a97f55fd7f70998ec208c5d8b90310ff"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 25 22:11:54 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:42:34 2011 -0500"
      },
      "message": "Btrfs: handle no memory properly in prepare_pages\n\nInstead of doing a BUG_ON(1) in prepare_pages if grab_cache_page() fails, just\nloop through the pages we\u0027ve already grabbed and unlock and release them, then\nreturn -ENOMEM like we should.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a29edc6b60a5248ccab588e7ba7dad38cef0235",
      "tree": "45a7939e9e061cb2f06b09ae5f48aa79853e1250",
      "parents": [
        "6b82ce8d824bd46053e46a895876cde39d9026e4"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Wed Jan 26 06:22:08 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:36 2011 -0500"
      },
      "message": "btrfs: fix several uncheck memory allocations\n\nTo make btrfs more stable, add several missing necessary memory allocation\nchecks, and when no memory, return proper errno.\n\nWe\u0027ve checked that some of those -ENOMEM errors will be returned to\nuserspace, and some will be catched by BUG_ON() in the upper callers,\nand none will be ignored silently.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eee2a817df7c5a6e569f353f8be78cc1b3604bb6",
      "tree": "f721beb4712c732702d3383d3c6a52da8b5bbb20",
      "parents": [
        "83896fb5e51594281720d145164f866ba769abd5",
        "acce952b0263825da32cf10489413dec78053347"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:43:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:43:43 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (25 commits)\n  Btrfs: forced readonly mounts on errors\n  btrfs: Require CAP_SYS_ADMIN for filesystem rebalance\n  Btrfs: don\u0027t warn if we get ENOSPC in btrfs_block_rsv_check\n  btrfs: Fix memory leak in btrfs_read_fs_root_no_radix()\n  btrfs: check NULL or not\n  btrfs: Don\u0027t pass NULL ptr to func that may deref it.\n  btrfs: mount failure return value fix\n  btrfs: Mem leak in btrfs_get_acl()\n  btrfs: fix wrong free space information of btrfs\n  btrfs: make the chunk allocator utilize the devices better\n  btrfs: restructure find_free_dev_extent()\n  btrfs: fix wrong calculation of stripe size\n  btrfs: try to reclaim some space when chunk allocation fails\n  btrfs: fix wrong data space statistics\n  fs/btrfs: Fix build of ctree\n  Btrfs: fix off by one while setting block groups readonly\n  Btrfs: Add BTRFS_IOC_SUBVOL_GETFLAGS/SETFLAGS ioctls\n  Btrfs: Add readonly snapshots support\n  Btrfs: Refactor btrfs_ioctl_snap_create()\n  btrfs: Extract duplicate decompress code\n  ...\n"
    },
    {
      "commit": "acce952b0263825da32cf10489413dec78053347",
      "tree": "d934881f247484d7b6917bebc40828600bb6b76c",
      "parents": [
        "6f88a4403def422bd8e276ddf6863d6ac71435d2"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Jan 06 19:30:25 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 17 15:13:08 2011 -0500"
      },
      "message": "Btrfs: forced readonly mounts on errors\n\nThis patch comes from \"Forced readonly mounts on errors\" ideas.\n\nAs we know, this is the first step in being more fault tolerant of disk\ncorruptions instead of just using BUG() statements.\n\nThe major content:\n- add a framework for generating errors that should result in filesystems\n  going readonly.\n- keep FS state in disk super block.\n- make sure that all of resource will be freed and released at umount time.\n- make sure that fter FS is forced readonly on error, there will be no more\n  disk change before FS is corrected. For this, we should stop write operation.\n\nAfter this patch is applied, the conversion from BUG() to such a framework can\nhappen incrementally.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "261507a02ccba9afda919852263b6bc1581ce1ef",
      "tree": "c16bc657ff4e29a87042ceb379487f24dff01035",
      "parents": [
        "4b72029dc3fd6ba7dc45ccd1cf0aa0ebfa209bd3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 17 14:21:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:45 2010 +0800"
      },
      "message": "btrfs: Allow to add new compression algorithm\n\nMake the code aware of compression type, instead of always assuming\nzlib compression.\n\nAlso make the zlib workspace function as common code for all\ncompression types.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "914ee295af418e936ec20a08c1663eaabe4cd07a",
      "tree": "2e880ea913b8cbadf22b2288b5c278c2e5eadb60",
      "parents": [
        "f106e82caaa0d943e47cacc184f5b40d538e0044"
      ],
      "author": {
        "name": "Xin Zhong",
        "email": "xin.zhong@intel.com",
        "time": "Thu Dec 09 09:30:14 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n\nThis problem is found in meego testing:\nhttp://bugs.meego.com/show_bug.cgi?id\u003d6672\nA file in btrfs is mmaped and the mmaped buffer is passed to pwrite to write to the same page\nof the same file. In btrfs_file_aio_write(), the pages is locked by prepare_pages(). So when\nbtrfs_copy_from_user() is called, page fault happens and the same page needs to be locked again\nin filemap_fault(). The fix is to move iov_iter_fault_in_readable() before prepage_pages() to make page\nfault happen before pages are locked. And also disable page fault in critical region in\nbtrfs_copy_from_user().\n\nReviewed-by: Yan, Zheng\u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Zhong, Xin \u003cxin.zhong@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "495e86779f4f319828bc10dfc0c9ac2161868077",
      "tree": "62729f2b65c9565fadb551bd8d343d6c57d7cb85",
      "parents": [
        "6a912213046ecb6511fdf35531a0c7de3de963c9"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 20:36:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:09 2010 -0500"
      },
      "message": "Btrfs: hold i_mutex when calling btrfs_log_dentry_safe\n\nSince we walk up the path logging all of the parts of the inode\u0027s path, we need\nto hold i_mutex to make sure that the inode is not renamed while we\u0027re logging\neverything.  btrfs_log_dentry_safe does dget_parent and all of that jazz, but we\nmay get unexpected results if the rename changes the inode\u0027s location while\nwe\u0027re higher up the path logging those dentries, so do this for safety reasons.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b25b550bb153626df6a48eb8583e923e3dfcf64a",
      "tree": "baca9843877b8b3a254cde92ac2a9072014b5621",
      "parents": [
        "eda054770e5cd0e9ee1568dfcbcf39f9ade4f545",
        "6f902af400b2499c80865c62a06fbbd15cf804fd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 11 14:18:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 11 14:18:47 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: The file argument for fsync() is never null\n  Btrfs: handle ERR_PTR from posix_acl_from_xattr()\n  Btrfs: avoid BUG when dropping root and reference in same transaction\n  Btrfs: prohibit a operation of changing acl\u0027s mask when noacl mount option used\n  Btrfs: should add a permission check for setfacl\n  Btrfs: btrfs_lookup_dir_item() can return ERR_PTR\n  Btrfs: btrfs_read_fs_root_no_name() returns ERR_PTRs\n  Btrfs: unwind after btrfs_start_transaction() errors\n  Btrfs: btrfs_iget() returns ERR_PTR\n  Btrfs: handle kzalloc() failure in open_ctree()\n  Btrfs: handle error returns from btrfs_lookup_dir_item()\n  Btrfs: Fix BUG_ON for fs converted from extN\n  Btrfs: Fix null dereference in relocation.c\n  Btrfs: fix remap_file_pages error\n  Btrfs: uninitialized data is check_path_shared()\n  Btrfs: fix fallocate regression\n  Btrfs: fix loop device on top of btrfs\n"
    },
    {
      "commit": "6f902af400b2499c80865c62a06fbbd15cf804fd",
      "tree": "9bd7ee1dd243b5513ebad74b2870950a6d427d3c",
      "parents": [
        "834e74759a473f8101a273e843d1edec2778801d"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat May 29 09:49:07 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 11 15:57:40 2010 -0400"
      },
      "message": "Btrfs: The file argument for fsync() is never null\n\nThe \"file\" argument for fsync is never null so we can remove this check.\n\nWhat drew my attention here is that 7ea8085910e: \"drop unused dentry\nargument to -\u003efsync\" introduced an unconditional dereference at the\nstart of the function and that generated a smatch warning.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "058a457ef0ce28d595af53d6103db73332383cbc",
      "tree": "7f17117d57c90839cd6d50e588cba0bca97a0de6",
      "parents": [
        "0e4dcbef1c0c3e29f9c7f824359445d385b2649a"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu May 20 07:21:50 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 11 11:46:12 2010 -0400"
      },
      "message": "Btrfs: fix remap_file_pages error\n\nwhen we use remap_file_pages() to remap a file, remap_file_pages always return\nerror. It is because btrfs didn\u0027t set VM_CAN_NONLINEAR for vma.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4a001071d3549f596c7c3736c5dda8a3a4aba9ed",
      "tree": "f835cbd0779a8912aa65669bbd44ce3f756c919f",
      "parents": [
        "9aeead73782c4b8e2a91def36dbf95db28605c95"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Jun 07 03:38:51 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 11 11:46:11 2010 -0400"
      },
      "message": "Btrfs: fix loop device on top of btrfs\n\nWe cannot use the loop device which has been connected to a file in the btrf\n\nThe reproduce steps is following:\n # dd if\u003d/dev/zero of\u003dvdev0 bs\u003d1M count\u003d1024\n # losetup /dev/loop0 vdev0\n # mkfs.btrfs /dev/loop0\n ...\n failed to zero device start -5\n\nThe reason is that the btrfs don\u0027t implement either -\u003ewrite_begin or -\u003ewrite\nthe VFS API, so we fix it by setting -\u003ewrite to do_sync_write().\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3f7c579c41a3d20af76fd6ff1f6b949edf105fd1",
      "tree": "374d50346763fb37299f5de93f48901596f21e59",
      "parents": [
        "4845e44ffdb26be9b25610664228e8ecaf949a0d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed May 26 10:59:53 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed May 26 10:59:53 2010 -0400"
      },
      "message": "Btrfs: move O_DIRECT space reservation to btrfs_direct_IO\n\nThis moves the delalloc space reservation done for O_DIRECT\ninto btrfs_direct_IO.  This way we don\u0027t leak reserved space\nif the generic O_DIRECT write code errors out before it\ncalls into btrfs_direct_IO.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4845e44ffdb26be9b25610664228e8ecaf949a0d",
      "tree": "8852e175b6b02a36df6b47c54d574f3365ddb34f",
      "parents": [
        "eaf25d933e64c2bf3c79b83e8820404f36fdfc52"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 20:56:50 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 21:52:08 2010 -0400"
      },
      "message": "Btrfs: rework O_DIRECT enospc handling\n\nThis changes O_DIRECT write code to mark extents as delalloc\nwhile it is processing them.  Yan Zheng has reworked the\nenospc accounting based on tracking delalloc extents and\nthis makes it much easier to track enospc in the O_DIRECT code.\n\nThere are a few space cases with the O_DIRECT code though,\nit only sets the EXTENT_DELALLOC bits, instead of doing\nEXTENT_DELALLOC | EXTENT_DIRTY | EXTENT_UPTODATE, because\nwe don\u0027t want to mess with clearing the dirty and uptodate\nbits when things go wrong.  This is important because there\nare no pages in the page cache, so any extent state structs\nthat we put in the tree won\u0027t get freed by releasepage.  We have\nto clear them ourselves as the DIO ends.\n\nWith this commit, we reserve space at in btrfs_file_aio_write,\nand then as each btrfs_direct_IO call progresses it sets\nEXTENT_DELALLOC on the range.\n\nbtrfs_get_blocks_direct is responsible for clearing the delalloc\nat the same time it drops the extent lock.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "11c65dccf70be9ace5dbd3906778e1a099b1fee1",
      "tree": "1289f139ddf652e39672374b6f9051994c21ce57",
      "parents": [
        "4b46fce23349bfca781a32e2707a18328ca5ae22"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun May 23 11:07:21 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:57 2010 -0400"
      },
      "message": "Btrfs: do aio_write instead of write\n\nIn order for AIO to work, we need to implement aio_write.  This patch converts\nour btrfs_file_write to btrfs_aio_write.  I\u0027ve tested this with xfstests and\nnothing broke, and the AIO stuff magically started working.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4b46fce23349bfca781a32e2707a18328ca5ae22",
      "tree": "68f1200f2bc82d3f35218aef38e6d5d92bff4aca",
      "parents": [
        "c2c6ca417e2db7a519e6e92c82f4a933d940d076"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun May 23 11:00:55 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:57 2010 -0400"
      },
      "message": "Btrfs: add basic DIO read/write support\n\nThis provides basic DIO support for reading and writing.  It does not do the\nwork to recover from mismatching checksums, that will come later.  A few design\nchanges have been made from Jim\u0027s code (sorry Jim!)\n\n1) Use the generic direct-io code.  Jim originally re-wrote all the generic DIO\ncode in order to account for all of BTRFS\u0027s oddities, but thanks to that work it\nseems like the best bet is to just ignore compression and such and just opt to\nfallback on buffered IO.\n\n2) Fallback on buffered IO for compressed or inline extents.  Jim\u0027s code did\nit\u0027s own buffering to make dio with compressed extents work.  Now we just\nfallback onto normal buffered IO.\n\n3) Use ordered extents for the writes so that all of the\n\nlock_extent()\nlookup_ordered()\n\ntype checks continue to work.\n\n4) Do the lock_extent() lookup_ordered() loop in readpage so we don\u0027t race with\nDIO writes.\n\nI\u0027ve tested this with fsx and everything works great.  This patch depends on my\ndio and filemap.c patches to work.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0ca1f7ceb1991099ed5273885ebcf4323948c72e",
      "tree": "10758d6a55c529aced177da3f6bf45cf26361913",
      "parents": [
        "a22285a6a32390195235171b89d157ed1a1fe932"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Sun May 16 10:48:47 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:51 2010 -0400"
      },
      "message": "Btrfs: Update metadata reservation for delayed allocation\n\nIntroduce metadata reservation context for delayed allocation\nand update various related functions.\n\nThis patch also introduces EXTENT_FIRST_DELALLOC control bit for\nset/clear_extent_bit. It tells set/clear_bit_hook whether they\nare processing the first extent_state with EXTENT_DELALLOC bit\nset. This change is important if set/clear_extent_bit involves\nmultiple extent_state.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a22285a6a32390195235171b89d157ed1a1fe932",
      "tree": "3fabc88a029e1af4f2fdcc708e7b62ef3cf3703a",
      "parents": [
        "f0486c68e4bd9a06a5904d3eeb3a0d73a83befb8"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Sun May 16 10:48:46 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:50 2010 -0400"
      },
      "message": "Btrfs: Integrate metadata reservation with start_transaction\n\nBesides simplify the code, this change makes sure all metadata\nreservation for normal metadata operations are released after\ncommitting transaction.\n\nChanges since V1:\n\nAdd code that check if unlink and rmdir will free space.\n\nAdd ENOSPC handling for clone ioctl.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "441f4058a04b2943685ff94e0f5f1992b0b3649e",
      "tree": "80a61f6dddcf7d5831a8bd3771ffa2b430af3935",
      "parents": [
        "7c34691abe23741bfc7d2514efd5a39f0e0ecb06",
        "8ad6fcab564c5bc956bdc3dfa440ab152b6e780f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:50:55 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:50:55 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (30 commits)\n  Btrfs: fix the inode ref searches done by btrfs_search_path_in_tree\n  Btrfs: allow treeid\u003d\u003d0 in the inode lookup ioctl\n  Btrfs: return keys for large items to the search ioctl\n  Btrfs: fix key checks and advance in the search ioctl\n  Btrfs: buffer results in the space_info ioctl\n  Btrfs: use __u64 types in ioctl.h\n  Btrfs: fix search_ioctl key advance\n  Btrfs: fix gfp flags masking in the compression code\n  Btrfs: don\u0027t look at bio flags after submit_bio\n  btrfs: using btrfs_stack_device_id() get devid\n  btrfs: use memparse\n  Btrfs: add a \"df\" ioctl for btrfs\n  Btrfs: cache the extent state everywhere we possibly can V2\n  Btrfs: cache ordered extent when completing io\n  Btrfs: cache extent state in find_delalloc_range\n  Btrfs: change the ordered tree to use a spinlock instead of a mutex\n  Btrfs: finish read pages in the order they are submitted\n  btrfs: fix btrfs_mkdir goto for no free objectids\n  Btrfs: flush data on snapshot creation\n  Btrfs: make df be a little bit more understandable\n  ...\n"
    },
    {
      "commit": "2ac55d41b5d6bf49e76bc85db5431240617e2f8f",
      "tree": "ee8e2a716ef0b50388ef5e4a86387ec0499bca89",
      "parents": [
        "5a1a3df1f6c86926cfe8657e6f9b4b4c2f467d60"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Feb 03 19:33:23 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:13 2010 -0400"
      },
      "message": "Btrfs: cache the extent state everywhere we possibly can V2\n\nThis patch just goes through and fixes everybody that does\n\nlock_extent()\nblah\nunlock_extent()\n\nto use\n\nlock_extent_bits()\nblah\nunlock_extent_cached()\n\nand pass around a extent_state so we only have to do the searches once per\nfunction.  This gives me about a 3 mb/s boots on my random write test.  I have\nnot converted some things, like the relocation and ioctl\u0027s, since they aren\u0027t\nheavily used and the relocation stuff is in the middle of being re-written.  I\nalso changed the clear_extent_bit() to only unset the cached state if we are\nclearing EXTENT_LOCKED and related stuff, so we can do things like this\n\nlock_extent_bits()\nclear delalloc bits\nunlock_extent_cached()\n\nwithout losing our cached state.  I tested this thoroughly and turned on\nLEAK_DEBUG to make sure we weren\u0027t leaking extent states, everything worked out\nfine.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0813e22d4e0d618eac9b47bec942bf856adca4c5",
      "tree": "4d2b1a9717e6cdbab7966ce2d0ae698a52d46ae0",
      "parents": [
        "382640b3372405c40b7646c68a50ca91358027e4",
        "3f6fae9559225741c91f1320090b285da1413290"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 15 19:56:21 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 15 19:56:21 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: btrfs_mark_extent_written uses the wrong slot\n"
    },
    {
      "commit": "3f6fae9559225741c91f1320090b285da1413290",
      "tree": "94c1a90aaed740d80cfa701b8c4abad5bbb699df",
      "parents": [
        "23b5c50945f2294add0137799400329c0ebba290"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Thu Feb 11 07:43:00 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Feb 12 16:47:19 2010 -0500"
      },
      "message": "Btrfs: btrfs_mark_extent_written uses the wrong slot\n\nMy test do: fallocate a big file and do write. The file is 512M, but\nafter file write is done btrfs-debug-tree shows:\nitem 6 key (257 EXTENT_DATA 0) itemoff 3516 itemsize 53\n                extent data disk byte 1103101952 nr 536870912\n                extent data offset 0 nr 399634432 ram 536870912\n                extent compression 0\nLooks like a regression introducted by\n6c7d54ac87f338c479d9729e8392eca3f76e11e1, where we set wrong slot.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "adbfbcd12af3d183957622a99ca009b665639b81",
      "tree": "830e5cc6a0dbd5cb590b8484c4234bd65073d1d7",
      "parents": [
        "fc76be434d90bcd57a0ea6b93a2e66a3fec4b664",
        "23b5c50945f2294add0137799400329c0ebba290"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 05 07:23:03 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 05 07:23:03 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: apply updated fallocate i_size fix\n  Btrfs: do not try and lookup the file extent when finishing ordered io\n  Btrfs: Fix oopsen when dropping empty tree.\n  Btrfs: remove BUG_ON() due to mounting bad filesystem\n  Btrfs: make error return negative in btrfs_sync_file()\n  Btrfs: fix race between allocate and release extent buffer.\n"
    },
    {
      "commit": "014e4ac4f7d9c981750491fa40ea35efadc9ed49",
      "tree": "23f98b1cac63db1f12060d3a2d2dbc77b49019b3",
      "parents": [
        "f044ba7835b84e69c68b620ca8fa27e5ef67759d"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Fri Jan 29 10:42:11 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 04 11:31:44 2010 -0500"
      },
      "message": "Btrfs: make error return negative in btrfs_sync_file()\n\nIt appears the error return should be negative\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "30a0f5e1fb510f17c25ff159a9fffbe01ae0f34e",
      "tree": "3392e115d4d5767c8bdaeac8696a2465d65a1e91",
      "parents": [
        "88f5004430babb836cfce886d5d54c82166f8ba4",
        "11dfe35a0108097f2df1f042c485fa7f758c2cdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 21 07:28:05 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 21 07:28:05 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix possible panic on unmount\n  Btrfs: deal with NULL acl sent to btrfs_set_acl\n  Btrfs: fix regression in orphan cleanup\n  Btrfs: Fix race in btrfs_mark_extent_written\n  Btrfs, fix memory leaks in error paths\n  Btrfs: align offsets for btrfs_ordered_update_i_size\n  btrfs: fix missing last-entry in readdir(3)\n"
    },
    {
      "commit": "6c7d54ac87f338c479d9729e8392eca3f76e11e1",
      "tree": "3815913df585d7cbc8ba6a4c151328daa4720c7c",
      "parents": [
        "2423fdfb96e3f9ff3baeb6c4c78d74145547891d"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Jan 15 08:43:09 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 17 20:40:21 2010 -0500"
      },
      "message": "Btrfs: Fix race in btrfs_mark_extent_written\n\nFix bug reported by Johannes Hirte. The reason of that bug\nis btrfs_del_items is called after btrfs_duplicate_item and\nbtrfs_del_items triggers tree balance. The fix is check that\ncase and call btrfs_search_slot when needed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ebfee3d71d5a29102aac1fb2e756b8258f753592",
      "tree": "fa18938a56d452eb02c24f106dd06cc78f475e4b",
      "parents": [
        "b8a7f3cd7e8212e5c572178ff3b5a514861036a5",
        "83d3c9696fed237a3d96fce18299e2fcf112109f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 17 15:02:22 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 17 15:02:22 2009 -0500"
      },
      "message": "Merge branch btrfs-master into for-linus\n\nConflicts:\n\tfs/btrfs/acl.c\n"
    }
  ],
  "next": "55ef68990029fcd8d04d42fc184aa7fb18cf309e"
}
