)]}'
{
  "log": [
    {
      "commit": "1e20932a23578bb1ec59107843574e259b96193f",
      "tree": "844ae54293c4414fc4c232a36d0e4d4939dc35aa",
      "parents": [
        "cfc442b69696b593cb442f09997dcb4cb5748171",
        "c31931088fd6cf953bd0868a2647b6c3928e6c96"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:50:28 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 31 16:49:53 2012 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/ulist.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c11d2c236cc260b36ef644700fbe99bcc7e7da33",
      "tree": "e240721e0b6e5784177ac39bc299db4063b93c72",
      "parents": [
        "442a4f6308e694e0fa6025708bd5e4e424bbf51c"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:09 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:40 2012 -0400"
      },
      "message": "Btrfs: add ioctl to get and reset the device stats\n\nAn ioctl interface is added to get the device statistic counters.\nA second ioctl is added to atomically get and reset these counters.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "9ba1f6e44ed7a1fa52d3f292508bf921b5054172",
      "tree": "2c20508be673a9ebce14d27efa6ee05a04695787",
      "parents": [
        "d1ac6e41d5437385957fd708e285defd0b1a430c"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Fri May 11 18:11:26 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:35 2012 -0400"
      },
      "message": "Btrfs: do not do balance in readonly mode\n\nIn normal cases, we would not be allowed to do balance in RO mode.\nHowever, when we\u0027re using a seeding device and adding another device to sprout,\nthings will change:\n\n$ mkfs.btrfs /dev/sdb7\n$ btrfstune -S 1 /dev/sdb7\n$ mount /dev/sdb7 /mnt/btrfs -o ro\n$ btrfs fi bal /mnt/btrfs   -----------------------\u003e fail.\n$ btrfs dev add /dev/sdb8 /mnt/btrfs\n$ btrfs fi bal /mnt/btrfs   -----------------------\u003e works!\n\nIt should not be designed as an exception, and we\u0027d better add another check for\nmnt flags.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a27202fbe92b12eec895c36644440175de01d7a6",
      "tree": "90e3dfc70f43afe69e1e8f11ad5be08549a0e614",
      "parents": [
        "f07c9a79f06cd33b1c9c2c4eacb60bafa7e3f310"
      ],
      "author": {
        "name": "Jim Meyering",
        "email": "jim@meyering.net",
        "time": "Thu Apr 26 18:36:56 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:31 2012 -0400"
      },
      "message": "Btrfs: NUL-terminate path buffer in DEV_INFO ioctl result\n\nA device with name of length BTRFS_DEVICE_PATH_NAME_MAX or longer\nwould not be NUL-terminated in the DEV_INFO ioctl result buffer.\n\nSigned-off-by: Jim Meyering \u003cmeyering@redhat.com\u003e\n"
    },
    {
      "commit": "2eec6c8102c62c540c637176271cfdb13d828d7b",
      "tree": "35b32d27bf50122b8f89385940fb8c7a4926343b",
      "parents": [
        "0d2450abfa359ff94a2bee64a7daeba68c346c81"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel@quora.org",
        "time": "Thu Apr 26 00:37:14 2012 +0800"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:30 2012 -0400"
      },
      "message": "Fix minor type issues\n\nAddress some minor type issues identified by sparse checker.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel@quora.org\u003e\n"
    },
    {
      "commit": "0c4d2d95d06e920e0c61707e62c7fffc9c57f63a",
      "tree": "5d6fa736c7fea0a0afd60eda8e6e0586df6fb606",
      "parents": [
        "a25c75d5ad04df0a7abd09585231b4021a91a358"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Apr 05 15:03:02 2012 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:27 2012 -0400"
      },
      "message": "Btrfs: use i_version instead of our own sequence\n\nWe\u0027ve been keeping around the inode sequence number in hopes that somebody\nwould use it, but nobody uses it and people actually use i_version which\nserves the same purpose, so use i_version where we used the incore inode\u0027s\nsequence number and that way the sequence is updated properly across the\nboard, and not just in file write.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "5581a51a59a1f5f51ac3d4bacafb738d35e0350b",
      "tree": "d7e291e139d08f2be7870c9da602658df8f51ce8",
      "parents": [
        "976b1908d97bd8cbd024ba7aafaa3fb637ea8e13"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Wed May 16 17:04:52 2012 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Sat May 26 12:17:53 2012 +0200"
      },
      "message": "Btrfs: don\u0027t set for_cow parameter for tree block functions\n\nThree callers of btrfs_free_tree_block or btrfs_alloc_tree_block passed\nparameter for_cow \u003d 1. In fact, these two functions should never mark\ntheir tree modification operations as for_cow, because they can change\nthe number of blocks referenced by a tree.\n\nHence, we remove the extra for_cow parameter from these functions and\nmake them pass a zero down.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "99ba55ad696944b37d5557bc5b4816890854fdb9",
      "tree": "2c8bf9a167f351b89ef86e2133ffec7dfb5d1ce7",
      "parents": [
        "b9688bb8459b67e42327de6420edb405a9188775"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Mon Mar 19 16:17:22 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 18 19:22:35 2012 +0200"
      },
      "message": "Btrfs: fix btrfs_ioctl_dev_info() crash on missing device\n\nWhen a filesystem is mounted with the degraded option, it is\npossible that some of the devices are not there.\nbtrfs_ioctl_dev_info() crashs in this case because the device\nname is a NULL pointer. This ioctl was only used for scrub.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "e1f041e14cfb322f41f41a308bfede00f1b080cd",
      "tree": "8bae36b522a96948be985af03073813e3b0d851f",
      "parents": [
        "66c2689226ac322fbc9acd2e8e418b78dcd52f51"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: update to the right index of defragment\n\nWhen we use autodefrag, we forget to update the index which indicates\nthe last page we\u0027ve dirty.  And we\u0027ll set dirty flags on a same set of\npages again and again.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "66c2689226ac322fbc9acd2e8e418b78dcd52f51",
      "tree": "98da1733c2fc92e00c32c50199d1c85a43c1e6d0",
      "parents": [
        "17ce6ef8d731af5edac8c39e806db4c7e1f6956f"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: do not bother to defrag an extent if it is a big real extent\n\n$ mkfs.btrfs /dev/sdb7\n$ mount /dev/sdb7 /mnt/btrfs/ -oautodefrag\n$ dd if\u003d/dev/zero of\u003d/mnt/btrfs/foobar bs\u003d4k count\u003d10 oflag\u003ddirect 2\u003e/dev/null\n$ filefrag -v /mnt/btrfs/foobar\nFilesystem type is: 9123683e\nFile size of /mnt/btrfs/foobar is 40960 (10 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0       0     3072              10 eof\n/mnt/btrfs/foobar: 1 extent found\n\nNow we have a big real extent [0, 40960), but autodefrag will still defrag it.\n\n$ sync\n$ filefrag -v /mnt/btrfs/foobar\nFilesystem type is: 9123683e\nFile size of /mnt/btrfs/foobar is 40960 (10 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0       0     3082              10 eof\n/mnt/btrfs/foobar: 1 extent found\n\nSo if we already find a big real extent, we\u0027re ok about that, just skip it.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17ce6ef8d731af5edac8c39e806db4c7e1f6956f",
      "tree": "4a54d3c5618efff3deec03fa5d32a42c0a8fc804",
      "parents": [
        "4cb13e5d6ecc47b91b24a35f8fbc2c9f33d075fe"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:45 2012 -0400"
      },
      "message": "Btrfs: add a check to decide if we should defrag the range\n\nIf our file\u0027s layout is as follows:\n| hole | data1 | hole | data2 |\n\nwe do not need to defrag this file, because this file has holes and\ncannot be merged into one extent.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f12bd063285b059cb63315d1424dae1ddd87a64",
      "tree": "d0c9c7be653b3306f9cfb76ba9805f36c9295e37",
      "parents": [
        "ecb8bea87d05fd2d1fc0718e1e4bbf09c7c6045a"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "message": "Btrfs: fix the mismatch of page-\u003emapping\n\ncommit 600a45e1d5e376f679ff9ecc4ce9452710a6d27c\n(Btrfs: fix deadlock on page lock when doing auto-defragment)\nfixes the deadlock on page, but it also introduces another bug.\n\nA page may have been truncated after unlock \u0026 lock.\nSo we need to find it again to get the right one.\n\nAnd since we\u0027ve held i_mutex lock, inode size remains unchanged and\nwe can drop isize overflow checks.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ecb8bea87d05fd2d1fc0718e1e4bbf09c7c6045a",
      "tree": "bb95b921ade128c3d434fd244d150a0d27d47e7f",
      "parents": [
        "15d1ff8111aad85d8b40ee396758990d17a2caac"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 29 09:57:44 2012 -0400"
      },
      "message": "Btrfs: fix race between direct io and autodefrag\n\nThe bug is from running xfstests 209 with autodefrag.\n\nThe race is as follows:\n       t1                       t2(autodefrag)\n   direct IO\n     invalidate pagecache\n     dio(old data)             add_inode_defrag\n     invalidate pagecache\n   endio\n\n   direct IO\n     invalidate pagecache\n                                run_defrag\n                                  readpage(old data)\n                                  set page dirty (old data)\n     dio(new data, rewrite)\n     invalidate pagecache (*)\n     endio\n\nt2(autodefrag) will get old data into pagecache via readpage and set\npagecache dirty.  Meanwhile, invalidate pagecache(*) will fail due to\ndirty flags in pages.  So the old data may be flushed into disk by\nflush thread, which will lead to data loss.\n\nAnd so does the case of user defragment progs.\n\nThe patch fixes this race by holding i_mutex when we readpage and set page dirty.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "98961a7e431735c791dbaaf0337029e219a5db5a",
      "tree": "e045f062c01075e1f88ab758717cbfd7a7ddd4ca",
      "parents": [
        "1c691b330a19a1344df89bcb0f4cacd99e8b289a",
        "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 28 20:33:40 2012 -0400"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into for-linus\n\nConflicts:\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7a3ae2f8c8c8432e65467b7fc84d5deab04061a0",
      "tree": "e93c46eb8def633533fe80032872f71b36fc03b8",
      "parents": [
        "103e976616fe9c2a3e40764c979fa1a592274da2"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 23 17:32:28 2012 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Tue Mar 27 14:51:21 2012 +0200"
      },
      "message": "Btrfs: fix regression in scrub path resolving\n\nIn commit 4692cf58 we introduced new backref walking code for btrfs. This\nassumes we\u0027re searching live roots, which requires a transaction context.\nWhile scrubbing, however, we must not join a transaction because this could\ndeadlock with the commit path. Additionally, what scrub really wants to do\nis resolving a logical address in the commit root it\u0027s currently checking.\n\nThis patch adds support for logical to path resolving on commit roots and\nmakes scrub use that.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "79787eaab46121d4713ed03c8fc63b9ec3eaec76",
      "tree": "ee6b17d0811ee54ab74a03aa4e0bb92769d2f12a",
      "parents": [
        "49b25e0540904be0bf558b84475c69d72e4de66e"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Mon Mar 12 16:03:00 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 11:52:54 2012 +0100"
      },
      "message": "btrfs: replace many BUG_ONs with proper error handling\n\n btrfs currently handles most errors with BUG_ON. This patch is a work-in-\n progress but aims to handle most errors other than internal logic\n errors and ENOMEM more gracefully.\n\n This iteration prevents most crashes but can run into lockups with\n the page lock on occasion when the timing \"works out.\"\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "ce598979be6f83549c90f42ba522a19a33727611",
      "tree": "ee3cb422fb05012b7c5ff52be720a6d68f97de03",
      "parents": [
        "2c536799f1bde905bbacf7af3aa6be3f4de66005"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Jul 26 11:32:23 2011 -0700"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:36 2012 +0100"
      },
      "message": "btrfs: Don\u0027t BUG_ON errors from btrfs_create_subvol_root()\n\nThis is called from only one place - create_subvol() which passes errors\nsafely back out to it\u0027s caller, btrfs_mksubvol where they are handled.\n\nAdditionally, btrfs_create_subvol_root() itself bug\u0027s needlessly from error\nreturn of btrfs_update_inode(). Since create_subvol() was fixed to catch\nerrors we can bubble this one up too.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "d0082371cf086e0ba2bbd0367b2c9920532df24f",
      "tree": "4ae3fb6565f36fd606ab6e4b83d489e66b3b86d7",
      "parents": [
        "143bede527b054a271053f41bfaca2b57baa9408"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:57:19 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:35 2012 +0100"
      },
      "message": "btrfs: drop gfp_t from lock_extent\n\n lock_extent and unlock_extent are always called with GFP_NOFS, drop the\n argument and use GFP_NOFS consistently.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "855a85f704026d5fe7de94fb1b765fe03404507f",
      "tree": "553817c0f7230e104623dc7e8a900bbbcc881d3e",
      "parents": [
        "ee3253241a928f6c5c40960629d7071eb6a4b23c",
        "e77266e4c4be6f9dc91bf688bce015a8babd5fe0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 24 09:02:53 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nQuoth Chris:\n \"This is later than I wanted because I got backed up running through\n  btrfs bugs from the Oracle QA teams.  But they are all bug fixes that\n  we\u0027ve queued and tested since rc1.\n\n  Nothing in particular stands out, this just reflects bug fixing and QA\n  done in parallel by all the btrfs developers.  The most user visible\n  of these is:\n\n    Btrfs: clear the extent uptodate bits during parent transid failures\n\n  Because that helps deal with out of date drives (say an iscsi disk\n  that has gone away and come back).  The old code wasn\u0027t always\n  properly retrying the other mirror for this type of failure.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)\n  Btrfs: fix compiler warnings on 32 bit systems\n  Btrfs: increase the global block reserve estimates\n  Btrfs: clear the extent uptodate bits during parent transid failures\n  Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n  Btrfs: make sure we update latest_bdev\n  Btrfs: improve error handling for btrfs_insert_dir_item callers\n  Btrfs: be less strict on finding next node in clear_extent_bit\n  Btrfs: fix a bug on overcommit stuff\n  Btrfs: kick out redundant stuff in convert_extent_bit\n  Btrfs: skip states when they does not contain bits to clear\n  Btrfs: check return value of lookup_extent_mapping() correctly\n  Btrfs: fix deadlock on page lock when doing auto-defragment\n  Btrfs: fix return value check of extent_io_ops\n  btrfs: honor umask when creating subvol root\n  btrfs: silence warning in raid array setup\n  btrfs: fix structs where bitfields and spinlock/atomic share 8B word\n  btrfs: delalloc for page dirtied out-of-band in fixup worker\n  Btrfs: fix memory leak in load_free_space_cache()\n  btrfs: don\u0027t check DUP chunks twice\n  Btrfs: fix trim 0 bytes after a device delete\n  ...\n"
    },
    {
      "commit": "16780cabb877dbd0c8c5e9ff9bdebd6c5bdd1a7b",
      "tree": "d244896098a1e8dfd23403a335315a4b822c95d3",
      "parents": [
        "a6b0d5c8dbfd428717fc4db4c36757783f391c7b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 20 22:14:55 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Feb 23 10:43:45 2012 -0500"
      },
      "message": "Btrfs: add extra sanity checks on the path names in btrfs_mksubvol\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "600a45e1d5e376f679ff9ecc4ce9452710a6d27c",
      "tree": "c4bf84eee1db132b5ff18700b95da8426a909f2f",
      "parents": [
        "013bd4c336ad0d30e9e41f9cff0dbc1858934e75"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Feb 16 15:01:24 2012 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Feb 16 17:23:16 2012 +0100"
      },
      "message": "Btrfs: fix deadlock on page lock when doing auto-defragment\n\nWhen I ran xfstests circularly on a auto-defragment btrfs, the deadlock\nhappened.\n\nSteps to reproduce:\n[tty0]\n # export MOUNT_OPTIONS\u003d\"-o autodefrag\"\n # export TEST_DEV\u003d\u003cpartition1\u003e\n # export TEST_DIR\u003d\u003cmountpoint1\u003e\n # export SCRATCH_DEV\u003d\u003cpartition2\u003e\n # export SCRATCH_MNT\u003d\u003cmountpoint2\u003e\n # while [ 1 ]\n \u003e do\n \u003e ./check 091 127 263\n \u003e sleep 1\n \u003e done\n[tty1]\n # while [ 1 ]\n \u003e do\n \u003e echo 3 \u003e /proc/sys/vm/drop_caches\n \u003e done\n\nSeveral hours later, the test processes will hang on, and the deadlock will\nhappen on page lock.\n\nThe reason is that:\n  Auto defrag task\t\tFlush thread\t\t\tTest task\n\t\t\t\tbtrfs_writepages()\n\t\t\t\t  add ordered extent\n\t\t\t\t  (including page 1, 2)\n\t\t\t\t  set page 1 writeback\n\t\t\t\t  set page 2 writeback\n\t\t\t\tendio_fn()\n\t\t\t\t  end page 2 writeback\n\t\t\t\t\t\t\t\trelease page 2\nlock page 1\nalloc and lock page 2\npage 2 is not uptodate\n  btrfs_readpage()\n    start ordered extent()\n    btrfs_writepages()\n      try  to lock page 1\n\nso deadlock happens.\n\nFix this bug by unlocking the page which is in writeback, and re-locking it\nafter the writeback end.\n\nSigned-off-by: Miao Xie \u003cmiax@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "67d2433ee7aa631bc3ab14c2af6bbc1d44d13a00",
      "tree": "eb29e1489f9f4a99308e08568328de73fb89fc2e",
      "parents": [
        "1c36ab1a318ab5b3b502e7e4fff3628d1a97861f",
        "9998eb703490589c3e8f1bf09b15203156776edb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 28 17:00:19 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 28 17:00:19 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:\n  Btrfs: fix reservations in btrfs_page_mkwrite\n  Btrfs: advance window_start if we\u0027re using a bitmap\n  btrfs: mask out gfp flags in releasepage\n  Btrfs: fix enospc error caused by wrong checks of the chunk\n  Btrfs: do not defrag a file partially\n  Btrfs: fix warning for 32-bit build of fs/btrfs/check-integrity.c\n  Btrfs: use cluster-\u003ewindow_start when allocating from a cluster bitmap\n  Btrfs: Check for NULL page in extent_range_uptodate\n  btrfs: Fix busyloops in transaction waiting code\n  Btrfs: make sure a bitmap has enough bytes\n  Btrfs: fix uninit warning in backref.c\n"
    },
    {
      "commit": "7ec31b548a17f773ab6289e795ed3a6820e8b56e",
      "tree": "c0c738e7c27e4ac6185f02acd76de64986218906",
      "parents": [
        "0b485143d835c019cddc45f46e4b3873dcc9aa4e"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Jan 26 15:01:12 2012 -0500"
      },
      "message": "Btrfs: do not defrag a file partially\n\nxfstests 218 complains that btrfs defrags a file partially:\n After: 1\n Write backwards sync, but contiguous - should defrag to 1 extent\n Before: 10\n-After: 1\n+After: 2\n\nTo fix this, we need to set max_to_defrag count properly.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d65773b22b749252b2805dcf96bdeb951a9481d8",
      "tree": "1839656e894933267e7466e32ba6ad73b24fa60a",
      "parents": [
        "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
        "f84a8bd60e3ee49eacc9ba824babf149ba3dad7e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:52:51 2012 -0800"
      },
      "message": "Merge branch \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027btrfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  btrfs: take allocation of -\u003etree_root into open_ctree()\n  btrfs: let -\u003es_fs_info point to fs_info, not root...\n  btrfs: consolidate failure exits in btrfs_mount() a bit\n  btrfs: make free_fs_info() call -\u003ekill_sb() unconditional\n  btrfs: merge free_fs_info() calls on fill_super failures\n  btrfs: kill pointless reassignment of -\u003es_fs_info in btrfs_fill_super()\n  btrfs: make open_ctree() return int\n  btrfs: sanitizing -\u003efs_info, part 5\n  btrfs: sanitizing -\u003efs_info, part 4\n  btrfs: sanitizing -\u003efs_info, part 3\n  btrfs: sanitizing -\u003efs_info, part 2\n  btrfs: sanitizing -\u003efs_info, part 1\n  btrfs: fix a deadlock in btrfs_scan_one_device()\n  btrfs: fix mount/umount race\n  btrfs: get -\u003ekill_sb() of its own\n  btrfs: preparation to fixing mount/umount race\n"
    },
    {
      "commit": "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
      "tree": "7bd26fc9a111c6af1601ecd2d1b0ab60da32f3f0",
      "parents": [
        "67175b855bfd6ed95ffeff95532173c07de6432d",
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)\n  Btrfs: use larger system chunks\n  Btrfs: add a delalloc mutex to inodes for delalloc reservations\n  Btrfs: space leak tracepoints\n  Btrfs: protect orphan block rsv with spin_lock\n  Btrfs: add allocator tracepoints\n  Btrfs: don\u0027t call btrfs_throttle in file write\n  Btrfs: release space on error in page_mkwrite\n  Btrfs: fix btrfsck error 400 when truncating a compressed\n  Btrfs: do not use btrfs_end_transaction_throttle everywhere\n  Btrfs: add balance progress reporting\n  Btrfs: allow for resuming restriper after it was paused\n  Btrfs: allow for canceling restriper\n  Btrfs: allow for pausing restriper\n  Btrfs: add skip_balance mount option\n  Btrfs: recover balance on mount\n  Btrfs: save balance parameters to disk\n  Btrfs: soft profile changing mode (aka soft convert)\n  Btrfs: implement online profile changing\n  Btrfs: do not reduce profile in do_chunk_alloc()\n  Btrfs: virtual address space subset filter\n  ...\n\nFix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new\nmnt_drop_write_file() helper.\n"
    },
    {
      "commit": "f248679e86fead40cc78e724c7181d6bec1a2046",
      "tree": "88abeee0b2a87c0f0377509525c92d3c9ec15a15",
      "parents": [
        "8c2a3ca20f6233677ac3222c6506174010eb414f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jan 13 12:09:22 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: add a delalloc mutex to inodes for delalloc reservations\n\nI was using i_mutex for this, but we\u0027re getting bogus lockdep warnings by doing\nthat and theres no real way to get rid of those, so just stop using i_mutex to\nprotect delalloc metadata reservations and use a delalloc mutex instead.  This\nshouldn\u0027t be contended often at all, only if you are writing and mmap writing to\nthe file at the same time.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "9785dbdf265ddc47d5c88267d89a97648c0dc14b",
      "tree": "3a97a48d6f282f9e06c5446beeb886fcd86c4798",
      "parents": [
        "d756bd2d9339447c29bde950910586df8f8941ec",
        "6bf7e080d5bcb0d399ee38ce3dabbfad64448192"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:31 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.jan-o-sch.net/btrfs-unstable into integration\n"
    },
    {
      "commit": "d756bd2d9339447c29bde950910586df8f8941ec",
      "tree": "f96aeb682bcc4fdcf75d080f260c809b9fbc4a1a",
      "parents": [
        "27263e28321db438bc43dc0c0be432ce91526224",
        "b367e47fb3a70f5d24ebd6faf7d42436d485fb2d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:26:17 2012 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://repo.or.cz/linux-btrfs-devel into integration\n\nConflicts:\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "19a39dce3b9bf0244d19a446718ad6f7605ff099",
      "tree": "4834e177b8b64405aa858bfdcfbabd890277102b",
      "parents": [
        "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: add balance progress reporting\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b",
      "tree": "26761c92c8d135aa62702562bae3337ccad9f74d",
      "parents": [
        "a7e99c691af553fc15ac46a51f130b7c59a65f76"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for resuming restriper after it was paused\n\nRecognize BTRFS_BALANCE_RESUME flag passed from userspace.  We use the\nsame heuristics used when recovering balance after a crash to try to\nstart where we left off last time.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a7e99c691af553fc15ac46a51f130b7c59a65f76",
      "tree": "55491f285683951d509819a66e614ac6f12659dd",
      "parents": [
        "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for canceling restriper\n\nImplement an ioctl for canceling restriper.  Currently we wait until\nrelocation of the current block group is finished, in future this can be\ndone by triggering a commit.  Balance item is deleted and no memory\nabout the interrupted balance is kept.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961",
      "tree": "4ef87d05240e90480749c345274a83094caf66f0",
      "parents": [
        "9555c6c180600b40f6e86bd4dc53bf47e06ed663"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for pausing restriper\n\nImplement an ioctl for pausing restriper.  This pauses the relocation,\nbut balance is still considered to be \"in progress\": balance item is\nnot deleted, other volume operations cannot be started, etc.  If paused\nin the middle of profile changing operation we will continue making\nallocations with the target profile.\n\nAdd a hook to close_ctree() to pause restriper and free its data\nstructures on unmount.  (It\u0027s safe to unmount when restriper is in\n\"paused\" state, we will resume with the same parameters on the next\nmount)\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "f43ffb60fd94e98be02780944e182ade6653b916",
      "tree": "50cab47a03c223d0641d8fe62805e71f5cffef1a",
      "parents": [
        "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic infrastructure for selective balancing\n\nThis allows to have a separate set of filters for each chunk type\n(data,meta,sys).  The code however is generic and switch on chunk type\nis only done once.\n\nThis commit also adds a type filter: it allows to balance for example\nmeta and system chunks w/o touching data ones.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc",
      "tree": "22d695a7a461068c773b327e5c89a045ade5d8a3",
      "parents": [
        "10ea00f55a07f8f9536d9112b95108a86f700bab"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic restriper infrastructure\n\nAdd basic restriper infrastructure: extended balancing ioctl and all\nrelated ioctl data structures, add data structure for tracking\nrestriper\u0027s state to fs_info, etc.  The semantics of the old balancing\nioctl are fully preserved.\n\nExplicitly disallow any volume operations when balance is in progress.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "4da6f1a332f6c16b6594c7892f13c31459b9b1c8",
      "tree": "e647af08d851ccb13e89312394c9dd1fdaa785c6",
      "parents": [
        "f062abf089ff705e09bbaa6fa1e2fd7688a0f2ea"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 29 13:39:50 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:39 2012 +0800"
      },
      "message": "Btrfs: reserve metadata space in btrfs_ioctl_setflags()\n\nCheck and reserve space for btrfs_update_inode().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "f062abf089ff705e09bbaa6fa1e2fd7688a0f2ea",
      "tree": "02ed40f0c73ed1d6f8dbdaf5ce725b520036a9b7",
      "parents": [
        "706efc6630c2722602541a6a2fc5900a4e38456a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 29 13:36:45 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 11 10:26:38 2012 +0800"
      },
      "message": "Btrfs: remove BUG_ON()s in btrfs_ioctl_setflags()\n\nWe can recover from errors and return -errno to user space.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "815745cf3e46681241ad8025602ffbf2a452d514",
      "tree": "7902ae81b199b383b5552e71b6d1cd21aff17fdb",
      "parents": [
        "59553edf110e5576d91be9dd5bd53d110e0d0290"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Nov 17 15:40:49 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 19:35:37 2012 -0500"
      },
      "message": "btrfs: let -\u003es_fs_info point to fs_info, not root...\n\nthe latter can be obtained from the former (by looking as -\u003etree_root)\njust as cheaply as we currently are doing the other way round.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4692cf58aa7b81f721c1653d48db99ea41421d58",
      "tree": "0a5bf889142252d91bcc8df33a9c63c18024fe70",
      "parents": [
        "8da6d5815c592b713ecaf4f4f8b631f8359c96c4"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Dec 02 14:56:41 2011 +0100"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jan 05 10:49:43 2012 +0100"
      },
      "message": "Btrfs: new backref walking code\n\nThe old backref iteration code could only safely be used on commit roots.\nBesides this limitation, it had bugs in finding the roots for these\nreferences. This commit replaces large parts of it by btrfs_find_all_roots()\nwhich a) really finds all roots and the correct roots, b) works correctly\nunder heavy file system load, c) considers delayed refs.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "2a79f17e4a641a2f463cb512cb0ec349844a147b",
      "tree": "8801127310d0a3492941bb284e83393844a19685",
      "parents": [
        "8c9379e972e984d11c2b99121847ba9fa7a0c56c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Dec 09 08:06:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: mnt_drop_write_file()\n\nnew helper (wrapper around mnt_drop_write()) to be used in pair with\nmnt_want_write_file().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a561be7100cd610bd2e082f3211c1dfb45835817",
      "tree": "a1016a11df967be6f289a4e8ae29597ba39df17e",
      "parents": [
        "f47ec3f28354795f000c14bf18ed967ec81a3ec3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Nov 23 11:57:51 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:35 2012 -0500"
      },
      "message": "switch a bunch of places to mnt_want_write_file()\n\nit\u0027s both faster (in case when file has been opened for write) and cleaner.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "66d7e7f09f77456fe68683247d77721032a00ee5",
      "tree": "bbf7df3933ed47aa202d60d835864543d25df82d",
      "parents": [
        "c7d22a3c3cdb73d8a0151e2ccc8cf4a48c48310b"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon Sep 12 15:26:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Dec 22 16:22:27 2011 +0100"
      },
      "message": "Btrfs: mark delayed refs as for cow\n\nAdd a for_cow parameter to add_delayed_*_ref and pass the appropriate value\nfrom every call site. The for_cow parameter will later on be used to\ndetermine if a ref will change anything with respect to qgroups.\n\nDelayed refs coming from relocation are always counted as for_cow, as they\ndon\u0027t change subvol quota.\n\nAlso pass in the fs_info for later use.\n\nbtrfs_find_all_roots() will use this as an optimization, as changes that are\nfor_cow will not change anything with respect to which root points to a\ncertain leaf. Thus, we don\u0027t need to add the current sequence number to\nthose delayed refs.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "567a45e917343c952806bb9f5c19aab0139bd519",
      "tree": "b1d6dac31a3a2836d24662139f21bb1ddc2522d3",
      "parents": [
        "e755d9ab387c4c2401dce5b6f435432a829f41cb",
        "e65cbb94e036058128a5dec6398be2fd64cf88ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of http://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into integration\n\nConflicts:\n\tfs/btrfs/inode.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "660d3f6cde552323578b85fc5a09a6742f1fe804",
      "tree": "7273af0b2a6fe7f9be685cb0586534802c807924",
      "parents": [
        "22c44fe65adacd20a174f3f54686509ee94ef7be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 11:18:51 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:22 2011 -0500"
      },
      "message": "Btrfs: fix how we do delalloc reservations and how we free reservations on error\n\nRunning xfstests 269 with some tracing my scripts kept spitting out errors about\nreleasing bytes that we didn\u0027t actually have reserved.  This took me down a huge\nrabbit hole and it turns out the way we deal with reserved_extents is wrong,\nwe need to only be setting it if the reservation succeeds, otherwise the free()\nmethod will come in and unreserve space that isn\u0027t actually reserved yet, which\ncan lead to other warnings and such.  The math was all working out right in the\nend, but it caused all sorts of other issues in addition to making my scripts\nyell and scream and generally make it impossible for me to track down the\noriginal issue I was looking for.  The other problem is with our error handling\nin the reservation code.  There are two cases that we need to deal with\n\n1) We raced with free.  In this case free won\u0027t free anything because csum_bytes\nis modified before we dro the lock in our reservation path, so free rightly\ndoesn\u0027t release any space because the reservation code may be depending on that\nreservation.  However if we fail, we need the reservation side to do the free at\nthat point since that space is no longer in use.  So as it stands the code was\ndoing this fine and it worked out, except in case #2\n\n2) We don\u0027t race with free.  Nobody comes in and changes anything, and our\nreservation fails.  In this case we didn\u0027t reserve anything anyway and we just\nneed to clean up csum_bytes but not free anything.  So we keep track of\ncsum_bytes before we drop the lock and if it hasn\u0027t changed we know we can just\ndecrement csum_bytes and carry on.\n\nBecause of the case where we can race with free()\u0027s since we have to drop our\nspin_lock to do the reservation, I\u0027m going to serialize all reservations with\nthe i_mutex.  We already get this for free in the heavy use paths, truncate and\nfile write all hold the i_mutex, just needed to add it to page_mkwrite and\nvarious ioctl/balance things.  With this patch my space leak scripts no longer\nscream bloody murder.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "306424cc880a0fbbdc99eee1f43d056a301a180f",
      "tree": "7c6b3b851fcd325c65724f3a7875311407998a6d",
      "parents": [
        "f8e9e0b07be0464e12366631da3da73a1a62449c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:37 2011 -0500"
      },
      "message": "Btrfs: fix ctime update of on-disk inode\n\nTo reproduce the bug:\n\n    # touch /mnt/tmp\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:23.412105981 +0800\n    # chattr +i /mnt/tmp\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:43.198105295 +0800\n    # umount /mnt\n    # mount /dev/loop1 /mnt\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:23.412105981 +0800\n\nWe should update ctime of in-memory inode before calling\nbtrfs_update_inode().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ece7d20e8be6730fbb29f4550de6b19b1a3a9387",
      "tree": "7c01770040d8dd86548610679ab629683ec94017",
      "parents": [
        "aa38a711a893accf5b5192f3d705a120deaa81e0"
      ],
      "author": {
        "name": "Mike Fleetwood",
        "email": "mike.fleetwood@googlemail.com",
        "time": "Fri Nov 18 18:55:01 2011 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:04 2011 +0100"
      },
      "message": "Btrfs: Don\u0027t error on resizing FS to same size\n\nIt seems overly harsh to fail a resize of a btrfs file system to the\nsame size when a shrink or grow would succeed.  User app GParted trips\nover this error.  Allow it by bypassing the shrink or grow operation.\n\nSigned-off-by: Mike Fleetwood \u003cmike.fleetwood@googlemail.com\u003e\n"
    },
    {
      "commit": "5bb1468238e20b15921909e9f9601e945f03bac7",
      "tree": "fdd730e4e974ce07dfc6f40be47f512178f3ff5c",
      "parents": [
        "fadc0d8be4dfca80f6c568bc5874931893c6709b"
      ],
      "author": {
        "name": "Arnd Hannemann",
        "email": "arnd@arndnet.de",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:16 2011 -0500"
      },
      "message": "Btrfs: prefix resize related printks with btrfs:\n\nFor the user it is confusing to find something like:\n[10197.627710] new size for /dev/mapper/vg0-usr_share is 3221225472\nin kernel log, because it doesn\u0027t point directly to btrfs.\n\nThis patch prefixes those messages with \"btrfs:\" like other btrfs\nrelated printks.\n\nSigned-off-by: Arnd Hannemann \u003carnd@arndnet.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "745c4d8e160afaf6c75e887c27ea4b75c8142b26",
      "tree": "b1e5b3725654f4119f06346cef3a1c94d34accf8",
      "parents": [
        "387125fc722a8ed432066b85a552917343bdafca"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun Nov 20 07:31:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:13 2011 -0500"
      },
      "message": "btrfs: Fix up 32/64-bit compatibility for new ioctls\n\n This patch casts to unsigned long before casting to a pointer and fixes\n the following warnings:\nfs/btrfs/extent_io.c:2289:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2933:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2937:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/ioctl.c:3020:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/scrub.c:275:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/backref.c:686:27: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "740c3d226cbba6cd6a32adfb66809c94938f3e57",
      "tree": "375a5d2ee3bdc66f29e69e99c3691c3200407820",
      "parents": [
        "806468f8bf76a3cb2b626dd282946a6c9c0a50f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 02 15:48:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:08:49 2011 -0500"
      },
      "message": "Btrfs: fix the new inspection ioctls for 32 bit compat\n\nThe new ioctls to follow backrefs are not clean for 32/64 bit\ncompat.  This reworks them for u64s everywhere.  They are brand new, so\nthere are no problems with changing the interface now.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "a81d3b1ba2f5faae28ba7a092c7598673fa02ac2",
      "tree": "8301fefcd9f3d45be9d0030456a86bca5b9ff061",
      "parents": [
        "afd582ac8f10382002a72b4d17d9c2db328ed8b8",
        "f9d9ef62cd3ecbd6cbb7957a253c1e81f69d5586"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:58 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:58 2011 +0200"
      },
      "message": "Merge branch \u0027hotfixes-20111024/josef/for-chris\u0027 into btrfs-next-stable\n"
    },
    {
      "commit": "afd582ac8f10382002a72b4d17d9c2db328ed8b8",
      "tree": "91246c1296c06cc0d5add8d10452e7fb110ed920",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96",
        "016fc6a63e465d5b94e4028f6d05d9703e195428"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:57 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:57 2011 +0200"
      },
      "message": "Merge remote-tracking branch \u0027remotes/josef/for-chris\u0027 into btrfs-next-stable\n"
    },
    {
      "commit": "f4c697e6406da5dd445eda8d923c53e1138793dd",
      "tree": "a572fcd0b9db22177d74c8fd3276ccb6a05c028c",
      "parents": [
        "008873eafbc77deb1702aedece33756c58486c6a"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Sep 05 16:34:54 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:40 2011 +0200"
      },
      "message": "btrfs: return EINVAL if start \u003e total_bytes in fitrim ioctl\n\nWe should retirn EINVAL if the start is beyond the end of the file\nsystem in the btrfs_ioctl_fitrim(). Fix that by adding the appropriate\ncheck for it.\n\nAlso in the btrfs_trim_fs() it is possible that len+start might overflow\nif big values are passed. Fix it by decrementing the len so that start+len\nis equal to the file system size in the worst case.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\n"
    },
    {
      "commit": "008873eafbc77deb1702aedece33756c58486c6a",
      "tree": "2b578bfdb47f8351f33d8ebf29714d4f2e4b15f6",
      "parents": [
        "83c8c9bde0add721f7509aa446455183b040b931"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:57:07 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:39 2011 +0200"
      },
      "message": "Btrfs: honor extent thresh during defragmentation\n\nWe won\u0027t defrag an extent, if it\u0027s bigger than the threshold we\nspecified and there\u0027s no small extent before it, but actually\nthe code doesn\u0027t work this way.\n\nThere are three bugs:\n\n- When should_defrag_range() decides we should keep on defragmenting\n  an extent, last_len is not incremented. (old bug)\n\n- The length that passes to should_defrag_range() is not the length\n  we\u0027re going to defrag. (new bug)\n\n- We always defrag 256K bytes data, and a big extent can be part of\n  this range. (new bug)\n\nFor a file with 4 extents:\n\n        | 4K | 4K | 256K | 256K |\n\nThe result of defrag with (the default) 256K extent thresh should be:\n\n        | 264K | 256K |\n\nbut with those bugs, we\u0027ll get:\n\n        | 520K |\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "5ca496604b5975d371bb669ee6c2394bcbea818f",
      "tree": "6a99818b0c54b71c706206bf8981e807e2b0a99b",
      "parents": [
        "151a31b25e5c941bdd9fdefed650effca223c716"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:56:55 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:37 2011 +0200"
      },
      "message": "Btrfs: fix wrong max_to_defrag in btrfs_defrag_file()\n\nIt\u0027s off-by-one, and thus we may skip the last page while defragmenting.\n\nAn example case:\n\n  # create /mnt/file with 2 4K file extents\n  # btrfs fi defrag /mnt/file\n  # sync\n  # filefrag /mnt/file\n  /mnt/file: 2 extents found\n\nSo it\u0027s not defragmented.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "151a31b25e5c941bdd9fdefed650effca223c716",
      "tree": "60c0888c247601fad2b550885c5b430f1fbf02e0",
      "parents": [
        "cbcc83265d929ac71553c1b5dafdb830171af947"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:56:39 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:35 2011 +0200"
      },
      "message": "Btrfs: use i_size_read() in btrfs_defrag_file()\n\nDon\u0027t use inode-\u003ei_size directly, since we\u0027re not holding i_mutex.\n\nThis also fixes another bug, that i_size can change after it\u0027s checked\nagainst 0 and then (i_size - 1) can be negative.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "cbcc83265d929ac71553c1b5dafdb830171af947",
      "tree": "4628b3eaf8e6d20681814d23a15ba174ae69ccb9",
      "parents": [
        "60ccf82f5b6e26e10d41783464ca469c070c7d49"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:56:25 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:34 2011 +0200"
      },
      "message": "Btrfs: fix defragmentation regression\n\nThere\u0027s an off-by-one bug:\n\n  # create a file with lots of 4K file extents\n  # btrfs fi defrag /mnt/file\n  # sync\n  # filefrag -v /mnt/file\n  Filesystem type is: 9123683e\n  File size of /mnt/file is 1228800 (300 blocks, blocksize 4096)\n   ext logical physical expected length flags\n     0       0     3372              64\n     1      64     3136     3435      1\n     2      65     3436     3136     64\n     3     129     3201     3499      1\n     4     130     3500     3201     64\n     5     194     3266     3563      1\n     6     195     3564     3266     64\n     7     259     3331     3627      1\n     8     260     3628     3331     40 eof\n\nAfter this patch:\n\n  ...\n  # filefrag -v /mnt/file\n  Filesystem type is: 9123683e\n  File size of /mnt/file is 1228800 (300 blocks, blocksize 4096)\n   ext logical physical expected length flags\n     0       0     3372             300 eof\n  /mnt/file: 1 extent found\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "60ccf82f5b6e26e10d41783464ca469c070c7d49",
      "tree": "b99794e4dc34d6c9f4e51e7ec4def4946055b9c5",
      "parents": [
        "84850e8d8a5ec7b9d3c47d224e9a10c9da52ff1b"
      ],
      "author": {
        "name": "Diego Calleja",
        "email": "diegocg@gmail.com",
        "time": "Thu Sep 01 16:33:57 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:33 2011 +0200"
      },
      "message": "btrfs: fix memory leak in btrfs_defrag_file\n\nkmemleak found this:\nunreferenced object 0xffff8801b64af968 (size 512):\n  comm \"btrfs-cleaner\", pid 3317, jiffies 4306810886 (age 903.272s)\n  hex dump (first 32 bytes):\n    00 82 01 07 00 ea ff ff c0 83 01 07 00 ea ff ff  ................\n    80 82 01 07 00 ea ff ff c0 87 01 07 00 ea ff ff  ................\n  backtrace:\n    [\u003cffffffff816875cc\u003e] kmemleak_alloc+0x5c/0xc0\n    [\u003cffffffff8114aec3\u003e] kmem_cache_alloc_trace+0x163/0x240\n    [\u003cffffffff8127a290\u003e] btrfs_defrag_file+0xf0/0xb20\n    [\u003cffffffff8125d9a5\u003e] btrfs_run_defrag_inodes+0x165/0x210\n    [\u003cffffffff812479d7\u003e] cleaner_kthread+0x177/0x190\n    [\u003cffffffff81075c7d\u003e] kthread+0x8d/0xa0\n    [\u003cffffffff816af5f4\u003e] kernel_thread_helper+0x4/0x10\n    [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\n\"pages\" is not always freed. Fix it removing the unnecesary additional return.\n\nSigned-off-by: Diego Calleja \u003cdiegocg@gmail.com\u003e\n"
    },
    {
      "commit": "e27425d614d68daa08f60735982a7c3a0230e855",
      "tree": "7f06f5576552498dd902860d77564436a2ef1606",
      "parents": [
        "2bf64758fd6290797a5ce97d4b9c698a4ed1cbad"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Sep 27 11:01:30 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:50 2011 -0400"
      },
      "message": "Btrfs: only inherit btrfs specific flags when creating files\n\nXfstests 79 was failing because we were inheriting the S_APPEND flag when we\nweren\u0027t supposed to.  There isn\u0027t any specific documentation on this so I\u0027m\ntaking the test as the standard of how things work, and having S_APPEND set on a\ndirectory doesn\u0027t mean that S_APPEND gets inherited by its children according to\nthis test.  So only inherit btrfs specific things.  This will let us set\ncompress/nocompress on specific directories and everything in the directories\nwill inherit this flag, same with nodatacow.  With this patch test 79 passes.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3b16a4e3c355ee3c790473decfcf83d4faeb8ce0",
      "tree": "5c3dad941468cf6952623cc18d6b1e682ee3f264",
      "parents": [
        "455757c322cc0a0f2a692c5625dd88aaf6a7b889"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Sep 21 15:05:58 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:45 2011 -0400"
      },
      "message": "Btrfs: use the inode\u0027s mapping mask for allocating pages\n\nJohannes pointed out we were allocating only kernel pages for doing writes,\nwhich is kind of a big deal if you are on 32bit and have more than a gig of ram.\nSo fix our allocations to use the mapping\u0027s gfp but still clear __GFP_FS so we\ndon\u0027t re-enter.  Thanks,\n\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b2f9452bd5234d573898bbda52a410b154f8f510",
      "tree": "b2599fdd3247befb52f9b5c64b99aed6f6db195e",
      "parents": [
        "65112dccf8a113737684366349d7f9ec373ddc47",
        "f7f43cc84152e53b5687cd0eb8823310ba065524"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 13 18:20:40 2011 +1200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 13 18:20:40 2011 +1200"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 of git://github.com/chrismason/linux\n\n* \u0027btrfs-3.0\u0027 of git://github.com/chrismason/linux:\n  Btrfs: make sure not to defrag extents past i_size\n  Btrfs: fix recursive auto-defrag\n"
    },
    {
      "commit": "f7f43cc84152e53b5687cd0eb8823310ba065524",
      "tree": "2ae66461455a750baa970d02589cb393d27ffbd1",
      "parents": [
        "2a0f7f5769992bae5b3f97157fd80b2b943be485"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 11 11:41:40 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 11 11:45:55 2011 -0400"
      },
      "message": "Btrfs: make sure not to defrag extents past i_size\n\nThe btrfs file defrag code will loop through the extents and\nforce COW on them.  But there is a concurrent truncate in the middle of\nthe defrag, it might end up defragging the same range over and over\nagain.\n\nThe problem is that writepage won\u0027t go through and do anything on pages\npast i_size, so the cow won\u0027t happen, so the file will appear to still\nbe fragmented.  defrag will end up hitting the same extents again and\nagain.\n\nIn the worst case, the truncate can actually live lock with the defrag\nbecause the defrag keeps creating new ordered extents which the truncate\ncode keeps waiting on.\n\nThe fix here is to make defrag check for i_size inside the main loop,\ninstead of just once before the looping starts.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a0f7f5769992bae5b3f97157fd80b2b943be485",
      "tree": "ee19a5470211f13d1e53a311cb0d9e2ccc2988fc",
      "parents": [
        "b6316429af7f365f307dfd2b6a7a42f2563aef19"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 10 15:43:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 10 15:43:34 2011 -0400"
      },
      "message": "Btrfs: fix recursive auto-defrag\n\nFollow those steps:\n\n  # mount -o autodefrag /dev/sda7 /mnt\n  # dd if\u003d/dev/urandom of\u003d/mnt/tmp bs\u003d200K count\u003d1\n  # sync\n  # dd if\u003d/dev/urandom of\u003d/mnt/tmp bs\u003d8K count\u003d1 conv\u003dnotrunc\n\nand then it\u0027ll go into a loop: writeback -\u003e defrag -\u003e writeback ...\n\nIt\u0027s because writeback writes [8K, 200K] and then writes [0, 8K].\n\nI tried to make writeback know if the pages are dirtied by defrag,\nbut the patch was a bit intrusive. Here I simply set writeback_index\nwhen we defrag a file.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d7728c960dccf775b92f2c4139f1216275a45c44",
      "tree": "76d8ea34fe47a1557f0cf5e558aa3cb525f39c70",
      "parents": [
        "0ef8e45158f97dde4801b535e25f70f7caf01a27"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jul 07 16:48:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs: new ioctls to do logical-\u003einode and inode-\u003epath resolving\n\nthese ioctls make use of the new functions initially added for scrub. they\nreturn all inodes belonging to a logical address (BTRFS_IOC_LOGICAL_INO) and\nall paths belonging to an inode (BTRFS_IOC_INO_PATHS).\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "0a7a0519d1789f3a222849421dbe91b6bddb88f5",
      "tree": "d9fee1dae1627f24de73bf6555030b6285c7c73a",
      "parents": [
        "a66e7cc626f42de6c745963fe0d807518fa49d39",
        "b6f3409b2197e8fcedb43e6600e37b7cfbe0715b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 20 14:49:29 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 20 14:49:29 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "b6f3409b2197e8fcedb43e6600e37b7cfbe0715b",
      "tree": "f4001140db592992982a323bc18553cb9d7c5682",
      "parents": [
        "dde820fbf7176b64daddc1856597d9c61dac19e2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 20 14:48:51 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 20 14:48:51 2011 -0400"
      },
      "message": "Btrfs: reserve sufficient space for ioctl clone\n\nFix a crash/BUG_ON in the clone ioctl due to insufficient reservation. We\nneed to reserve space for:\n\n - adjusting the old extent (possibly splitting it)\n - adding the new extent\n - updating the inode\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2cf4ce7c2a07782c3f4d899b380a78522bca3238",
      "tree": "46ef48fd4ee47753d6539b65c8a90a2f64e9f8a5",
      "parents": [
        "b6fd41e29dea9c6753b1843a77e50433e6123bcb",
        "dde820fbf7176b64daddc1856597d9c61dac19e2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:31:44 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:31:44 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "dde820fbf7176b64daddc1856597d9c61dac19e2",
      "tree": "4a991cc02d9903dd2c4d017686bf4a549478e327",
      "parents": [
        "0e7b824c4ef9f5bcf5e48cdce164a7b349dde969"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "message": "Btrfs: don\u0027t change inode flag of the dest clone file\n\nThe dst file will have the same inode flags with dst file after\nfile clone, and I think it\u0027s unexpected.\n\nFor example, the dst file will suddenly become immutable after\ngetting some share of data with src file, if the src is immutable.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0e7b824c4ef9f5bcf5e48cdce164a7b349dde969",
      "tree": "d2f11b5f8ddde4bda00798a09b5e2233766f3874",
      "parents": [
        "71ef07861080418d125dcf454af41baafa409a2c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "message": "Btrfs: don\u0027t make a file partly checksummed through file clone\n\nTo reproduce the bug:\n\n  # mount /dev/sda7 /mnt\n  # dd if\u003d/dev/zero of\u003d/mnt/src bs\u003d4K count\u003d1\n  # umount /mnt\n\n  # mount -o nodatasum /dev/sda7 /mnt\n  # dd if\u003d/dev/zero of\u003d/mnt/dst bs\u003d4K count\u003d1\n  # clone_range -s 4K -l 4K /mnt/src /mnt/dst\n\n  # echo 3 \u003e /proc/sys/vm/drop_caches\n  # cat /mnt/dst\n  # dmesg\n  ...\n  btrfs no csum found for inode 258 start 0\n  btrfs csum failed ino 258 off 0 csum 2566472073 private 0\n\nIt\u0027s because part of the file is checksummed and the other part is not,\nand then btrfs will complain checksum is not found when we read the file.\n\nDisallow file clone if src and dst file have different checksum flag,\nso we ensure a file is completely checksummed or unchecksummed.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "71ef07861080418d125dcf454af41baafa409a2c",
      "tree": "9f2c706625a67a5164f774805eb8aaa32ea2410b",
      "parents": [
        "3765fefaee2da83f10829fa64a74e6b7360350cb"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "message": "Btrfs: fix pages truncation in btrfs_ioctl_clone()\n\nIt\u0027s a bug in commit f81c9cdc567cd3160ff9e64868d9a1a7ee226480\n(Btrfs: truncate pages from clone ioctl target range)\n\nWe should pass the dest range to the truncate function, but not the\nsrc range.\n\nAlso move the function before locking extent state.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b001b2edaead6fd906b1f87967ae05f082189c4",
      "tree": "2df377b4b08946af496941e9d18a48e9a100af6b",
      "parents": [
        "5dfcc87fd79dfb96ed155b524337dbd0da4f5993",
        "d525e8ab022cb000e6e31a515ba8c3cf0d9c6130"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://github.com/chrismason/linux\n\n* \u0027for-linus\u0027 of git://github.com/chrismason/linux:\n  Btrfs: add dummy extent if dst offset excceeds file end in\n  Btrfs: calc file extent num_bytes correctly in file clone\n  btrfs: xattr: fix attribute removal\n  Btrfs: fix wrong nbytes information of the inode\n  Btrfs: fix the file extent gap when doing direct IO\n  Btrfs: fix unclosed transaction handle in btrfs_cont_expand\n  Btrfs: fix misuse of trans block rsv\n  Btrfs: reset to appropriate block rsv after orphan operations\n  Btrfs: skip locking if searching the commit root in csum lookup\n  btrfs: fix warning in iput for bad-inode\n  Btrfs: fix an oops when deleting snapshots\n"
    },
    {
      "commit": "d525e8ab022cb000e6e31a515ba8c3cf0d9c6130",
      "tree": "afaa93134ca050e1169ed8fe68442b4522d9112e",
      "parents": [
        "d72c0842ff0e71342857723bb65f35b71f57b264"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "message": "Btrfs: add dummy extent if dst offset excceeds file end in\n\nYou can see there\u0027s no file extent with range [0, 4096]. Check this by\nbtrfsck:\n\n # btrfsck /dev/sda7\n root 5 inode 258 errors 100\n ...\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d72c0842ff0e71342857723bb65f35b71f57b264",
      "tree": "ab0e5037f19fd279fb57b3b653a53d5c92f32e73",
      "parents": [
        "4815053aba7f2304055745df820cd74a39fdaab2"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "message": "Btrfs: calc file extent num_bytes correctly in file clone\n\nnum_bytes should be 4096 not 12288.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "81d86e1b70961f4816f961875e0c706b0954acad",
      "tree": "ac69ce2e8d174260770d1a84d7d8fe910939c923",
      "parents": [
        "9a4327ca1f45f82edad7dc0a4e52ce9316e0950c",
        "f1e490a7ebe41e06324abbbcd86005b0af02a375"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:38:03 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:38:03 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "f81c9cdc567cd3160ff9e64868d9a1a7ee226480",
      "tree": "d4812f9328ea0f5945c42a6b694bdcdb7bdbd707",
      "parents": [
        "0e588859618be54ec100373f1b86296271ce5307"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 10 18:04:04 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 16 21:09:31 2011 -0400"
      },
      "message": "Btrfs: truncate pages from clone ioctl target range\n\nWe need to truncate page cache pages for the clone ioctl target range or\nelse we\u0027ll confuse ourselves to no end.  If the old data was cached, we\nused to still see it (until remount).  If the page was partially updated\nwe used to get a mix of old and new data.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed8f37370d83e695c0a4fa5d5fc7a83ecb947526",
      "tree": "2e57247c609a495b31892b2d05ea52e35556ab60",
      "parents": [
        "a6b11f53388973d99c4a357c22b19753b424e73c",
        "0d10ee2e6deb5c8409ae65b970846344897d5e4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (31 commits)\n  Btrfs: don\u0027t call writepages from within write_full_page\n  Btrfs: Remove unused variable \u0027last_index\u0027 in file.c\n  Btrfs: clean up for find_first_extent_bit()\n  Btrfs: clean up for wait_extent_bit()\n  Btrfs: clean up for insert_state()\n  Btrfs: remove unused members from struct extent_state\n  Btrfs: clean up code for merging extent maps\n  Btrfs: clean up code for extent_map lookup\n  Btrfs: clean up search_extent_mapping()\n  Btrfs: remove redundant code for dir item lookup\n  Btrfs: make acl functions really no-op if acl is not enabled\n  Btrfs: remove remaining ref-cache code\n  Btrfs: remove a BUG_ON() in btrfs_commit_transaction()\n  Btrfs: use wait_event()\n  Btrfs: check the nodatasum flag when writing compressed files\n  Btrfs: copy string correctly in INO_LOOKUP ioctl\n  Btrfs: don\u0027t print the leaf if we had an error\n  btrfs: make btrfs_set_root_node void\n  Btrfs: fix oops while writing data to SSD partitions\n  Btrfs: Protect the readonly flag of block group\n  ...\n\nFix up trivial conflicts (due to acl and writeback cleanups) in\n - fs/btrfs/acl.c\n - fs/btrfs/ctree.h\n - fs/btrfs/extent_io.c\n"
    },
    {
      "commit": "77906a5075a4eb767026c2e07b1a412d08aea5be",
      "tree": "0d7744a53a88c0e657ba727cd69e9b694d034772",
      "parents": [
        "b783e62d9620445d1ca3de76badf0468cdd329ba"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:16:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:45 2011 -0400"
      },
      "message": "Btrfs: copy string correctly in INO_LOOKUP ioctl\n\nMemory areas [ptr, ptr+total_len] and [name, name+total_len]\nmay overlap, so it\u0027s wrong to use memcpy().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "22712200e175e0df5c7f9edfe6c6bf5c94c23b83",
      "tree": "a3e332aab7f5a953ff4f12e67af2a0e5f32f5be5",
      "parents": [
        "597a67e0ba758e3d2239c81fbb648c6e69ec30a2",
        "ff95acb6733d41a8d45feb0e18b96df25e610e78"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: make sure reserve_metadata_bytes doesn\u0027t leak out strange errors\n  Btrfs: use the commit_root for reading free_space_inode crcs\n  Btrfs: reduce extent_state lock contention for metadata\n  Btrfs: remove lockdep magic from btrfs_next_leaf\n  Btrfs: make a lockdep class for each root\n  Btrfs: switch the btrfs tree locks to reader/writer\n  Btrfs: fix deadlock when throttling transactions\n  Btrfs: stop using highmem for extent_buffers\n  Btrfs: fix BUG_ON() caused by ENOSPC when relocating space\n  Btrfs: tag pages for writeback in sync\n  Btrfs: fix enospc problems with delalloc\n  Btrfs: don\u0027t flush delalloc arbitrarily\n  Btrfs: use find_or_create_page instead of grab_cache_page\n  Btrfs: use a worker thread to do caching\n  Btrfs: fix how we merge extent states and deal with cached states\n  Btrfs: use the normal checksumming infrastructure for free space cache\n  Btrfs: serialize flushers in reserve_metadata_bytes\n  Btrfs: do transaction space reservation before joining the transaction\n  Btrfs: try to only do one btrfs_search_slot in do_setxattr\n"
    },
    {
      "commit": "9e0baf60dea69f31ac3b1adeb35b03b02a53e8e1",
      "tree": "0fb899e1fa78b599d22389ca3befc8ab51ff5049",
      "parents": [
        "a5991428064e98c7367fe1c1686ea6a23fb6a4b3"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 15 15:16:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:44 2011 -0400"
      },
      "message": "Btrfs: fix enospc problems with delalloc\n\nSo I had this brilliant idea to use atomic counters for outstanding and reserved\nextents, but this turned out to be a bad idea.  Consider this where we have 1\noutstanding extent and 1 reserved extent\n\nReserver\t\t\t\tReleaser\n\t\t\t\t\tatomic_dec(outstanding) now 0\natomic_read(outstanding)+1 get 1\natomic_read(reserved) get 1\ndon\u0027t actually reserve anything because\nthey are the same\n\t\t\t\t\tatomic_cmpxchg(reserved, 1, 0)\natomic_inc(outstanding)\natomic_add(0, reserved)\n\t\t\t\t\tfree reserved space for 1 extent\n\nThen the reserver now has no actual space reserved for it, and when it goes to\nfinish the ordered IO it won\u0027t have enough space to do it\u0027s allocation and you\nget those lovely warnings.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a94733d0bc630edaedc6ca156752dd5a7cb82521",
      "tree": "3f0bd508aa1ce5894e43df45bb73031a380ed8f5",
      "parents": [
        "bab39bf998133510f2dad08158006197ec0dabea"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 10:47:06 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:43 2011 -0400"
      },
      "message": "Btrfs: use find_or_create_page instead of grab_cache_page\n\ngrab_cache_page will use mapping_gfp_mask(), which for all inodes is set to\nGFP_HIGHUSER_MOVABLE.  So instead use find_or_create_page in all cases where we\nneed GFP_NOFS so we don\u0027t deadlock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2fbe8c8ad176db69dfc682b4abb721c8fc19c3fd",
      "tree": "f473a370543927ec2ebf1a462d165fc08c1515d3",
      "parents": [
        "02c24a82187d5a628c68edfe71ae60dc135cd178"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 21:38:06 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:00 2011 -0400"
      },
      "message": "get rid of useless dget_parent() in fs/btrfs/ioctl.c\n\nboth callers there have dentry-\u003ed_parent stabilized by the fact that\ntheir caller had obtained dentry from lookup_one_len() and had not\ndropped -\u003ei_mutex on parent since then.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8351583e3f6e430ce8f71913909a96ad5cc6a2f6",
      "tree": "f345f40f94d12ffe090735f19aebc96c72be44bd",
      "parents": [
        "71d7aed014457147e8f71a843d5fbf03235e4a85"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 14 15:16:14 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 15 13:24:46 2011 -0400"
      },
      "message": "Btrfs: protect the pending_snapshots list with trans_lock\n\nCurrently there is nothing protecting the pending_snapshots list on the\ntransaction.  We only hold the directory mutex that we are snapshotting and a\nread lock on the subvol_sem, so we could race with somebody else creating a\nsnapshot in a different directory and end up with list corruption.  So protect\nthis list with the trans_lock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "027ed2f0044e95a97ed34db2d55a9ca95ba84385",
      "tree": "7bcdb6d542e5adbbe8cfd59c9ddc36be868f1238",
      "parents": [
        "9eb9104c665aae2401a1723c044669eb10240072"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jun 08 08:27:56 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 18:57:10 2011 -0400"
      },
      "message": "Btrfs: avoid stack bloat in btrfs_ioctl_fs_info()\n\nThe size of struct btrfs_ioctl_fs_info_args is as big as 1KB, so\ndon\u0027t declare the variable on stack.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a4689d2bd3b00dcf5c4320f06e0ab88810fbff9c",
      "tree": "295bcdb0fdbe5a4cda80eb886694efd45e276699",
      "parents": [
        "d132a538d258f8f52fd0cd8b5017755f4e915386"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 17:08:14 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:46 2011 -0400"
      },
      "message": "btrfs: use btrfs_ino to access inode number\n\ncommit 4cb5300bc (\"Btrfs: add mount -o auto_defrag\") accesses inode\nnumber directly while it should use the helper with the new inode\nnumber allocator.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff5714cca971848963b87d6b477c16ca8abbaa54",
      "tree": "17ee34b9b5e00804df4059503f82f6f1d94383a9",
      "parents": [
        "174ba50915b08dcfd07c8b5fb795b46a165fa09a",
        "d90c732122a1f6d0efe388a8a204f67f144b2eb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of\ngit://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into for-linus\n\nConflicts:\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4cb5300bc839b8a943eb19c9f27f25470e22d0ca",
      "tree": "ac0f2fb481c7aa6af08a624d276fa6d580c94c9b",
      "parents": [
        "d6c0cb379c5198487e4ac124728cbb2346d63b1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 24 15:35:30 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:15 2011 -0400"
      },
      "message": "Btrfs: add mount -o auto_defrag\n\nThis will detect small random writes into files and\nqueue the up for an auto defrag process.  It isn\u0027t well suited to\ndatabase workloads yet, but works for smaller files such as rpm, sqlite\nor bdb databases.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d6c0cb379c5198487e4ac124728cbb2346d63b1f",
      "tree": "167a97ac58c7a2fbf7c4e94b6abbfe1e03af014a",
      "parents": [
        "8e531cdfeb75269c6c5aae33651cca39707848da",
        "1f78160ce1b1b8e657e2248118c4d91f881763f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups_and_fixes\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/tree-log.c\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f78160ce1b1b8e657e2248118c4d91f881763f0",
      "tree": "98c5496a9ab3e77e4cd682c0487f4c0127198396",
      "parents": [
        "46224705656633466ca7dc71d81b3c0abc76cae4"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:09:16 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:43 2011 -0400"
      },
      "message": "Btrfs: using rcu lock in the reader side of devices list\n\nfs_devices-\u003edevices is only updated on remove and add device paths, so we can\nuse rcu to protect it in the reader side\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e2156867159ae7b3bc38ef1c26ea0ee30a895ef8",
      "tree": "d949884cdaf5ebeb8d9ba14ec0284c9ece437164",
      "parents": [
        "0956c798ef8dbe0fc215870eb68bd2d8e789f86a"
      ],
      "author": {
        "name": "Hugo Mills",
        "email": "hugo@carfax.org.uk",
        "time": "Sat May 14 17:43:41 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:05:39 2011 -0400"
      },
      "message": "btrfs: Ensure the tree search ioctl returns the right number of records\n\nBtrfs\u0027s tree search ioctl has a field to indicate that no more than a\ngiven number of records should be returned. The ioctl doesn\u0027t honour\nthis, as the tested value is not incremented until the end of the\ncopy_to_sk function. This patch removes an unnecessary local variable,\nand updates the num_found counter as each key is found in the tree.\n\nSigned-off-by: Hugo Mills \u003chugo@carfax.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d82a6f1d7e8b61ed5996334d0db66651bb43641d",
      "tree": "5738ec75f7679bdc1b97aecbc5cad3464cc65541",
      "parents": [
        "7e2355ba1a11649f0b212a29fdb9f47476f1248e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 11 15:26:06 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:12 2011 -0400"
      },
      "message": "Btrfs: kill BTRFS_I(inode)-\u003eblock_group\n\nOriginally this was going to be used as a way to give hints to the allocator,\nbut frankly we can get much better hints elsewhere and it\u0027s not even used at all\nfor anything usefull.  In addition to be completely useless, when we initialize\nan inode we try and find a freeish block group to set as the inodes block group,\nand with a completely full 40gb fs this takes _forever_, so I imagine with say\n1tb fs this is just unbearable.  So just axe the thing altoghether, we don\u0027t\nneed it and it saves us 8 bytes in the inode and saves us 500 microseconds per\ninode lookup in my testcase.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a4abeea41adfa3c143c289045f4625dfaeba2212",
      "tree": "792e2a398d8ba77447ba3f9f2c4266a1ce2f611c",
      "parents": [
        "2a1eb4614d984d5cd4c928784e9afcf5c07f93be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 11 17:25:13 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:57 2011 -0400"
      },
      "message": "Btrfs: kill trans_mutex\n\nWe use trans_mutex for lots of things, here\u0027s a basic list\n\n1) To serialize trans_handles joining the currently running transaction\n2) To make sure that no new trans handles are started while we are committing\n3) To protect the dead_roots list and the transaction lists\n\nReally the serializing trans_handles joining is not too hard, and can really get\nbogged down in acquiring a reference to the transaction.  So replace the\ntrans_mutex with a trans_lock spinlock and use it to do the following\n\n1) Protect fs_info-\u003erunning_transaction.  All trans handles have to do is check\nthis, and then take a reference of the transaction and keep on going.\n2) Protect the fs_info-\u003etrans_list.  This doesn\u0027t get used too much, basically\nit just holds the current transactions, which will usually just be the currently\ncommitting transaction and the currently running transaction at most.\n3) Protect the dead roots list.  This is only ever processed by splicing the\nlist so this is relatively simple.\n4) Protect the fs_info-\u003ereloc_ctl stuff.  This is very lightweight and was using\nthe trans_mutex before, so this is a pretty straightforward change.\n5) Protect fs_info-\u003eno_trans_join.  Because we don\u0027t hold the trans_lock over\nthe entirety of the commit we need to have a way to block new people from\ncreating a new transaction while we\u0027re doing our work.  So we set no_trans_join\nand in join_transaction we test to see if that is set, and if it is we do a\nwait_on_commit.\n6) Make the transaction use count atomic so we don\u0027t need to take locks to\nmodify it when we\u0027re dropping references.\n7) Add a commit_lock to the transaction to make sure multiple people trying to\ncommit the same transaction don\u0027t race and commit at the same time.\n8) Make open_ioctl_trans an atomic so we don\u0027t have to take any locks for ioctl\ntrans.\n\nI have tested this with xfstests, but obviously it is a pretty hairy change so\nlots of testing is greatly appreciated.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7a7eaa40a39bde4eefc91aadeb1ce3dc4e6a1252",
      "tree": "eea3dea572a73168b70efa9fba2e9800457571d7",
      "parents": [
        "74b2107543da4ed9607ec484f63c42362dc9fca6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 13 12:54:33 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:56 2011 -0400"
      },
      "message": "Btrfs: take away the num_items argument from btrfs_join_transaction\n\nI keep forgetting that btrfs_join_transaction() just ignores the num_items\nargument, which leads me to sending pointless patches and looking stupid :).  So\njust kill the num_items argument from btrfs_join_transaction and\nbtrfs_start_ioctl_transaction, since neither of them use it.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "712673339a0d085358fd1cd3a6477cc7979bb69f",
      "tree": "b2e268685e3cbba19a4adb2a47d853e4e461fcfc",
      "parents": [
        "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
        "8628764e1a5e1998a42b9713e9edea7753653d01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/ctree.h\n\tfs/btrfs/volumes.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "945d8962ceee6bb273365d0bdf42f763225b290f",
      "tree": "43f5617022c7c947c3c63664e49eb9575ab82f2f",
      "parents": [
        "0d0ca30f180906224be6279788f2b202cfd959d8",
        "4ea028859bbdad34b84c9951fbb832ae10c6a96c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups\u0027 of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/tree-log.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dcc6d073225b6b732a52477c91bd4edc9b4d5502",
      "tree": "71da6844bb03c940c87c01a2a1f8c2e11cf85238",
      "parents": [
        "0965537308ac3b267ea16e731bd73870a51c53b8",
        "16cdcec736cd214350cdb591bf1091f8beedefa0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:07:01 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:07:01 2011 -0400"
      },
      "message": "Merge branch \u0027delayed_inode\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/inode.c\n\tfs/btrfs/ioctl.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "16cdcec736cd214350cdb591bf1091f8beedefa0",
      "tree": "5598d4561660c4d7a1d4de8b3703d6dd3cc7f9e7",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Apr 22 18:12:22 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:30:56 2011 -0400"
      },
      "message": "btrfs: implement delayed inode items operation\n\nChangelog V5 -\u003e V6:\n- Fix oom when the memory load is high, by storing the delayed nodes into the\n  root\u0027s radix tree, and letting btrfs inodes go.\n\nChangelog V4 -\u003e V5:\n- Fix the race on adding the delayed node to the inode, which is spotted by\n  Chris Mason.\n- Merge Chris Mason\u0027s incremental patch into this patch.\n- Fix deadlock between readdir() and memory fault, which is reported by\n  Itaru Kitayama.\n\nChangelog V3 -\u003e V4:\n- Fix nested lock, which is reported by Itaru Kitayama, by updating space cache\n  inode in time.\n\nChangelog V2 -\u003e V3:\n- Fix the race between the delayed worker and the task which does delayed items\n  balance, which is reported by Tsutomu Itoh.\n- Modify the patch address David Sterba\u0027s comment.\n- Fix the bug of the cpu recursion spinlock, reported by Chris Mason\n\nChangelog V1 -\u003e V2:\n- break up the global rb-tree, use a list to manage the delayed nodes,\n  which is created for every directory and file, and used to manage the\n  delayed directory name index items and the delayed inode item.\n- introduce a worker to deal with the delayed nodes.\n\nCompare with Ext3/4, the performance of file creation and deletion on btrfs\nis very poor. the reason is that btrfs must do a lot of b+ tree insertions,\nsuch as inode item, directory name item, directory name index and so on.\n\nIf we can do some delayed b+ tree insertion or deletion, we can improve the\nperformance, so we made this patch which implemented delayed directory name\nindex insertion/deletion and delayed inode update.\n\nImplementation:\n- introduce a delayed root object into the filesystem, that use two lists to\n  manage the delayed nodes which are created for every file/directory.\n  One is used to manage all the delayed nodes that have delayed items. And the\n  other is used to manage the delayed nodes which is waiting to be dealt with\n  by the work thread.\n- Every delayed node has two rb-tree, one is used to manage the directory name\n  index which is going to be inserted into b+ tree, and the other is used to\n  manage the directory name index which is going to be deleted from b+ tree.\n- introduce a worker to deal with the delayed operation. This worker is used\n  to deal with the works of the delayed directory name index items insertion\n  and deletion and the delayed inode update.\n  When the delayed items is beyond the lower limit, we create works for some\n  delayed nodes and insert them into the work queue of the worker, and then\n  go back.\n  When the delayed items is beyond the upper bound, we create works for all\n  the delayed nodes that haven\u0027t been dealt with, and insert them into the work\n  queue of the worker, and then wait for that the untreated items is below some\n  threshold value.\n- When we want to insert a directory name index into b+ tree, we just add the\n  information into the delayed inserting rb-tree.\n  And then we check the number of the delayed items and do delayed items\n  balance. (The balance policy is above.)\n- When we want to delete a directory name index from the b+ tree, we search it\n  in the inserting rb-tree at first. If we look it up, just drop it. If not,\n  add the key of it into the delayed deleting rb-tree.\n  Similar to the delayed inserting rb-tree, we also check the number of the\n  delayed items and do delayed items balance.\n  (The same to inserting manipulation)\n- When we want to update the metadata of some inode, we cached the data of the\n  inode into the delayed node. the worker will flush it into the b+ tree after\n  dealing with the delayed insertion and deletion.\n- We will move the delayed node to the tail of the list after we access the\n  delayed node, By this way, we can cache more delayed items and merge more\n  inode updates.\n- If we want to commit transaction, we will deal with all the delayed node.\n- the delayed node will be freed when we free the btrfs inode.\n- Before we log the inode items, we commit all the directory name index items\n  and the delayed inode update.\n\nI did a quick test by the benchmark tool[1] and found we can improve the\nperformance of file creation by ~15%, and file deletion by ~20%.\n\nBefore applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 1.096108\n        Average time: 0.000022\nDelete files:\n        Total files: 50000\n        Total time: 1.510403\n        Average time: 0.000030\n\nAfter applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 0.932899\n        Average time: 0.000019\nDelete files:\n        Total files: 50000\n        Total time: 1.215732\n        Average time: 0.000024\n\n[1] http://marc.info/?l\u003dlinux-btrfs\u0026m\u003d128212635122920\u0026q\u003dp3\n\nMany thanks for Kitayama-san\u0027s help!\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdave@jikos.cz\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nTested-by: Itaru Kitayama \u003ckitayama@cl.bb4u.ne.jp\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0965537308ac3b267ea16e731bd73870a51c53b8",
      "tree": "7b52288b7272b2391f736dd82a313cbbaad68570",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf",
        "82d5902d9c681be37ffa9d70482907f9f0b7ec1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "message": "Merge branch \u0027ino-alloc\u0027 of git://repo.or.cz/linux-btrfs-devel into inode_numbers\n\nConflicts:\n\tfs/btrfs/free-space-cache.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eed631e0d741d1a1067cfc6d709fdf2363126f9c",
      "tree": "31ba02472a8d5ef2d7780274a7663258c09a9acf",
      "parents": [
        "bd1a643e10eb8782b36b47c3602300319dd2fb00",
        "ebcb904dfe31644857422e3bb62e50f76fe86255"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 15 10:22:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 15 10:22:10 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix FS_IOC_SETFLAGS ioctl\n  Btrfs: fix FS_IOC_GETFLAGS ioctl\n  fs: remove FS_COW_FL\n  Btrfs: fix easily get into ENOSPC in mixed case\n  Prevent oopsing in posix_acl_valid()\n"
    },
    {
      "commit": "ebcb904dfe31644857422e3bb62e50f76fe86255",
      "tree": "e4dd906d7f15e0a924b410acd236e8b7e3bc8bba",
      "parents": [
        "d0092bdda819914b8725da76a8c33eb06eb0bd21"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Apr 15 03:03:17 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 14 16:10:28 2011 -0400"
      },
      "message": "Btrfs: fix FS_IOC_SETFLAGS ioctl\n\nSteps to reproduce the bug:\n\n  - Call FS_IOC_SETLFAGS ioctl with flags\u003dFS_COMPR_FL\n  - Call FS_IOC_SETFLAGS ioctl with flags\u003d0\n  - Call FS_IOC_GETFLAGS ioctl, and you\u0027ll see FS_COMPR_FL is still set!\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0092bdda819914b8725da76a8c33eb06eb0bd21",
      "tree": "34de4ffe3822f8a8f1a731628c849280a7e4edeb",
      "parents": [
        "e1e8fb6a1ff3f9487e03a4cbf85b81d1316068ce"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Apr 15 03:03:06 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 14 16:10:27 2011 -0400"
      },
      "message": "Btrfs: fix FS_IOC_GETFLAGS ioctl\n\nAs we\u0027ve added per file compression/cow support.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "e1e8fb6a1ff3f9487e03a4cbf85b81d1316068ce"
}
