)]}'
{
  "log": [
    {
      "commit": "258a5aa8dfc6294f5f7df892023ee4d3e57c9841",
      "tree": "101a4b9ee97f7d838b35a906244085873c599d19",
      "parents": [
        "73598611ade7c85f0c3d52ba5130103f6709c6d3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:01 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:30 2011 +1100"
      },
      "message": "btrfs: provide simple rcu-walk ACL implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "3cb50ddf97a0a1ca4c68bc12fa1e727a6b45fbf2",
      "tree": "d0b6c48e52bcccdd67c0d440a7ac7629404394fd",
      "parents": [
        "b8da46d3d55807037b58f14621a0949f18053bde"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Mon Dec 20 15:53:18 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:09:57 2010 -0800"
      },
      "message": "Fix btrfs b0rkage\n\nBuggered-in: 76dda93c6ae2 (\"Btrfs: add snapshot/subvolume destroy\nioctl\")\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e13cf63f2bbd38721af557f0205da994ea068427",
      "tree": "26d0d779fadd58814eea18ab2b16370a8565c837",
      "parents": [
        "073f21ae1319348f4f8630003b7901e3be254327",
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: prevent RAID level downgrades when space is low\n  Btrfs: account for missing devices in RAID allocation profiles\n  Btrfs: EIO when we fail to read tree roots\n  Btrfs: fix compiler warnings\n  Btrfs: Make async snapshot ioctl more generic\n  Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n  Btrfs: Fix a crash when mounting a subvolume\n  Btrfs: fix sync subvol/snapshot creation\n  Btrfs: Fix page leak in compressed writeback path\n  Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n  Btrfs: fixup return code for btrfs_del_orphan_item\n  Btrfs: do not do fast caching if we are allocating blocks for tree_root\n  Btrfs: deal with space cache errors better\n  Btrfs: fix use after free in O_DIRECT\n"
    },
    {
      "commit": "83a50de97fe96aca82389e061862ed760ece2283",
      "tree": "95421594f180c32cca1ff7f6881f4cf272cf2b5c",
      "parents": [
        "cd02dca56442e1504fd6bc5b96f7f1870162b266"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 15:06:46 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 20:07:01 2010 -0500"
      },
      "message": "Btrfs: prevent RAID level downgrades when space is low\n\nThe extent allocator has code that allows us to fill\nallocations from any available block group, even if it doesn\u0027t\nmatch the raid level we\u0027ve requested.\n\nThis was put in because adding a new drive to a filesystem\nmade with the default mkfs options actually upgrades the metadata from\nsingle spindle dup to full RAID1.\n\nBut, the code also allows us to allocate from a raid0 chunk when we\nreally want a raid1 or raid10 chunk.  This can cause big trouble because\nmkfs creates a small (4MB) raid0 chunk for data and metadata which then\ngoes unused for raid1/raid10 installs.\n\nThe allocator will happily wander in and allocate from that chunk when\nthings get tight, which is not correct.\n\nThe fix here is to make sure that we provide duplication when the\ncaller has asked for it.  It does all the dups to be any raid level,\nwhich preserves the dup-\u003eraid1 upgrade abilities.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cd02dca56442e1504fd6bc5b96f7f1870162b266",
      "tree": "1a38d99fc581974ba6d8136c42ca81f3b1216ea3",
      "parents": [
        "68433b73b104bff388aac376631d32abbbd872b0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:56:23 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 20:06:52 2010 -0500"
      },
      "message": "Btrfs: account for missing devices in RAID allocation profiles\n\nWhen we mount in RAID degraded mode without adding a new device to\nreplace the failed one, we can end up using the wrong RAID flags for\nallocations.\n\nThis results in strange combinations of block groups (raid1 in a raid10\nfilesystem) and corruptions when we try to allocate blocks from single\nspindle chunks on drives that are actually missing.\n\nThe first device has two small 4MB chunks in it that mkfs creates and\nthese are usually unused in a raid1 or raid10 setup.  But, in -o degraded,\nthe allocator will fall back to these because the mask of desired raid groups\nisn\u0027t correct.\n\nThe fix here is to count the missing devices as we build up the list\nof devices in the system.  This count is used when picking the\nraid level to make sure we continue using the same levels that were\nin place before we lost a drive.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "68433b73b104bff388aac376631d32abbbd872b0",
      "tree": "b08c8c07f2f77e3d840b316a66a47af1210ab349",
      "parents": [
        "3dd1462e82bcab7625cec129952f26dae7a8b742"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:47:58 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:47:58 2010 -0500"
      },
      "message": "Btrfs: EIO when we fail to read tree roots\n\nIf we just get a plain IO error when we read tree roots, the code\nwasn\u0027t properly sending that error up the chain.  This allowed mounts to\ncontinue when they should failed, and allowed operations\non partially setup root structs.  The end result was usually oopsen\non spinlocks that hadn\u0027t been spun up correctly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3dd1462e82bcab7625cec129952f26dae7a8b742",
      "tree": "0e4da87e5de3c71613ab6a6470b5c16d03c793a4",
      "parents": [
        "fdfb1e4f6c61477a61890b64974d65cdc3a98702"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Tue Dec 07 14:54:09 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:11 2010 -0500"
      },
      "message": "Btrfs: fix compiler warnings\n\n... regarding an unused function when !MIGRATION, and regarding a\nprintk() format string vs argument mismatch.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fdfb1e4f6c61477a61890b64974d65cdc3a98702",
      "tree": "2bb65569dfbcfe12e4d54449d018abeebf88e89d",
      "parents": [
        "914ee295af418e936ec20a08c1663eaabe4cd07a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 10 06:41:56 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:11 2010 -0500"
      },
      "message": "Btrfs: Make async snapshot ioctl more generic\n\nIf we had reserved some bytes in struct btrfs_ioctl_vol_args, we\nwouldn\u0027t have to create a new structure for async snapshot creation.\n\nHere we convert async snapshot ioctl to use a more generic ABI, as\nwe\u0027ll add more ioctls for snapshots/subvolumes in the future, readonly\nsnapshots for example.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.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": "f106e82caaa0d943e47cacc184f5b40d538e0044",
      "tree": "5e8b6c5e0b0b35c65ed509029cda85bd54a8aab8",
      "parents": [
        "75eaa0e22c055e38982df267d0f84cc510ba38bf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Dec 07 01:51:26 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: Fix a crash when mounting a subvolume\n\nWe should drop dentry before deactivating the superblock, otherwise\nwe can hit this bug:\n\nBUG: Dentry f349a690{i\u003d100,n\u003d/} still in use (1) [unmount of btrfs loop1]\n...\n\nSteps to reproduce the bug:\n\n  # mount /dev/loop1 /mnt\n  # mkdir save\n  # btrfs subvolume snapshot /mnt save/snap1\n  # umount /mnt\n  # mount -o subvol\u003dsave/snap1 /dev/loop1 /mnt\n  (crash)\n\nReported-by: Michael Niederle \u003cmniederle@gmx.at\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "75eaa0e22c055e38982df267d0f84cc510ba38bf",
      "tree": "073828ec809c95dbae9368b7f83a3734dad82b45",
      "parents": [
        "24ae63656a165c870c0d69fcc8aac1dc35e25e34"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 10 00:36:28 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: fix sync subvol/snapshot creation\n\nWe were incorrectly taking the async path even for the sync ioctls by\npassing in \u0026transid unconditionally.\n\nThere\u0027s ample room for further cleanup here, but this keeps the fix simple.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "24ae63656a165c870c0d69fcc8aac1dc35e25e34",
      "tree": "8833bfeba51ef45e0acc42f3a23838f528e6a37e",
      "parents": [
        "84cd948cb11041f205242de457e680b9bb872a36"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@linux.intel.com",
        "time": "Mon Dec 06 07:02:36 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:09 2010 -0500"
      },
      "message": "Btrfs: Fix page leak in compressed writeback path\n\n\"start + num_bytes \u003e\u003d actual_end\" can happen when compressed page writeback races\nwith file truncation. In that case we need unlock and release pages past the end\nof file.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "84cd948cb11041f205242de457e680b9bb872a36",
      "tree": "479ac0dc057044a8b399c8c32f1c78641bd33740",
      "parents": [
        "7e1fea731da8c1b5fcf5d8e157befd389b030760"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 12:24:01 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:04 2010 -0500"
      },
      "message": "Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n\nNot being able to delete an orphan item isn\u0027t a horrible thing.  The worst that\nhappens is the next time around we try and do the orphan cleanup and we can\u0027t\nfind the referenced object and just delete the item and move on.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7e1fea731da8c1b5fcf5d8e157befd389b030760",
      "tree": "85800034e3b0f8262dd51e128264bec5ce30aed2",
      "parents": [
        "b8399dee478db7939cd0d6fda8ecacddf2facd03"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 12:22:34 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:15 2010 -0500"
      },
      "message": "Btrfs: fixup return code for btrfs_del_orphan_item\n\nIf the orphan item doesn\u0027t exist, we return 1, which doesn\u0027t make any sense to\nthe callers.  Instead return -ENOENT if we didn\u0027t find the item.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b8399dee478db7939cd0d6fda8ecacddf2facd03",
      "tree": "418a67d8d2de13739f3b14518917c8aaadafe3b8",
      "parents": [
        "2b20982e3154266106573beac2a4d4ba57a2789a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 09:15:11 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:13 2010 -0500"
      },
      "message": "Btrfs: do not do fast caching if we are allocating blocks for tree_root\n\nSince the fast caching uses normal tree locking, we can possibly deadlock if we\nget to the caching via a btrfs_search_slot() on the tree_root.  So just check to\nsee if the root we are on is the tree root, and just don\u0027t do the fast caching.\n\nReported-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2b20982e3154266106573beac2a4d4ba57a2789a",
      "tree": "13539703ccb713385b4c7ff7eac508bb8f3b1e18",
      "parents": [
        "955256f2c3e25c94ad373c43fbc38d2ac8af2a71"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 03 13:17:53 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:12 2010 -0500"
      },
      "message": "Btrfs: deal with space cache errors better\n\nCurrently if the space cache inode generation number doesn\u0027t match the\ngeneration number in the space cache header we will just fail to load the space\ncache, but we won\u0027t mark the space cache as an error, so we\u0027ll keep getting that\nerror each time somebody tries to cache that block group until we actually clear\nthe thing.  Fix this by marking the space cache as having an error so we only\nget the message once.  This patch also makes it so that we don\u0027t try and setup\nspace cache for a block group that isn\u0027t cached, since we won\u0027t be able to write\nit out anyway.  None of these problems are actual problems, they are just\nannoying and sub-optimal.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "955256f2c3e25c94ad373c43fbc38d2ac8af2a71",
      "tree": "f8a6074a34e988e613eb308d4aeb91fd8fb2e968",
      "parents": [
        "5a92bc88cef279261d3f138e25850c122df67045"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 09:41:10 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:10 2010 -0500"
      },
      "message": "Btrfs: fix use after free in O_DIRECT\n\nThis fixes a bug where we use dip after we have freed it.  Instead just use the\nfile_offset that was passed to the function.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "aa3fc52546b847f590d86a093afd863ff9081628",
      "tree": "9d8b35a700287ae19fb3baa0e9f2c93462795d11",
      "parents": [
        "555bdaefd52c386e79f98591810ceb8bab780398",
        "5a92bc88cef279261d3f138e25850c122df67045"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:11:08 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:11:08 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (24 commits)\n  Btrfs: don\u0027t use migrate page without CONFIG_MIGRATION\n  Btrfs: deal with DIO bios that span more than one ordered extent\n  Btrfs: setup blank root and fs_info for mount time\n  Btrfs: fix fiemap\n  Btrfs - fix race between btrfs_get_sb() and umount\n  Btrfs: update inode ctime when using links\n  Btrfs: make sure new inode size is ok in fallocate\n  Btrfs: fix typo in fallocate to make it honor actual size\n  Btrfs: avoid NULL pointer deref in try_release_extent_buffer\n  Btrfs: make btrfs_add_nondir take parent inode as an argument\n  Btrfs: hold i_mutex when calling btrfs_log_dentry_safe\n  Btrfs: use dget_parent where we can UPDATED\n  Btrfs: fix more ESTALE problems with NFS\n  Btrfs: handle NFS lookups properly\n  btrfs: make 1-bit signed fileds unsigned\n  btrfs: Show device attr correctly for symlinks\n  btrfs: Set file size correctly in file clone\n  btrfs: Check if dest_offset is block-size aligned before cloning file\n  Btrfs: handle the space_cache option properly\n  btrfs: Fix early enospc because \u0027unused\u0027 calculated with wrong sign.\n  ...\n"
    },
    {
      "commit": "5a92bc88cef279261d3f138e25850c122df67045",
      "tree": "22bc186bda2d2a61343bed473c3e606b43a49a18",
      "parents": [
        "163cf09c2a0ee5cac6285f9347975bd1e97725da"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 29 09:49:11 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 29 09:49:11 2010 -0500"
      },
      "message": "Btrfs: don\u0027t use migrate page without CONFIG_MIGRATION\n\nFixes compile error\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "163cf09c2a0ee5cac6285f9347975bd1e97725da",
      "tree": "5a83cd42d57fcc4d92d12965b5eafdb472e89b02",
      "parents": [
        "450ba0ea06b6ed3612d27f2b7127a9de4160f285"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 28 19:56:33 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 28 19:56:33 2010 -0500"
      },
      "message": "Btrfs: deal with DIO bios that span more than one ordered extent\n\nThe new DIO bio splitting code has problems when the bio\nspans more than one ordered extent.  This will happen as the\ngeneric DIO code merges our get_blocks calls together into\na bigger single bio.\n\nThis fixes things by walking forward in the ordered extent\ncode finding all the overlapping ordered extents and completing them\nall at once.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "450ba0ea06b6ed3612d27f2b7127a9de4160f285",
      "tree": "2276ddbcb65d7656416cdce69432a5858b35c413",
      "parents": [
        "975f84fee2e8a77ee5f41bfe7c5682bf29366b10"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 14:59:15 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:51 2010 -0500"
      },
      "message": "Btrfs: setup blank root and fs_info for mount time\n\nThere is a problem with how we use sget, it searches through the list of supers\nattached to the fs_type looking for a super with the same fs_devices as what\nwe\u0027re trying to mount.  This depends on sb-\u003es_fs_info being filled, but we don\u0027t\nfill that in until we get to btrfs_fill_super, so we could hit supers on the\nfs_type super list that have a null s_fs_info.  In order to fix that we need to\ngo ahead and setup a blank root with a blank fs_info to hold fs_devices, that\nway our test will work out right and then we can set s_fs_info in\nbtrfs_set_super, and then open_ctree will simply use our pre-allocated root and\nfs_info when setting everything up.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "975f84fee2e8a77ee5f41bfe7c5682bf29366b10",
      "tree": "e7e20e775fa4c126273c28d0c7f0ee05b5bb7f5b",
      "parents": [
        "619c8c763928841b1112e1d417f88bc1d44daecb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 23 19:36:57 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:50 2010 -0500"
      },
      "message": "Btrfs: fix fiemap\n\nThere are two big problems currently with FIEMAP\n\n1) We return extents for holes.  This isn\u0027t supposed to happen, we just don\u0027t\nreturn extents for holes and then userspace interprets the lack of an extent as\na hole.\n\n2) We sometimes don\u0027t set FIEMAP_EXTENT_LAST properly.  This is because we wait\nto see a EXTENT_FLAG_VACANCY flag on the em, but this won\u0027t happen if say we ask\nfiemap to map up to the last extent in a file, and there is nothing but holes up\nto the i_size.  To fix this we need to lookup the last extent in this file and\nsave the logical offset, so if we happen to try and map that extent we can be\nsure to set FIEMAP_EXTENT_LAST.\n\nWith this patch we now pass xfstest 225, which we never have before.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "619c8c763928841b1112e1d417f88bc1d44daecb",
      "tree": "23fc73cf043faac2cdb15a0b22e6e9e29a69797a",
      "parents": [
        "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon Nov 22 02:21:38 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:44 2010 -0500"
      },
      "message": "Btrfs - fix race between btrfs_get_sb() and umount\n\nWhen mounting a btrfs file system btrfs_test_super() may attempt to\nuse sb-\u003es_fs_info, the btrfs root, of a super block that is going away\nand that has had the btrfs root set to NULL in its -\u003eput_super(). But\nif the super block is going away it cannot be an existing super block\nso we can return false in this case.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d",
      "tree": "af17fcd439f67eafc534e894168b397c563e2366",
      "parents": [
        "0ed42a63f3edb144b091d9528401fce95c3c4d8d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 23 19:50:59 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:00:07 2010 -0500"
      },
      "message": "Btrfs: update inode ctime when using links\n\nCurrently we fail xfstest 236 because we\u0027re not updating the inode ctime on\nlink.  This is a simple fix, and makes it so we pass 236 now.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0ed42a63f3edb144b091d9528401fce95c3c4d8d",
      "tree": "d98573473d916eecbeb949d45f8ac9b530440080",
      "parents": [
        "55a61d1d06a3dc443d0db8aaa613365dcb83b98a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 22 18:55:39 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:00:07 2010 -0500"
      },
      "message": "Btrfs: make sure new inode size is ok in fallocate\n\nWe have been failing xfstest 228 forever, because we don\u0027t check to make sure\nthe new inode size is acceptable as far as RLIMIT is concerned.  Just check to\nmake sure it\u0027s ok to create a inode with this new size and error out if not.\nWith this patch we now pass 228.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "55a61d1d06a3dc443d0db8aaa613365dcb83b98a",
      "tree": "39f59ec200674081b086f9e25393401d08848ffd",
      "parents": [
        "45f49bce99d008d6864a20324548f35936ba46fb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 22 18:50:32 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 12:59:16 2010 -0500"
      },
      "message": "Btrfs: fix typo in fallocate to make it honor actual size\n\nThere is a typo in __btrfs_prealloc_file_range() where we set the i_size to\nactual_len/cur_offset, and then just set it to cur_offset again, and do the same\nwith btrfs_ordered_update_i_size().  This fixes it back to keeping i_size in a\nlocal variable and then updating i_size properly.  Tested this with\n\nxfs_io -F -f -c \"falloc 0 1\" -c \"pwrite 0 1\" foo\n\nstat\u0027ing foo gives us a size of 1 instead of 4096 like it was.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "45f49bce99d008d6864a20324548f35936ba46fb",
      "tree": "9bae14a5fa0b68573758dcc1aaaa176f4a62c6b8",
      "parents": [
        "a1b075d28da563c5e2325577f282c042494254ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:27:44 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:27:44 2010 -0500"
      },
      "message": "Btrfs: avoid NULL pointer deref in try_release_extent_buffer\n\nIf we fail to find a pointer in the radix tree, don\u0027t try\nto deref the NULL one we do have.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a1b075d28da563c5e2325577f282c042494254ba",
      "tree": "0699a0490e11efb6fc2b1a2e99fa6419e9e568fa",
      "parents": [
        "495e86779f4f319828bc10dfc0c9ac2161868077"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 20:36:11 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:10 2010 -0500"
      },
      "message": "Btrfs: make btrfs_add_nondir take parent inode as an argument\n\nEverybody who calls btrfs_add_nondir just passes in the dentry of the new file\nand then dereference dentry-\u003ed_parent-\u003ed_inode, but everybody who calls\nbtrfs_add_nondir() are already passed the parent\u0027s inode.  So instead of\ndereferencing dentry-\u003ed_parent, just make btrfs_add_nondir take the dir inode as\nan argument and pass that along so we don\u0027t have to worry about d_parent.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.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": "6a912213046ecb6511fdf35531a0c7de3de963c9",
      "tree": "b745a07d0ad5c5bedf68c55739200093f9d96c1b",
      "parents": [
        "76195853903ca613ba722203db9b747d70478fc7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Nov 20 09:48:00 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:09 2010 -0500"
      },
      "message": "Btrfs: use dget_parent where we can UPDATED\n\nThere are lots of places where we do dentry-\u003ed_parent-\u003ed_inode without holding\nthe dentry-\u003ed_lock.  This could cause problems with rename.  So instead we need\nto use dget_parent() and hold the reference to the parent as long as we are\ngoing to use it\u0027s inode and then dput it at the end.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nCc: raven@themaw.net\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76195853903ca613ba722203db9b747d70478fc7",
      "tree": "d3c7af7f141566a1ca2acfdf1efccd374b5e349f",
      "parents": [
        "2ede0daf01549cecf4bb0962c46dc47382047523"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 02:18:02 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:08 2010 -0500"
      },
      "message": "Btrfs: fix more ESTALE problems with NFS\n\nWhen creating new inodes we don\u0027t setup inode-\u003ei_generation.  So if we generate\nan fh with a newly created inode we save the generation of 0, but if we flush\nthe inode to disk and have to read it back when getting the inode on the server\nwe\u0027ll have the right i_generation, so gens wont match and we get ESTALE.  This\npatch properly sets inode-\u003ei_generation when we create the new inode and now I\u0027m\nno longer getting ESTALE.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2ede0daf01549cecf4bb0962c46dc47382047523",
      "tree": "3d02b4445b8657ac402a64772dd80ca517967557",
      "parents": [
        "0410c94aff109c02b6774a0ed00114987cda7ce5"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 18:54:54 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:08 2010 -0500"
      },
      "message": "Btrfs: handle NFS lookups properly\n\nPeople kept reporting NFS issues, specifically getting ESTALE alot.  I figured\nout how to reproduce the problem\n\nSERVER\nmkfs.btrfs /dev/sda1\nmount /dev/sda1 /mnt/btrfs-test\n\u003cadd /mnt/btrfs-test to /etc/exports\u003e\nbtrfs subvol create /mnt/btrfs-test/foo\nservice nfs start\n\nCLIENT\nmount server:/mnt/btrfs /mnt/test\ncd /mnt/test/foo\nls\n\nSERVER\necho 3 \u003e /proc/sys/vm/drop_caches\n\nCLIENT\nls\t\t\t\u003c-- get an ESTALE here\n\nThis is because the standard way to lookup a name in nfsd is to use readdir, and\nwhat it does is do a readdir on the parent directory looking for the inode of\nthe child.  So in this case the parent being / and the child being foo.  Well\nsubvols all have the same inode number, so doing a readdir of / looking for\ninode 256 will return \u0027.\u0027, which obviously doesn\u0027t match foo.  So instead we\nneed to have our own .get_name so that we can find the right name.\n\nOur .get_name will either lookup the inode backref or the root backref,\nwhichever we\u0027re looking for, and return the name we find.  Running the above\nreproducer with this patch results in everything acting the way its supposed to.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0410c94aff109c02b6774a0ed00114987cda7ce5",
      "tree": "d36f25febc48d836420acfa93f2b4b97b63c9ceb",
      "parents": [
        "f209561ad83c5ffd561dc4bc3a3c90b704fe9231"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "mk@lab.zgora.pl",
        "time": "Sat Nov 20 12:03:07 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:07 2010 -0500"
      },
      "message": "btrfs: make 1-bit signed fileds unsigned\n\nFixes these sparse warnings:\nfs/btrfs/ctree.h:811:17: error: dubious one-bit signed bitfield\nfs/btrfs/ctree.h:812:20: error: dubious one-bit signed bitfield\nfs/btrfs/ctree.h:813:19: error: dubious one-bit signed bitfield\n\nSigned-off-by: Mariusz Kozlowski \u003cmk@lab.zgora.pl\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f209561ad83c5ffd561dc4bc3a3c90b704fe9231",
      "tree": "9241e4251c8e73cdbb8b9e4abf279afd61694a8d",
      "parents": [
        "5f3888ff6f0b9dce60705765752b788a92557644"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 19 02:05:24 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:07 2010 -0500"
      },
      "message": "btrfs: Show device attr correctly for symlinks\n\nSymlinks and files of other types show different device numbers, though\nthey are on the same partition:\n\n $ touch tmp; ln -s tmp tmp2; stat tmp tmp2\n   File: `tmp\u0027\n   Size: 0         \tBlocks: 0          IO Block: 4096   regular empty file\n Device: 15h/21d\tInode: 984027      Links: 1\n --- snip ---\n   File: `tmp2\u0027 -\u003e `tmp\u0027\n   Size: 3         \tBlocks: 0          IO Block: 4096   symbolic link\n Device: 13h/19d\tInode: 984028      Links: 1\n\nReported-by: Toke Høiland-Jørgensen \u003ctoke@toke.dk\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f3888ff6f0b9dce60705765752b788a92557644",
      "tree": "c7745507d85f68b188f0c9b11cc6f783f0d0cb86",
      "parents": [
        "2a6b8daedaf3682bed3fc1d4e2390491f6e19c49"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 19 01:36:34 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:06 2010 -0500"
      },
      "message": "btrfs: Set file size correctly in file clone\n\nSet src_offset \u003d 0, src_length \u003d 20K, dest_offset \u003d 20K. And the\noriginal filesize of the dest file \u0027file2\u0027 is 30K:\n\n  # ls -l /mnt/file2\n  -rw-r--r-- 1 root root 30720 Nov 18 16:42 /mnt/file2\n\nNow clone file1 to file2, the dest file should be 40K, but it\nstill shows 30K:\n\n  # ls -l /mnt/file2\n  -rw-r--r-- 1 root root 30720 Nov 18 16:42 /mnt/file2\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a6b8daedaf3682bed3fc1d4e2390491f6e19c49",
      "tree": "76f418aa17a1e3e690d5c1fb164e0c4b96ca1e8d",
      "parents": [
        "0de90876c6cb774d4a424dafc1fc9ec50071b81b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 19 01:36:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:05 2010 -0500"
      },
      "message": "btrfs: Check if dest_offset is block-size aligned before cloning file\n\nWe\u0027ve done the check for src_offset and src_length, and We should\nalso check dest_offset, otherwise we\u0027ll corrupt the destination\nfile:\n\n  (After cloning file1 to file2 with unaligned dest_offset)\n  # cat /mnt/file2\n  cat: /mnt/file2: Input/output error\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0de90876c6cb774d4a424dafc1fc9ec50071b81b",
      "tree": "a3edae0a3873c959a94f45ee035de83bb85c379c",
      "parents": [
        "6f33434850ed87dc5e56b60ebbad3d3cf405f296"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 13:40:41 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:05 2010 -0500"
      },
      "message": "Btrfs: handle the space_cache option properly\n\nWhen I added the clear_cache option I screwed up and took the break out of\nthe space_cache case statement, so whenever you mount with space_cache you also\nget clear_cache, which does you no good if you say set space_cache in fstab so\nit always gets set.  This patch adds the break back in properly.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6f33434850ed87dc5e56b60ebbad3d3cf405f296",
      "tree": "e70433c2c1fe59180bb8a92341f73931eff7ddb0",
      "parents": [
        "e65e1535542931e51189832264cd282e5899e4b9"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Nov 12 23:17:56 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:04 2010 -0500"
      },
      "message": "btrfs: Fix early enospc because \u0027unused\u0027 calculated with wrong sign.\n\n\u0027unused\u0027 calculated with wrong sign in reserve_metadata_bytes().\nThis might have lead to unwanted over-reservations.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e65e1535542931e51189832264cd282e5899e4b9",
      "tree": "cc3cda0f658cad9f69c351d0735150958a1b0147",
      "parents": [
        "88f794ede7fadd4b63135b94d1561c1f2d5eb5f5"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Nov 22 03:04:43 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:04 2010 -0500"
      },
      "message": "btrfs: fix panic caused by direct IO\n\nbtrfs paniced when we write \u003e64KB data by direct IO at one time.\n\nReproduce steps:\n # mkfs.btrfs /dev/sda5 /dev/sda6\n # mount /dev/sda5 /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile bs\u003d100K count\u003d1 oflag\u003ddirect\n\nThen btrfs paniced:\nmapping failed logical 1103155200 bio len 69632 len 12288\n------------[ cut here ]------------\nkernel BUG at fs/btrfs/volumes.c:3010!\n[SNIP]\nPid: 1992, comm: btrfs-worker-0 Not tainted 2.6.37-rc1 #1 D2399/PRIMERGY\nRIP: 0010:[\u003cffffffffa03d1462\u003e]  [\u003cffffffffa03d1462\u003e] btrfs_map_bio+0x202/0x210 [btrfs]\n[SNIP]\nCall Trace:\n [\u003cffffffffa03ab3eb\u003e] __btrfs_submit_bio_done+0x1b/0x20 [btrfs]\n [\u003cffffffffa03a35ff\u003e] run_one_async_done+0x9f/0xb0 [btrfs]\n [\u003cffffffffa03d3d20\u003e] run_ordered_completions+0x80/0xc0 [btrfs]\n [\u003cffffffffa03d45a4\u003e] worker_loop+0x154/0x5f0 [btrfs]\n [\u003cffffffffa03d4450\u003e] ? worker_loop+0x0/0x5f0 [btrfs]\n [\u003cffffffffa03d4450\u003e] ? worker_loop+0x0/0x5f0 [btrfs]\n [\u003cffffffff81083216\u003e] kthread+0x96/0xa0\n [\u003cffffffff8100cec4\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff81083180\u003e] ? kthread+0x0/0xa0\n [\u003cffffffff8100cec0\u003e] ? kernel_thread_helper+0x0/0x10\n\nWe fix this problem by splitting bios when we submit bios.\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": "88f794ede7fadd4b63135b94d1561c1f2d5eb5f5",
      "tree": "04e4fede4aa520bd4dfb7de7ab28f5ad38d215cc",
      "parents": [
        "0c56fa9662927354255f2f64617d1de61fc03db9"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Nov 22 03:02:55 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:03 2010 -0500"
      },
      "message": "btrfs: cleanup duplicate bio allocating functions\n\nextent_bio_alloc() and compressed_bio_alloc() are similar, cleanup\nsimilar source code.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0c56fa9662927354255f2f64617d1de61fc03db9",
      "tree": "d3e4afe5596c6ac844b8f84fbb5cd89c9a8d0cf8",
      "parents": [
        "784b4e29a26617589edd290dd2919735e190c06e"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Nov 22 03:01:39 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:02 2010 -0500"
      },
      "message": "btrfs: fix free dip and dip-\u003ecsums twice\n\nbio_endio() will free dip and dip-\u003ecsums, so dip and dip-\u003ecsums twice will\nbe freed twice. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "784b4e29a26617589edd290dd2919735e190c06e",
      "tree": "1c1806afb3aa5a7f82b272b8b38dc1e13e45d16b",
      "parents": [
        "6418c96107a2b399848bb8cfc6e29f11ca74fb94"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:20:49 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:02 2010 -0500"
      },
      "message": "Btrfs: add migrate page for metadata inode\n\nMigrate page will directly call the btrfs btree writepage function,\nwhich isn\u0027t actually allowed.\n\nOur writepage assumes that you have locked the extent_buffer and\nflagged the block as written.  Without doing these steps, we can\ncorrupt metadata blocks.\n\nA later commit will remove the btree writepage function since\nit is really only safely used internally by btrfs.  We\nuse writepages for everything else.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "925d169f5b86fe57e2f5264ea574cce9a89b719d",
      "tree": "241d3156b427c6398bd3fc5efa9108635d0e189b",
      "parents": [
        "cdf01dd5443d0befc8c6a32cb2e3d2f568fd2558",
        "6418c96107a2b399848bb8cfc6e29f11ca74fb94"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 09:05:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 09:05:48 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (39 commits)\n  Btrfs: deal with errors from updating the tree log\n  Btrfs: allow subvol deletion by unprivileged user with -o user_subvol_rm_allowed\n  Btrfs: make SNAP_DESTROY async\n  Btrfs: add SNAP_CREATE_ASYNC ioctl\n  Btrfs: add START_SYNC, WAIT_SYNC ioctls\n  Btrfs: async transaction commit\n  Btrfs: fix deadlock in btrfs_commit_transaction\n  Btrfs: fix lockdep warning on clone ioctl\n  Btrfs: fix clone ioctl where range is adjacent to extent\n  Btrfs: fix delalloc checks in clone ioctl\n  Btrfs: drop unused variable in block_alloc_rsv\n  Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n  Btrfs: Fix variables set but not read (bugs found by gcc 4.6)\n  Btrfs: Use ERR_CAST helpers\n  Btrfs: use memdup_user helpers\n  Btrfs: fix raid code for removing missing drives\n  Btrfs: Switch the extent buffer rbtree into a radix tree\n  Btrfs: restructure try_release_extent_buffer()\n  Btrfs: use the flusher threads for delalloc throttling\n  Btrfs: tune the chunk allocation to 5% of the FS as metadata\n  ...\n\nFix up trivial conflicts in fs/btrfs/super.c and fs/fs-writeback.c, and\nremove use of INIT_RCU_HEAD in fs/btrfs/extent_io.c (that init macro was\nuseless and removed in commit 5e8067adfdba: \"rcu head remove init\")\n"
    },
    {
      "commit": "6418c96107a2b399848bb8cfc6e29f11ca74fb94",
      "tree": "38064798bde148760a7a3b555c0eb097bfd29fb2",
      "parents": [
        "4260f7c7516f4c209cf0ca34fda99cc9a0847772"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Oct 30 07:34:24 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Oct 30 07:34:24 2010 -0400"
      },
      "message": "Btrfs: deal with errors from updating the tree log\n\nDuring unlink we remove any references to the inode from\nthe tree log.  It can return -ENOENT and other errors,\nand this changes the unlink code to deal with it.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4260f7c7516f4c209cf0ca34fda99cc9a0847772",
      "tree": "7feb5ab81d074b17a7c5b12bcc019c2e1bb010e2",
      "parents": [
        "531cb13f1e417c060b54f979e1659ecd69bea650"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:46:43 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:42:10 2010 -0400"
      },
      "message": "Btrfs: allow subvol deletion by unprivileged user with -o user_subvol_rm_allowed\n\nAdd a mount option user_subvol_rm_allowed that allows users to delete a\n(potentially non-empty!) subvol when they would otherwise we allowed to do\nan rmdir(2).  We duplicate the may_delete() checks from the core VFS code\nto implement identical security checks (minus the directory size check).\nWe additionally require that the user has write+exec permission on the\nsubvol root inode.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "531cb13f1e417c060b54f979e1659ecd69bea650",
      "tree": "6b421ac1ddf7cad271cd0c767f0c19e6c4f826df",
      "parents": [
        "72fd032e94240d001b1d22f2c1dfd2592b02e44e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:42:10 2010 -0400"
      },
      "message": "Btrfs: make SNAP_DESTROY async\n\nThere is no reason to force an immediate commit when deleting a snapshot.\nUsers have some expectation that space from a deleted snapshot be freed\nimmediately, but even if we do commit the reclaim is a background process.\n\nIf users _do_ want the deletion to be durable, they can call \u0027sync\u0027.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "72fd032e94240d001b1d22f2c1dfd2592b02e44e",
      "tree": "7671ea5585f79a8cecc9708e869aa37e24eb74de",
      "parents": [
        "462045928bda777c86919a396a42991fcf235378"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:41:57 2010 -0400"
      },
      "message": "Btrfs: add SNAP_CREATE_ASYNC ioctl\n\nCreate a snap without waiting for it to commit to disk.  The ioctl is\nordered such that subsequent operations will not be contained by the\ncreated snapshot, and the commit is initiated, but the ioctl does not\nwait for the snapshot to commit to disk.\n\nWe return the specific transid to userspace so that an application can wait\nfor this specific snapshot creation to commit via the WAIT_SYNC ioctl.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "462045928bda777c86919a396a42991fcf235378",
      "tree": "c2b12ff8e9ef1951b5960b853034bd4165578f99",
      "parents": [
        "bb9c12c945cbd1b0eaa1589546dde772ccabeeba"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "message": "Btrfs: add START_SYNC, WAIT_SYNC ioctls\n\nSTART_SYNC will start a sync/commit, but not wait for it to\ncomplete.  Any modification started after the ioctl returns is\nguaranteed not to be included in the commit.  If a non-NULL\npointer is passed, the transaction id will be returned to\nuserspace.\n\nWAIT_SYNC will wait for any in-progress commit to complete.  If a\ntransaction id is specified, the ioctl will block and then\nreturn (success) when the specified transaction has committed.\nIf it has already committed when we call the ioctl, it returns\nimmediately.  If the specified transaction doesn\u0027t exist, it\nreturns EINVAL.\n\nIf no transaction id is specified, WAIT_SYNC will wait for the\ncurrently committing transaction to finish it\u0027s commit to disk.\nIf there is no currently committing transaction, it returns\nsuccess.\n\nThese ioctls are useful for applications which want to impose an\nordering on when fs modifications reach disk, but do not want to\nwait for the full (slow) commit process to do so.\n\nPicky callers can take the transid returned by START_SYNC and\nfeed it to WAIT_SYNC, and be certain to wait only as long as\nnecessary for the transaction _they_ started to reach disk.\n\nSloppy callers can START_SYNC and WAIT_SYNC without a transid,\nand provided they didn\u0027t wait too long between the calls, they\nwill get the same result.  However, if a second commit starts\nbefore they call WAIT_SYNC, they may end up waiting longer for\nit to commit as well.  Even so, a START_SYNC+WAIT_SYNC still\nguarantees that any operation completed before the START_SYNC\nreaches disk.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bb9c12c945cbd1b0eaa1589546dde772ccabeeba",
      "tree": "92f0bb01dce5125547c590d7c06b3e02d5c9d4fa",
      "parents": [
        "99d16cbcaf694c803a1b6bf7e851694ffe1d255d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "message": "Btrfs: async transaction commit\n\nAdd support for an async transaction commit that is ordered such that any\nsubsequent operations will join the following transaction, but does not\nwait until the current commit is fully on disk.  This avoids much of the\nlatency associated with the btrfs_commit_transaction for callers concerned\nwith serialization and not safety.\n\nThe wait_for_unblock flag controls whether we wait for the \u0027middle\u0027 portion\nof commit_transaction to complete, which is necessary if the caller expects\nsome of the modifications contained in the commit to be available (this is\nthe case for subvol/snapshot creation).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "99d16cbcaf694c803a1b6bf7e851694ffe1d255d",
      "tree": "dacf7f8eca75dc0d92566b5d3876f3efe8196e35",
      "parents": [
        "fccdae435c1b295cca546f23f6f43126a28ffac3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "message": "Btrfs: fix deadlock in btrfs_commit_transaction\n\nWe calculate timeout (either 1 or MAX_SCHEDULE_TIMEOUT) based on whether\nnum_writers \u003e 1 or should_grow at the top of the loop.  Then, much much\nlater, we wait for that timeout if either num_writers or should_grow is\ntrue.  However, it\u0027s possible for a racing process (calling\nbtrfs_end_transaction()) to decrement num_writers such that we wait\nforever instead of for 1.\n\nFix this by deciding how long to wait when we wait.  Include a smp_mb()\nbefore checking if the waitqueue is active to ensure the num_writers\nis visible.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fccdae435c1b295cca546f23f6f43126a28ffac3",
      "tree": "e5c84325114cd554c62e7e275e85596200b45d19",
      "parents": [
        "050006a753bab8ba05f2113cc57ba49398cd5521"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "message": "Btrfs: fix lockdep warning on clone ioctl\n\nI\u0027m no lockdep expert, but this appears to make the lockdep warning go\naway for the i_mutex locking in the clone ioctl.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "050006a753bab8ba05f2113cc57ba49398cd5521",
      "tree": "43b8bdc0ce9f76d2726096dbfbc72a04c141afa6",
      "parents": [
        "9a019196ecaa57780141ef5d1f0bb31050d6ed5b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "message": "Btrfs: fix clone ioctl where range is adjacent to extent\n\nWe had an edge case issue where the requested range was just\nfollowing an existing extent. Instead of skipping to the next\nextent, we used the previous one which lead to having zero\nsized extents.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9a019196ecaa57780141ef5d1f0bb31050d6ed5b",
      "tree": "abd838acff1d6407d2d91efeb38e76e53271aadb",
      "parents": [
        "d8e39c457bc1ca2a7304bc086c7b0f0c10854921"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "message": "Btrfs: fix delalloc checks in clone ioctl\n\nThe lookup_first_ordered_extent() was done on the wrong inode, and the\n-\u003edelalloc_bytes test was wrong, as the following\nbtrfs_wait_ordered_range() would only invoke a range write and wouldn\u0027t\nwrite the entire file data range. Also, a bad parameter was passed to\nbtrfs_wait_ordered_range().\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d8e39c457bc1ca2a7304bc086c7b0f0c10854921",
      "tree": "da2f37292b8021dfe90aa9803ee85f9f95acedf5",
      "parents": [
        "559af8211433b8c0b20e6c43c61409cb9c9c2996"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:17:41 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:17:41 2010 -0400"
      },
      "message": "Btrfs: drop unused variable in block_alloc_rsv\n\nThe alloc_target variable is not really used.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "559af8211433b8c0b20e6c43c61409cb9c9c2996",
      "tree": "702ebd4c4f5b610daa36f65d814a518356a9a46b",
      "parents": [
        "411fc6bcef54f828a5458f4730c68abdf13c6bf0"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "message": "Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n\nThese are all the cases where a variable is set, but not read which are\nnot bugs as far as I can see, but simply leftovers.\n\nStill needs more review.\n\nFound by gcc 4.6\u0027s new warnings\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "411fc6bcef54f828a5458f4730c68abdf13c6bf0",
      "tree": "89b91cd7e0d7633e9d6e386e388bd0493165f66c",
      "parents": [
        "d0b678cb0a26783ab7238784f1e7e608e5caafa3"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Fri Oct 29 15:14:31 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:31 2010 -0400"
      },
      "message": "Btrfs: Fix variables set but not read (bugs found by gcc 4.6)\n\nThese are all the cases where a variable is set, but not\nread which are really bugs.\n\n- Couple of incorrect error handling fixed.\n- One incorrect use of a allocation policy\n- Some other things\n\nStill needs more review.\n\nFound by gcc 4.6\u0027s new warnings.\n\n[akpm@linux-foundation.org: fix build.  Might have been bitrot]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0b678cb0a26783ab7238784f1e7e608e5caafa3",
      "tree": "a912b938a6558550960f6b07139bd119d86f89eb",
      "parents": [
        "2354d08fe9aeec3e451b85cb5387a6b28dbca0b1"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Oct 29 15:14:23 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:23 2010 -0400"
      },
      "message": "Btrfs: Use ERR_CAST helpers\n\nUse ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more\nclear what is the purpose of the operation, which otherwise looks like a\nno-op.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\nT x;\nidentifier f;\n@@\n\nT f (...) { \u003c+...\n- ERR_PTR(PTR_ERR(x))\n+ x\n ...+\u003e }\n\n@@\nexpression x;\n@@\n\n- ERR_PTR(PTR_ERR(x))\n+ ERR_CAST(x)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2354d08fe9aeec3e451b85cb5387a6b28dbca0b1",
      "tree": "7a3f43dfac81fc54faf231400a4b871ca24bb031",
      "parents": [
        "18e503d695ff8ff9a43768555aa74575bf6b77f3"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Oct 29 15:14:18 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:18 2010 -0400"
      },
      "message": "Btrfs: use memdup_user helpers\n\nUse memdup_user when user data is immediately copied into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to,size,flag;\nposition p;\nidentifier l1,l2;\n@@\n\n-  to \u003d \\(kmalloc@p\\|kzalloc@p\\)(size,flag);\n+  to \u003d memdup_user(from,size);\n   if (\n-      to\u003d\u003dNULL\n+      IS_ERR(to)\n                 || ...) {\n   \u003c+... when !\u003d goto l1;\n-  -ENOMEM\n+  PTR_ERR(to)\n   ...+\u003e\n   }\n-  if (copy_from_user(to, from, size) !\u003d 0) {\n-    \u003c+... when !\u003d goto l2;\n-    -EFAULT\n-    ...+\u003e\n-  }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "18e503d695ff8ff9a43768555aa74575bf6b77f3",
      "tree": "c17c34762dcf9988e9739ae0cdf5628885bf8828",
      "parents": [
        "19fe0a8b787d7c7f9318975b5a8c6e7e5e54e925"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 28 15:30:42 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 11:25:46 2010 -0400"
      },
      "message": "Btrfs: fix raid code for removing missing drives\n\nWhen btrfs is mounted in degraded mode, it has some internal structures\nto track the missing devices.  This missing device is setup as readonly,\nbut the mapping code can get upset when we try to write to it.\n\nThis changes the mapping code to return -EIO instead of oops when we try\nto write to the readonly device.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "19fe0a8b787d7c7f9318975b5a8c6e7e5e54e925",
      "tree": "78aea56ede5735ae3183f2c4b846773b8fd8155b",
      "parents": [
        "897ca6e9b4fef86d5dfb6b31fd9f592ce6a47a42"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Oct 26 20:57:29 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 11:25:45 2010 -0400"
      },
      "message": "Btrfs: Switch the extent buffer rbtree into a radix tree\n\nThis patch reduces the CPU time spent in the extent buffer search by using the\nradix tree instead of the rbtree and using the rcu lock instead of the spin\nlock.\n\nI did a quick test by the benchmark tool[1] and found the patch improve the\nfile creation/deletion performance problem that I have reported[2].\n\nBefore applying this patch:\nCreate files:\n\tTotal files: 50000\n\tTotal time: 0.971531\n\tAverage time: 0.000019\nDelete files:\n\tTotal files: 50000\n\tTotal time: 1.366761\n\tAverage time: 0.000027\n\nAfter applying this patch:\nCreate files:\n\tTotal files: 50000\n\tTotal time: 0.927455\n\tAverage time: 0.000019\nDelete files:\n\tTotal files: 50000\n\tTotal time: 1.292280\n\tAverage time: 0.000026\n\n[1] http://marc.info/?l\u003dlinux-btrfs\u0026m\u003d128212635122920\u0026q\u003dp3\n[2] http://marc.info/?l\u003dlinux-btrfs\u0026m\u003d128212635122920\u0026w\u003d2\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "897ca6e9b4fef86d5dfb6b31fd9f592ce6a47a42",
      "tree": "8cb79f54090e84290122652aa9fbd1c51c642526",
      "parents": [
        "bf9022e06af553553bc8f4e21ce36147ca6eae68"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Tue Oct 26 20:57:29 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 11:25:45 2010 -0400"
      },
      "message": "Btrfs: restructure try_release_extent_buffer()\n\nrestructure try_release_extent_buffer() and write a function to release the\nextent buffer. It will be used later.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bf9022e06af553553bc8f4e21ce36147ca6eae68",
      "tree": "e33d9a25fc5ec8e03c1f0d5a4775c865e0520811",
      "parents": [
        "e5bc2458293b2af6c0b94435965c68cc70974b56"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 26 13:40:45 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 11:25:36 2010 -0400"
      },
      "message": "Btrfs: use the flusher threads for delalloc throttling\n\nWe have a fairly complex set of loops around walking our list of\ndelalloc inodes when we find metadata delalloc space running low.\nIt doesn\u0027t work very well, can use large amounts of CPU and doesn\u0027t\ndo very efficient writeback.\n\nThis switches us to kick the bdi flusher threads instead.  All dirty\ndata in btrfs is accounted as delalloc data, so this is very similar\nin terms of what it writes, but we\u0027re able to just kick off the IO\nand wait for progress.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e5bc2458293b2af6c0b94435965c68cc70974b56",
      "tree": "d4b79f61f2ff236b080583345b4dfd617b0fca07",
      "parents": [
        "3259f8bed2f0f57c2fdcdac1b510c3fa319ef97e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 26 13:37:56 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 11:25:35 2010 -0400"
      },
      "message": "Btrfs: tune the chunk allocation to 5% of the FS as metadata\n\nAn earlier commit tried to keep us from allocating too many\nempty metadata chunks.  It was somewhat too restrictive and could\nlead to ENOSPC errors on empty filesystems.\n\nThis increases the limits to about 5% of the FS size, allowing more\nmetadata chunks to be preallocated.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cb44921a09221f0a90217b44044448f63190f3e5",
      "tree": "5580522b6db6868c02d3072320e338442272cb2b",
      "parents": [
        "6b5b817f103450444f3f658a498f435d92a197e5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Oct 24 11:01:27 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:31:30 2010 -0400"
      },
      "message": "Btrfs: don\u0027t loop forever on bad btree blocks\n\nWhen btrfs discovers the generation number in a btree block is\nincorrect, it can loop forever without forcing the RAID\ncode to try a valid mirror, and without returning EIO.\n\nThis changes things to properly kick out the EIO.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6b5b817f103450444f3f658a498f435d92a197e5",
      "tree": "2896588127c4dd6c2867ef09e7e3cdd83391f8ae",
      "parents": [
        "8216ef866df1119fd5a72372b8b29bce49c18590",
        "e9bb7f10d3617304ef94ff7aa8fefbce3078f08b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:27:49 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:27:49 2010 -0400"
      },
      "message": "Merge branch \u0027bug-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8216ef866df1119fd5a72372b8b29bce49c18590",
      "tree": "8536ec3e5a308639eeef15ac7d6cb55b655fa0fb",
      "parents": [
        "88c2ba3b069f1e0f4694124d02985fa7620a19f1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 28 16:55:47 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:37 2010 -0400"
      },
      "message": "Btrfs: let the user know space caching is enabled\n\nIf you mount -o space_cache, the option will be persistent across mounts, but to\nmake sure the user knows that they did this, emit a message telling them if they\ndidn\u0027t mount with -o space_cache but the feature is still used.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "88c2ba3b069f1e0f4694124d02985fa7620a19f1",
      "tree": "e41859aca299e14e2658d75e2bf1ef2aea9ab077",
      "parents": [
        "67377734fd24c32cbdfeb697c2e2bd7fed519e75"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Sep 21 14:21:34 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:36 2010 -0400"
      },
      "message": "Btrfs: Add a clear_cache mount option\n\nIf something goes wrong with the free space cache we need a way to make sure\nit\u0027s not loaded on mount and that it\u0027s cleared for everybody.  When you pass the\nclear_cache option it will make it so all block groups are setup to be cleared,\nwhich keeps them from being loaded and then they will be truncated when the\ntransaction is committed.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "67377734fd24c32cbdfeb697c2e2bd7fed519e75",
      "tree": "5b295333ab943d24b190bd3fef2486dfffa7de47",
      "parents": [
        "dde5abee12327d59f968bbfc8151e1b04082a2c4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Sep 16 16:19:09 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:36 2010 -0400"
      },
      "message": "Btrfs: add support for mixed data+metadata block groups\n\nThere are just a few things that need to be fixed in the kernel to support mixed\ndata+metadata block groups.  Mostly we just need to make sure that if we are\nusing mixed block groups that we continue to allocate mixed block groups as we\nneed them.  Also we need to make sure __find_space_info will find our space info\nif we search for DATA or METADATA only.  Tested this with xfstests and it works\nnicely.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "dde5abee12327d59f968bbfc8151e1b04082a2c4",
      "tree": "eba52b161a83f77c902ecb365ad661d317499717",
      "parents": [
        "9d66e233c7042da27ec699453770f41e567a0442"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Sep 16 16:17:03 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:35 2010 -0400"
      },
      "message": "Btrfs: check cache-\u003ecaching_ctl before returning if caching has started\n\nWith the free space disk caching we can mark the block group as started with the\ncaching, but we don\u0027t have a caching ctl.  This can race with anybody else who\ntries to get the caching ctl before we cache (this is very hard to do btw).  So\ninstead check to see if cache-\u003ecaching_ctl is set, and if not return NULL.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9d66e233c7042da27ec699453770f41e567a0442",
      "tree": "27fd70c6c07cb96a48123bdec07e9c2feed90f13",
      "parents": [
        "0cb59c9953171e9adf6da8142a5c85ceb77bb60d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Aug 25 16:54:15 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:35 2010 -0400"
      },
      "message": "Btrfs: load free space cache if it exists\n\nThis patch actually loads the free space cache if it exists.  The only thing\nthat really changes here is that we need to cache the block group if we\u0027re going\nto remove an extent from it.  Previously we did not do this since the caching\nkthread would pick it up.  With the on disk cache we don\u0027t have this luxury so\nwe need to make sure we read the on disk cache in first, and then remove the\nextent, that way when the extent is unpinned the free space is added to the\nblock group.  This has been tested with all sorts of things.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0cb59c9953171e9adf6da8142a5c85ceb77bb60d",
      "tree": "f72af47fa18815491814290a1b4907082bd9316d",
      "parents": [
        "0af3d00bad38d3bb9912a60928ad0669f17bdb76"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 02 12:14:14 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 09:26:29 2010 -0400"
      },
      "message": "Btrfs: write out free space cache\n\nThis is a simple bit, just dump the free space cache out to our preallocated\ninode when we\u0027re writing out dirty block groups.  There are a bunch of changes\nin inode.c in order to account for special cases.  Mostly when we\u0027re doing the\nwriteout we\u0027re holding trans_mutex, so we need to use the nolock transacation\nfunctions.  Also we can\u0027t do asynchronous completions since the async thread\ncould be blocked on already completed IO waiting for the transaction lock.  This\nhas been tested with xfstests and btrfs filesystem balance, as well as my ENOSPC\ntests.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "061dbc6b9010bc1a30ef9a1da5469aefa83abd7f",
      "tree": "34d4daddc92d881d1836880e03f0ec82a742f90e",
      "parents": [
        "a7f9fb205a88ab9af675a68fc554cf51dafc8b60"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 16:21:33 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:21 2010 -0400"
      },
      "message": "convert btrfs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0af3d00bad38d3bb9912a60928ad0669f17bdb76",
      "tree": "abbf4c773138a33dcde483ac60f016c4b5e55dcc",
      "parents": [
        "f6f94e2ab1b33f0082ac22d71f66385a60d8157f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jun 21 14:48:16 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 28 15:59:09 2010 -0400"
      },
      "message": "Btrfs: create special free space cache inode\n\nIn order to save free space cache, we need an inode to hold the data, and we\nneed a special item to point at the right inode for the right block group.  So\nfirst, create a special item that will point to the right inode, and the number\nof extent entries we will have and the number of bitmaps we will have.  We\ntruncate and pre-allocate space everytime to make sure it\u0027s uptodate.\n\nThis feature will be turned on as soon as you mount with -o space_cache, however\nit is safe to boot into old kernels, they will just generate the cache the old\nfashion way.  When you boot back into a newer kernel we will notice that we\nmodified and not the cache and automatically discard the cache.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "e9bb7f10d3617304ef94ff7aa8fefbce3078f08b",
      "tree": "0e56ad5bd8b4914aa82103d72531f8c95b35ce80",
      "parents": [
        "382279336f428c80f344edfc30d53797e3e76146"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 26 12:55:03 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 26 12:55:03 2010 -0400"
      },
      "message": "Btrfs: remove warn_on from use_block_rsv\n\nBecause btrfs_dirty_inode does a btrfs_join_transaction, it doesn\u0027t actually\nreserve space.  It does this so we can try and dirty the inode quickly without\nhaving to deal with the ENOSPC problems.  But if it does get back ENOSPC it\nhandles it properly.  The problem is use_block_rsv does a WARN_ON whenever this\ncase happens, even tho btrfs_dirty_inode takes it into account and actually\nexpects to get -ENOSPC if things are particularly tight.  So instead just remove\nthe warning.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "382279336f428c80f344edfc30d53797e3e76146",
      "tree": "91b1acbc1f60430742ace0b9155c4a014b7dbbaf",
      "parents": [
        "0e78340f3c1fc603e8016c8ac304766bcc65506e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 26 12:52:53 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Oct 26 12:52:53 2010 -0400"
      },
      "message": "Btrfs: set trans to null in reserve_metadata_bytes if we commit the transaction\n\nbtrfs_commit_transaction will free our trans, but because we pass trans to\nshrink_delalloc we could possibly have a use after free situation.  So instead\nif we commit the transaction, set trans to null and set committed to true so we\ndon\u0027t keep trying to commit a transaction.  This fixes a panic I could reproduce\nat will.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d3382cbf02986e4833849f528d451367ea0b4cb",
      "tree": "b754f9903c0f77ce40dcff18030b49d0ce213eab",
      "parents": [
        "a8dade34e3df581bc36ca2afe6e27055e178801c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 15:19:20 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:24:15 2010 -0400"
      },
      "message": "new helper: inode_unhashed()\n\nnote: for race-free uses you inode_lock held\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "0e78340f3c1fc603e8016c8ac304766bcc65506e",
      "tree": "a86dfd1d78a577e8d799e90f105ccfdc881dec0a",
      "parents": [
        "8bb8ab2e93f9c3c9453e13be0f37d344a32a3a6d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:26:53 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:55:03 2010 -0400"
      },
      "message": "Btrfs: fix error handling in btrfs_get_sb\n\nIf we failed to find the root subvol id, or the subvol\u003d\u003cname\u003e, we would\ndeactivate the locked super and close the devices.  The problem is at this point\nwe have gotten the SB all setup, which includes setting super_operations, so\nwhen we\u0027d deactiveate the super, we\u0027d do a close_ctree() which closes the\ndevices, so we\u0027d end up closing the devices twice.  So if you do something like\nthis\n\nmount /dev/sda1 /mnt/test1\nmount /dev/sda1 /mnt/test2 -o subvol\u003dxxx\numount /mnt/test1\n\nit would blow up (if subvol xxx doesn\u0027t exist).  This patch fixes that problem.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "8bb8ab2e93f9c3c9453e13be0f37d344a32a3a6d",
      "tree": "619600c7458a3af18555f189d53efc4c092b9280",
      "parents": [
        "14ed0ca6e8236f2d264c4a8faec9e3a2b3d04377"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 15 16:52:49 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:55:01 2010 -0400"
      },
      "message": "Btrfs: rework how we reserve metadata bytes\n\nWith multi-threaded writes we were getting ENOSPC early because somebody would\ncome in, start flushing delalloc because they couldn\u0027t make their reservation,\nand in the meantime other threads would come in and use the space that was\ngetting freed up, so when the original thread went to check to see if they had\nspace they didn\u0027t and they\u0027d return ENOSPC.  So instead if we have some free\nspace but not enough for our reservation, take the reservation and then start\ndoing the flushing.  The only time we don\u0027t take reservations is when we\u0027ve\nalready overcommitted our space, that way we don\u0027t have people who come late to\nthe party way overcommitting ourselves.  This also moves all of the retrying and\nflushing code into reserve_metdata_bytes so it\u0027s all uniform.  This keeps my\nfs_mark test from returning -ENOSPC as soon as it starts and actually lets me\nfill up the disk.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "14ed0ca6e8236f2d264c4a8faec9e3a2b3d04377",
      "tree": "1477718d4ab61c258c2a514afec5bfc36e89acf7",
      "parents": [
        "0019f10db6f596f3e14a19f9bd7059a1b85b0853"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 15 15:23:48 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:55:00 2010 -0400"
      },
      "message": "Btrfs: don\u0027t allocate chunks as aggressively\n\nBecause the ENOSPC code over reserves super aggressively we end up allocating\nchunks way more often than we should.  For example with my fs_mark tests on a\n2gb fs I can end up reserved 1gb just for metadata, when only 34mb of that is\nbeing used.  So instead check to see if the amount of space actually used is\nless than 30% of the total space, and if so don\u0027t allocate a chunk, but only if\nwe have at least 256mb of free space to make sure we don\u0027t put too much pressure\non free space.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0019f10db6f596f3e14a19f9bd7059a1b85b0853",
      "tree": "9f295bc2e335a6890ea29bc0830bda43903671d9",
      "parents": [
        "6d48755d02b150de7f47e7b4753202f2fc9f990f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 15 15:18:40 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:54:58 2010 -0400"
      },
      "message": "Btrfs: re-work delalloc flushing\n\nCurrently we try and flush delalloc, but we only do that in a sort of weak way,\nwhich works fine in most cases but if we\u0027re under heavy pressure we need to be\nable to wait for flushing to happen.  Also instead of checking the bytes\nreserved in the block_rsv, check the space info since it is more accurate.  The\nsync option will be used in a future patch.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "6d48755d02b150de7f47e7b4753202f2fc9f990f",
      "tree": "82bfa3265acbec93df92c9e0a5dced4e9b224208",
      "parents": [
        "89a55897a2fbbceb94480952784004bf23911d38"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 15 15:13:32 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:54:56 2010 -0400"
      },
      "message": "Btrfs: fix reservation code for mixed block groups\n\nThe global reservation stuff tries to add together DATA and METADATA used in\norder to figure out how much to reserve for everything, but this doesn\u0027t work\nright for mixed block groups.  Instead if we have mixed block groups just set\ndata used to 0.  Also with mixed block groups we will use bytes_may_use for\nkeeping track of delalloc bytes, so we need to take that into account in our\nreservation calculations.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "89a55897a2fbbceb94480952784004bf23911d38",
      "tree": "e62ea1ced4c7941ab53e7aa7047ce8f0af0add9f",
      "parents": [
        "bf5fc093c5b625e4259203f1cee7ca73488a5620"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Oct 14 14:52:27 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:54:55 2010 -0400"
      },
      "message": "Btrfs: fix df regression\n\nThe new ENOSPC stuff breaks out the raid types which breaks the way we were\nreporting df to the system.  This fixes it back so that Available is the total\nspace available to data and used is the actual bytes used by the filesystem.\nThis means that Available is Total - data used - all of the metadata space.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "bf5fc093c5b625e4259203f1cee7ca73488a5620",
      "tree": "099385541c534c1adcdb4251277ee4364562d5ec",
      "parents": [
        "a1f765061e1491d5ec467429d0d6adfd9df2f6d9"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Sep 29 11:22:36 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:54:53 2010 -0400"
      },
      "message": "Btrfs: fix the df ioctl to report raid types\n\nThe new ENOSPC stuff broke the df ioctl since we no longer create seperate space\ninfo\u0027s for each RAID type.  So instead, loop through each space info\u0027s raid\nlists so we can get the right RAID information which will allow the df ioctl to\ntell us RAID types again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a1f765061e1491d5ec467429d0d6adfd9df2f6d9",
      "tree": "0263688d261b69aedf2dad690ac1d93f875eec78",
      "parents": [
        "9fe6206f400646a2322096b56c59891d530e8d51"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Sep 16 14:29:55 2010 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Oct 22 15:54:51 2010 -0400"
      },
      "message": "Btrfs: stop trying to shrink delalloc if there are no inodes to reclaim\n\nIn very severe ENOSPC cases we can run out of inodes to do delalloc on, which\nmeans we\u0027ll just keep looping trying to shrink delalloc.  Instead, if we fail to\nshrink delalloc 3 times in a row break out since we\u0027re not likely to make any\nprogress.  Tested this with a 100mb fs an xfstests test 13.  Before the patch it\nwould hang the box, with the patch we get -ENOSPC like we should.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c3b9a62c8f932f32a733d6b628f61f3f28345727",
      "tree": "623a150079db7883444cc404ffcc1e0af4b80b7a",
      "parents": [
        "80f6c29d8a758650d5c9eac05074b4b3e8c266df"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:12 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:39 2010 +0200"
      },
      "message": "btrfs: replace barriers with explicit flush / FUA usage\n\nSwitch to the WRITE_FLUSH_FUA flag for log writes, remove the EOPNOTSUPP\ndetection for barriers and stop setting the barrier flag for discards.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2f9e825d3e0e2b407ae8f082de5c00afcf7378fb",
      "tree": "f8b3ee40674ce4acd5508a0a0bf52a30904caf6c",
      "parents": [
        "7ae0dea900b027cd90e8a3e14deca9a19e17638b",
        "de75d60d5ea235e6e09f4962ab22541ce0fe176a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block: (149 commits)\n  block: make sure that REQ_* types are seen even with CONFIG_BLOCK\u003dn\n  xen-blkfront: fix missing out label\n  blkdev: fix blkdev_issue_zeroout return value\n  block: update request stacking methods to support discards\n  block: fix missing export of blk_types.h\n  writeback: fix bad _bh spinlock nesting\n  drbd: revert \"delay probes\", feature is being re-implemented differently\n  drbd: Initialize all members of sync_conf to their defaults [Bugz 315]\n  drbd: Disable delay probes for the upcomming release\n  writeback: cleanup bdi_register\n  writeback: add new tracepoints\n  writeback: remove unnecessary init_timer call\n  writeback: optimize periodic bdi thread wakeups\n  writeback: prevent unnecessary bdi threads wakeups\n  writeback: move bdi threads exiting logic to the forker thread\n  writeback: restructure bdi forker loop a little\n  writeback: move last_active to bdi\n  writeback: do not remove bdi from bdi_list\n  writeback: simplify bdi code a little\n  writeback: do not lose wake-ups in bdi threads\n  ...\n\nFixed up pretty trivial conflicts in drivers/block/virtio_blk.c and\ndrivers/scsi/scsi_error.c as per Jens.\n"
    },
    {
      "commit": "696ac96c2757963cd6751c26215e3c6d328705aa",
      "tree": "e6cfc456e6c4a7d6de9df7880e807a957a226009",
      "parents": [
        "4e29d50a28c267bd1d1731a9fb8f773663d93e23"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jul 05 15:15:02 2010 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:55 2010 -0400"
      },
      "message": "btrfs: remove junk sb_dirt change\n\nBTRFS does not define a \u0027-\u003ewrite_super()\u0027 method, so it should\nnot mark its superblock as dirty. This looks like some left-over.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "45321ac54316eaeeebde0b5f728a1791e500974c",
      "tree": "c3989dd1a8b4a50168d696aa608941de88da9ade",
      "parents": [
        "30140837f256558c943636245ab90897a9455a70"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:43:19 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:35 2010 -0400"
      },
      "message": "Make -\u003edrop_inode() just return whether inode needs to be dropped\n\n... and let iput_final() do the actual eviction or retention\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bd55597520a2eaa0d71dd7683513a14bfd1bdf5c",
      "tree": "b99685fe2d9b6c9ad87b7d3e6a8fc47a5ac248ce",
      "parents": [
        "d5c1515cf374951f07e5bf97b6ff3718d3401b6f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 11:35:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:22 2010 -0400"
      },
      "message": "convert btrfs to -\u003eevict_inode()\n\nNB: do we want btrfs_wait_ordered_range() on eviction of\ninodes with positive i_nlink on subvolume with zero root_refs?\nIf not, btrfs_evict_inode() can be simplified by unconditionally\nbailing out in case of i_nlink \u003e 0 in the very beginning...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    }
  ],
  "next": "ee1039307a8a64b038f9b8cdc6f9120ecd9dfe9b"
}
