)]}'
{
  "log": [
    {
      "commit": "eee2a817df7c5a6e569f353f8be78cc1b3604bb6",
      "tree": "f721beb4712c732702d3383d3c6a52da8b5bbb20",
      "parents": [
        "83896fb5e51594281720d145164f866ba769abd5",
        "acce952b0263825da32cf10489413dec78053347"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:43:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 17 14:43:43 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (25 commits)\n  Btrfs: forced readonly mounts on errors\n  btrfs: Require CAP_SYS_ADMIN for filesystem rebalance\n  Btrfs: don\u0027t warn if we get ENOSPC in btrfs_block_rsv_check\n  btrfs: Fix memory leak in btrfs_read_fs_root_no_radix()\n  btrfs: check NULL or not\n  btrfs: Don\u0027t pass NULL ptr to func that may deref it.\n  btrfs: mount failure return value fix\n  btrfs: Mem leak in btrfs_get_acl()\n  btrfs: fix wrong free space information of btrfs\n  btrfs: make the chunk allocator utilize the devices better\n  btrfs: restructure find_free_dev_extent()\n  btrfs: fix wrong calculation of stripe size\n  btrfs: try to reclaim some space when chunk allocation fails\n  btrfs: fix wrong data space statistics\n  fs/btrfs: Fix build of ctree\n  Btrfs: fix off by one while setting block groups readonly\n  Btrfs: Add BTRFS_IOC_SUBVOL_GETFLAGS/SETFLAGS ioctls\n  Btrfs: Add readonly snapshots support\n  Btrfs: Refactor btrfs_ioctl_snap_create()\n  btrfs: Extract duplicate decompress code\n  ...\n"
    },
    {
      "commit": "acce952b0263825da32cf10489413dec78053347",
      "tree": "d934881f247484d7b6917bebc40828600bb6b76c",
      "parents": [
        "6f88a4403def422bd8e276ddf6863d6ac71435d2"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Jan 06 19:30:25 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 17 15:13:08 2011 -0500"
      },
      "message": "Btrfs: forced readonly mounts on errors\n\nThis patch comes from \"Forced readonly mounts on errors\" ideas.\n\nAs we know, this is the first step in being more fault tolerant of disk\ncorruptions instead of just using BUG() statements.\n\nThe major content:\n- add a framework for generating errors that should result in filesystems\n  going readonly.\n- keep FS state in disk super block.\n- make sure that all of resource will be freed and released at umount time.\n- make sure that fter FS is forced readonly on error, there will be no more\n  disk change before FS is corrected. For this, we should stop write operation.\n\nAfter this patch is applied, the conversion from BUG() to such a framework can\nhappen incrementally.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "64c23e86873ee410554d6d1c76b60da47025e96f",
      "tree": "b30c5ff8782ebfdec6956d7834f796731fd3a1d4",
      "parents": [
        "eb745dbccce56f1bbe3f80b95ad2a325145171c2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:30 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:30 2011 -0500"
      },
      "message": "make the feature checks in -\u003efallocate future proof\n\nInstead of various home grown checks that might need updates for new\nflags just check for any bit outside the mask of the features supported\nby the filesystem.  This makes the check future proof for any newly\nadded flag.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f8b18087fd3277e424a24e13ce0edf30abe97ce0",
      "tree": "1e37e728fa3eff37e2f75ebf9d3446bac13f9f84",
      "parents": [
        "5520ebd308927a3beba599a2b68fa8c52f41f43b"
      ],
      "author": {
        "name": "Stefan Schmidt",
        "email": "stefan@datenfreihafen.org",
        "time": "Wed Jan 12 10:30:42 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 16 12:59:42 2011 -0800"
      },
      "message": "fs/btrfs: Fix build of ctree\n\nFix the build failure in some configurations:\n\n     CC [M]  fs/btrfs/ctree.o\n  In file included from fs/btrfs/ctree.c:21:0:\n  fs/btrfs/ctree.h:1003:17: error: field \u0027super_kobj\u0027 has incomplete type\n  fs/btrfs/ctree.h:1074:17: error: field \u0027root_kobj\u0027 has incomplete type\n  make[2]: *** [fs/btrfs/ctree.o] Error 1\n  make[1]: *** [fs/btrfs] Error 2\n  make: *** [fs] Error 2\n\ncaused by commit 57cc7215b708 (\"headers: kobject.h redux\")\n\nWe need to include kobject.h here.\n\nReported-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nFix-suggested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Stefan Schmidt \u003cstefan@datenfreihafen.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f88a4403def422bd8e276ddf6863d6ac71435d2",
      "tree": "8fe01d61977e0113cc0a4fa77b7df7f8dfeecad9",
      "parents": [
        "f690efb1aa2a961dd6655529c1797fcac60ad6d9"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Wed Dec 29 14:55:03 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: Require CAP_SYS_ADMIN for filesystem rebalance\n\nFilesystem rebalancing (BTRFS_IOC_BALANCE) affects the entire\nfilesystem and may run uninterruptibly for a long time.  This does not\nseem to be something that an unprivileged user should be able to do.\n\nReported-by: Aron Xu \u003chappyaron.xu@gmail.com\u003e\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f690efb1aa2a961dd6655529c1797fcac60ad6d9",
      "tree": "29b2faa25ff19a3c374b6bb60eb4507657c6dfa9",
      "parents": [
        "5e540f7715b8cd83b8e60beaaa525b125cc122de"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jan 12 21:04:22 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "Btrfs: don\u0027t warn if we get ENOSPC in btrfs_block_rsv_check\n\nIf we run low on space we could get a bunch of warnings out of\nbtrfs_block_rsv_check, but this is mostly just called via the transaction code\nto see if we need to end the transaction, it expects to see failures, so let\u0027s\nnot WARN and freak everybody out for no reason.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5e540f7715b8cd83b8e60beaaa525b125cc122de",
      "tree": "93ce1b3e22354c8d8e477ee56b925a44e7b9713e",
      "parents": [
        "91ca338d776e0cefb255bf2979b6448febd880f5"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Dec 27 06:53:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: Fix memory leak in btrfs_read_fs_root_no_radix()\n\nIn btrfs_read_fs_root_no_radix(), \u0027root\u0027 is not freed if\nbtrfs_search_slot() returns error.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "91ca338d776e0cefb255bf2979b6448febd880f5",
      "tree": "5d1d344d6ed565faf5612b5c695f00c04e6f01d8",
      "parents": [
        "ff175d57f057f77d2d3031d674c2af9167a4af02"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Jan 05 02:32:22 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: check NULL or not\n\nShould check if functions returns NULL or not.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff175d57f057f77d2d3031d674c2af9167a4af02",
      "tree": "ff04961d44566d7abc3ea4aab888900d40561c3e",
      "parents": [
        "20b450773d17e325190c158e10bfdb25dc21d2d6"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sat Dec 25 21:22:30 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:20 2011 -0500"
      },
      "message": "btrfs: Don\u0027t pass NULL ptr to func that may deref it.\n\nHi,\n\nIn fs/btrfs/inode.c::fixup_tree_root_location() we have this code:\n\n...\n \t\tif (!path) {\n \t\t\terr \u003d -ENOMEM;\n \t\t\tgoto out;\n \t\t}\n...\n \tout:\n \t\tbtrfs_free_path(path);\n \t\treturn err;\n\nbtrfs_free_path() passes its argument on to other functions and some of\nthem end up dereferencing the pointer.\nIn the code above that pointer is clearly NULL, so btrfs_free_path() will\neventually cause a NULL dereference.\n\nThere are many ways to cut this cake (fix the bug). The one I chose was to\nmake btrfs_free_path() deal gracefully with NULL pointers. If you\ndisagree, feel free to come up with an alternative patch.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "20b450773d17e325190c158e10bfdb25dc21d2d6",
      "tree": "c99c3d8cedbf8fb5f01ed42d7d3c5b5bd5fd9d69",
      "parents": [
        "42838bb265b9cff3de9587fcacc398b5112dc2d9"
      ],
      "author": {
        "name": "Dave Young",
        "email": "hidave.darkstar@gmail.com",
        "time": "Sat Jan 08 10:09:13 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: mount failure return value fix\n\nI happened to pass swap partition as root partition in cmdline,\nthen kernel panic and tell me about \"Cannot open root device\".\nIt is not correct, in fact it is a fs type mismatch instead of \u0027no device\u0027.\n\nEventually I found btrfs mounting failed with -EIO, it should be -EINVAL.\nThe logic in init/do_mounts.c:\n        for (p \u003d fs_names; *p; p +\u003d strlen(p)+1) {\n                int err \u003d do_mount_root(name, p, flags, root_mount_data);\n                switch (err) {\n                        case 0:\n                                goto out;\n                        case -EACCES:\n                                flags |\u003d MS_RDONLY;\n                                goto retry;\n                        case -EINVAL:\n                                continue;\n                }\n\t\tprint \"Cannot open root device\"\n\t\tpanic\n\t}\nSO fs type after btrfs will have no chance to mount\n\nHere fix the return value as -EINVAL\n\nSigned-off-by: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42838bb265b9cff3de9587fcacc398b5112dc2d9",
      "tree": "4c0cfbe4f41004b096917ddf75ed7d74743a4af3",
      "parents": [
        "6d07bcec969af335d4e35b3921131b7929bd634e"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Thu Jan 06 21:45:21 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: Mem leak in btrfs_get_acl()\n\nIt seems to me that we leak the memory allocated to \u0027value\u0027 in\nbtrfs_get_acl() if the call to posix_acl_from_xattr() fails.\nHere\u0027s a patch that attempts to correct that problem.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6d07bcec969af335d4e35b3921131b7929bd634e",
      "tree": "2d1e0bb5f69bdf9dafa2862b6cad965184d67c84",
      "parents": [
        "b2117a39fa96cf4814e7cab8c11494149ba6f29d"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:31 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong free space information of btrfs\n\nWhen we store data by raid profile in btrfs with two or more different size\ndisks, df command shows there is some free space in the filesystem, but the\nuser can not write any data in fact, df command shows the wrong free space\ninformation of btrfs.\n\n # mkfs.btrfs -d raid1 /dev/sda9 /dev/sda10\n # btrfs-show\n Label: none  uuid: a95cd49e-6e33-45b8-8741-a36153ce4b64\n \tTotal devices 2 FS bytes used 28.00KB\n \tdevid    1 size 5.01GB used 2.03GB path /dev/sda9\n \tdevid    2 size 10.00GB used 2.01GB path /dev/sda10\n # btrfs device scan /dev/sda9 /dev/sda10\n # mount /dev/sda9 /mnt\n # dd if\u003d/dev/zero of\u003dtmpfile0 bs\u003d4K count\u003d9999999999\n   (fill the filesystem)\n # sync\n # df -TH\n Filesystem\tType\tSize\tUsed\tAvail\tUse%\tMounted on\n /dev/sda9\tbtrfs\t17G\t8.6G\t5.4G\t62%\t/mnt\n # btrfs-show\n Label: none  uuid: a95cd49e-6e33-45b8-8741-a36153ce4b64\n \tTotal devices 2 FS bytes used 3.99GB\n \tdevid    1 size 5.01GB used 5.01GB path /dev/sda9\n \tdevid    2 size 10.00GB used 4.99GB path /dev/sda10\n\nIt is because btrfs cannot allocate chunks when one of the pairing disks has\nno space, the free space on the other disks can not be used for ever, and should\nbe subtracted from the total space, but btrfs doesn\u0027t subtract this space from\nthe total. It is strange to the user.\n\nThis patch fixes it by calcing the free space that can be used to allocate\nchunks.\n\nImplementation:\n1. get all the devices free space, and align them by stripe length.\n2. sort the devices by the free space.\n3. check the free space of the devices,\n   3.1. if it is not zero, and then check the number of the devices that has\n        more free space than this device,\n        if the number of the devices is beyond the min stripe number, the free\n        space can be used, and add into total free space.\n        if the number of the devices is below the min stripe number, we can not\n        use the free space, the check ends.\n   3.2. if the free space is zero, check the next devices, goto 3.1\n\nThis implementation is just likely fake chunk allocation.\n\nAfter appling this patch, df can show correct space information:\n # df -TH\n Filesystem\tType\tSize\tUsed\tAvail\tUse%\tMounted on\n /dev/sda9\tbtrfs\t17G\t8.6G\t0\t100%\t/mnt\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b2117a39fa96cf4814e7cab8c11494149ba6f29d",
      "tree": "9327d1332d68f91931767ee7bc6233251ab41565",
      "parents": [
        "7bfc837df935d850fe996dfe92ef48975cd4170a"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:28 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: make the chunk allocator utilize the devices better\n\nWith this patch, we change the handling method when we can not get enough free\nextents with default size.\n\nImplementation:\n1. Look up the suitable free extent on each device and keep the search result.\n   If not find a suitable free extent, keep the max free extent\n2. If we get enough suitable free extents with default size, chunk allocation\n   succeeds.\n3. If we can not get enough free extents, but the number of the extent with\n   default size is \u003e\u003d min_stripes, we just change the mapping information\n   (reduce the number of stripes in the extent map), and chunk allocation\n   succeeds.\n4. If the number of the extent with default size is \u003c min_stripes, sort the\n   devices by its max free extent\u0027s size descending\n5. Use the size of the max free extent on the (num_stripes - 1)th device as the\n   stripe size to allocate the device space\n\nBy this way, the chunk allocator can allocate chunks as large as possible when\nthe devices\u0027 space is not enough and make full use of the devices.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7bfc837df935d850fe996dfe92ef48975cd4170a",
      "tree": "8ca5f83c0c43e505b872368877504fa95c6276ab",
      "parents": [
        "1974a3b42d8cf7a9c74f1e0310c593023617037a"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:26 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: restructure find_free_dev_extent()\n\n- make it return the start position and length of the max free space when it can\n  not find a suitable free space.\n- make it more readability\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1974a3b42d8cf7a9c74f1e0310c593023617037a",
      "tree": "73d7eb8dc071a095fbe424776ab7610dbc897c16",
      "parents": [
        "d52a5b5f1fa40804f681cf9868d4a8f90661bdf3"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:24 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong calculation of stripe size\n\nThere are two tiny problem:\n- One is When we check the chunk size is greater than the max chunk size or not,\n  we should take mirrors into account, but the original code didn\u0027t.\n- The other is btrfs shouldn\u0027t use the size of the residual free space as the\n  length of of a dup chunk when doing chunk allocation. It is because the device\n  space that a dup chunk needs is twice as large as the chunk size, if we use\n  the size of the residual free space as the length of a dup chunk, we can not\n  get enough free space. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d52a5b5f1fa40804f681cf9868d4a8f90661bdf3",
      "tree": "93ae0faf84163748353d1edb6c5247483762f2df",
      "parents": [
        "299a08b1c34f9397797946a0fa215c5fd145c5cf"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:18 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: try to reclaim some space when chunk allocation fails\n\nWe cannot write data into files when when there is tiny space in the filesystem.\n\nReproduce steps:\n # mkfs.btrfs /dev/sda1\n # mount /dev/sda1 /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile0 bs\u003d4K count\u003d1\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile1 bs\u003d4K count\u003d99999999999999\n   (fill the filesystem)\n # umount /mnt\n # mount /dev/sda1 /mnt\n # rm -f /mnt/tmpfile0\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile0 bs\u003d4K count\u003d1\n   (failed with nospec)\n\nBut if we do the last step again, we can write data successfully. The reason of\nthe problem is that btrfs didn\u0027t try to commit the current transaction and\nreclaim some space when chunk allocation failed.\n\nThis patch fixes it by committing the current transaction to reclaim some\nspace when chunk allocation fails.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "299a08b1c34f9397797946a0fa215c5fd145c5cf",
      "tree": "beace30f71e49e4ac6428b33916288695c06539f",
      "parents": [
        "f580eb0931fbcb6dc3916f094f471671facd1daa"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Jan 05 10:07:15 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "btrfs: fix wrong data space statistics\n\nJosef has implemented mixed data/metadata chunks, we must add those chunks\u0027\nspace just like data chunks.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f580eb0931fbcb6dc3916f094f471671facd1daa",
      "tree": "456f97b04cfcfb5b1c19b6b5fca225e8d92ab06b",
      "parents": [
        "f892436eb2c3223fecda614a64d51f36f6ec2245"
      ],
      "author": {
        "name": "Stefan Schmidt",
        "email": "stefan@datenfreihafen.org",
        "time": "Wed Jan 12 09:30:42 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:30:19 2011 -0500"
      },
      "message": "fs/btrfs: Fix build of ctree\n\nCC [M]  fs/btrfs/ctree.o\nIn file included from fs/btrfs/ctree.c:21:0:\nfs/btrfs/ctree.h:1003:17: error: field \u003c91\u003esuper_kobj\u003c92\u003e has incomplete type\nfs/btrfs/ctree.h:1074:17: error: field \u003c91\u003eroot_kobj\u003c92\u003e has incomplete type\nmake[2]: *** [fs/btrfs/ctree.o] Error 1\nmake[1]: *** [fs/btrfs] Error 2\nmake: *** [fs] Error 2\n\nWe need to include kobject.h here.\n\nReported-by: Jeff Garzik \u003cjeff@garzik.org\u003e\nFix-suggested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Stefan Schmidt \u003cstefan@datenfreihafen.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f892436eb2c3223fecda614a64d51f36f6ec2245",
      "tree": "75001db8c8b7fad547cbd4e99494727287598c1c",
      "parents": [
        "26c79f6ba0ccdc4bbc8ef8721406d37e9178e30b",
        "3a39c18d63fec35f49df577d4b2a4e29c2212f22"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:25:54 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:25:54 2011 -0500"
      },
      "message": "Merge branch \u0027lzo-support\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "26c79f6ba0ccdc4bbc8ef8721406d37e9178e30b",
      "tree": "c5bcbf8f605afdae1a89ea2617f29052ac8c6f18",
      "parents": [
        "65e5341b9a0c39767ae1fecc727d70eda0dd6d83",
        "0caa102da82799efaba88e234484786a9591c797"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:24:45 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Jan 16 11:24:45 2011 -0500"
      },
      "message": "Merge branch \u0027readonly-snapshots\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "23a8519b55235660f6fb7d6f394a912de9d23208",
      "tree": "7df68ca9459ccc15cb40902a3c9c8b62b710aefa",
      "parents": [
        "d6dc8462f471f7bbb49c42c147bf84de0c977099"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 20:46:19 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:16:44 2011 -0500"
      },
      "message": "Btrfs: fail if we try to use hole punch\n\nBtrfs doesn\u0027t have the ability to punch holes yet, so make sure we return\nEOPNOTSUPP if we try to use hole punching through fallocate.  This support can\nbe added later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "af53d29ac13a97304d44343dc3b26154ca595268",
      "tree": "6ed2ca27a8d9d1d04b3df839273f36c896cf370e",
      "parents": [
        "ba87167c06ed0049260d9ca36405c0f8af609e07"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 20 10:56:06 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:47 2011 -0500"
      },
      "message": "switch btrfs, close races\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "258a5aa8dfc6294f5f7df892023ee4d3e57c9841",
      "tree": "101a4b9ee97f7d838b35a906244085873c599d19",
      "parents": [
        "73598611ade7c85f0c3d52ba5130103f6709c6d3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:01 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:30 2011 +1100"
      },
      "message": "btrfs: provide simple rcu-walk ACL implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "65e5341b9a0c39767ae1fecc727d70eda0dd6d83",
      "tree": "09f54177bfb8c93b2320d84317705bec6dcc42a6",
      "parents": [
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 24 06:41:52 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 04 16:41:39 2011 -0500"
      },
      "message": "Btrfs: fix off by one while setting block groups readonly\n\nWhen we read in block groups, we\u0027ll set non-redundant groups\nreadonly if we find a raid1, DUP or raid10 group.  But the\nro code has an off by one bug in the math around testing to\nmake sure out accounting doesn\u0027t go wrong.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0caa102da82799efaba88e234484786a9591c797",
      "tree": "748bb0d8054bb85256904ffe29913277e5b80684",
      "parents": [
        "b83cc9693f39689490970c19f6c5b866f6719a70"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 20 16:30:25 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 23 08:49:19 2010 +0800"
      },
      "message": "Btrfs: Add BTRFS_IOC_SUBVOL_GETFLAGS/SETFLAGS ioctls\n\nThis allows us to set a snapshot or a subvolume readonly or writable\non the fly.\n\nUsage:\n\nSet BTRFS_SUBVOL_RDONLY of btrfs_ioctl_vol_arg_v2-\u003eflags, and then\ncall ioctl(BTRFS_IOCTL_SUBVOL_SETFLAGS);\n\nChangelog for v3:\n\n- Change to pass __u64 as ioctl parameter.\n\nChangelog for v2:\n\n- Add _GETFLAGS ioctl.\n- Check if the passed fd is the root of a subvolume.\n- Change the name from _SNAP_SETFLAGS to _SUBVOL_SETFLAGS.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "b83cc9693f39689490970c19f6c5b866f6719a70",
      "tree": "b86d09884015fce195a4ac5ff1e8ec5f6ec00677",
      "parents": [
        "fa0d2b9bd717340e0bc4850a80ac0eb344e9a7fb"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 20 16:04:08 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 23 08:49:17 2010 +0800"
      },
      "message": "Btrfs: Add readonly snapshots support\n\nUsage:\n\nSet BTRFS_SUBVOL_RDONLY of btrfs_ioctl_vol_arg_v2-\u003eflags, and call\nioctl(BTRFS_I0CTL_SNAP_CREATE_V2).\n\nImplementation:\n\n- Set readonly bit of btrfs_root_item-\u003eflags.\n- Add readonly checks in btrfs_permission (inode_permission),\nbtrfs_setattr, btrfs_set/remove_xattr and some ioctls.\n\nChangelog for v3:\n\n- Eliminate btrfs_root-\u003ereadonly, but check btrfs_root-\u003eroot_item.flags.\n- Rename BTRFS_ROOT_SNAP_RDONLY to BTRFS_ROOT_SUBVOL_RDONLY.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "fa0d2b9bd717340e0bc4850a80ac0eb344e9a7fb",
      "tree": "f17b1e86d602236e7be49821ed8f9109819e29fb",
      "parents": [
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Dec 20 15:53:28 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Dec 23 08:49:15 2010 +0800"
      },
      "message": "Btrfs: Refactor btrfs_ioctl_snap_create()\n\nSplit it into two functions for two different ioctls, since they\nshare no common code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "3a39c18d63fec35f49df577d4b2a4e29c2212f22",
      "tree": "78b8c032e18e2231c18e89ac3f8f5746abdb119c",
      "parents": [
        "1a419d85a76853d7d04e9b6280a80e96770bf3e3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Nov 08 15:22:19 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:50 2010 +0800"
      },
      "message": "btrfs: Extract duplicate decompress code\n\nAdd a common function to copy decompressed data from working buffer\nto bio pages.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "1a419d85a76853d7d04e9b6280a80e96770bf3e3",
      "tree": "01535c5571208561af5d475eaa151e1c2f936f57",
      "parents": [
        "a6fa6fae40ec336c7df6155255ae64ebef43a8bc"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:12:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:48 2010 +0800"
      },
      "message": "btrfs: Allow to specify compress method when defrag\n\nUpdate defrag ioctl, so one can choose lzo or zlib when turning\non compression in defrag operation.\n\nChangelog:\n\nv1 -\u003e v2\n- Add incompability flag.\n- Fix to check invalid compress type.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "a6fa6fae40ec336c7df6155255ae64ebef43a8bc",
      "tree": "6cda8aa6a60967206614a941f034249e3017913e",
      "parents": [
        "261507a02ccba9afda919852263b6bc1581ce1ef"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:12:26 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:47 2010 +0800"
      },
      "message": "btrfs: Add lzo compression support\n\nLzo is a much faster compression algorithm than gzib, so would allow\nmore users to enable transparent compression, and some users can\nchoose from compression ratio and speed for different applications\n\nUsage:\n\n # mount -t btrfs -o compress[\u003d\u003czlib,lzo\u003e] dev /mnt\nor\n # mount -t btrfs -o compress-force[\u003d\u003czlib,lzo\u003e] dev /mnt\n\n\"-o compress\" without argument is still allowed for compatability.\n\nCompatibility:\n\nIf we mount a filesystem with lzo compression, it will not be able be\nmounted in old kernels. One reason is, otherwise btrfs will directly\ndump compressed data, which sits in inline extent, to user.\n\nPerformance:\n\nThe test copied a linux source tarball (~400M) from an ext4 partition\nto the btrfs partition, and then extracted it.\n\n(time in second)\n           lzo        zlib        nocompress\ncopy:      10.6       21.7        14.9\nextract:   70.1       94.4        66.6\n\n(data size in MB)\n           lzo        zlib        nocompress\ncopy:      185.87     108.69      394.49\nextract:   193.80     132.36      381.21\n\nChangelog:\n\nv1 -\u003e v2:\n- Select LZO_COMPRESS and LZO_DECOMPRESS in btrfs Kconfig.\n- Add incompability flag.\n- Fix error handling in compress code.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "261507a02ccba9afda919852263b6bc1581ce1ef",
      "tree": "c16bc657ff4e29a87042ceb379487f24dff01035",
      "parents": [
        "4b72029dc3fd6ba7dc45ccd1cf0aa0ebfa209bd3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 17 14:21:50 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:45 2010 +0800"
      },
      "message": "btrfs: Allow to add new compression algorithm\n\nMake the code aware of compression type, instead of always assuming\nzlib compression.\n\nAlso make the zlib workspace function as common code for all\ncompression types.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "4b72029dc3fd6ba7dc45ccd1cf0aa0ebfa209bd3",
      "tree": "116285c40ed2fa30e91d164e2e16e0d82ae450f9",
      "parents": [
        "8844355df7f4e091b03cc131e1549631238b397b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Nov 09 08:27:27 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:43 2010 +0800"
      },
      "message": "btrfs: Fix error handling in zlib\n\nReturn failure if alloc_page() fails to allocate memory,\nand the upper code will just give up compression.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "8844355df7f4e091b03cc131e1549631238b397b",
      "tree": "90568648b57f05265def659b7dbf8f45baaaeb65",
      "parents": [
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 25 15:11:43 2010 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 22 23:15:41 2010 +0800"
      },
      "message": "btrfs: Fix bugs in zlib workspace\n\n- Fix a race that can result in alloc_workspace \u003e cpus.\n- Fix to check num_workspace after wakeup.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "3cb50ddf97a0a1ca4c68bc12fa1e727a6b45fbf2",
      "tree": "d0b6c48e52bcccdd67c0d440a7ac7629404394fd",
      "parents": [
        "b8da46d3d55807037b58f14621a0949f18053bde"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Mon Dec 20 15:53:18 2010 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:09:57 2010 -0800"
      },
      "message": "Fix btrfs b0rkage\n\nBuggered-in: 76dda93c6ae2 (\"Btrfs: add snapshot/subvolume destroy\nioctl\")\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e13cf63f2bbd38721af557f0205da994ea068427",
      "tree": "26d0d779fadd58814eea18ab2b16370a8565c837",
      "parents": [
        "073f21ae1319348f4f8630003b7901e3be254327",
        "83a50de97fe96aca82389e061862ed760ece2283"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 14 11:08:13 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: prevent RAID level downgrades when space is low\n  Btrfs: account for missing devices in RAID allocation profiles\n  Btrfs: EIO when we fail to read tree roots\n  Btrfs: fix compiler warnings\n  Btrfs: Make async snapshot ioctl more generic\n  Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n  Btrfs: Fix a crash when mounting a subvolume\n  Btrfs: fix sync subvol/snapshot creation\n  Btrfs: Fix page leak in compressed writeback path\n  Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n  Btrfs: fixup return code for btrfs_del_orphan_item\n  Btrfs: do not do fast caching if we are allocating blocks for tree_root\n  Btrfs: deal with space cache errors better\n  Btrfs: fix use after free in O_DIRECT\n"
    },
    {
      "commit": "83a50de97fe96aca82389e061862ed760ece2283",
      "tree": "95421594f180c32cca1ff7f6881f4cf272cf2b5c",
      "parents": [
        "cd02dca56442e1504fd6bc5b96f7f1870162b266"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 15:06:46 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 20:07:01 2010 -0500"
      },
      "message": "Btrfs: prevent RAID level downgrades when space is low\n\nThe extent allocator has code that allows us to fill\nallocations from any available block group, even if it doesn\u0027t\nmatch the raid level we\u0027ve requested.\n\nThis was put in because adding a new drive to a filesystem\nmade with the default mkfs options actually upgrades the metadata from\nsingle spindle dup to full RAID1.\n\nBut, the code also allows us to allocate from a raid0 chunk when we\nreally want a raid1 or raid10 chunk.  This can cause big trouble because\nmkfs creates a small (4MB) raid0 chunk for data and metadata which then\ngoes unused for raid1/raid10 installs.\n\nThe allocator will happily wander in and allocate from that chunk when\nthings get tight, which is not correct.\n\nThe fix here is to make sure that we provide duplication when the\ncaller has asked for it.  It does all the dups to be any raid level,\nwhich preserves the dup-\u003eraid1 upgrade abilities.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cd02dca56442e1504fd6bc5b96f7f1870162b266",
      "tree": "1a38d99fc581974ba6d8136c42ca81f3b1216ea3",
      "parents": [
        "68433b73b104bff388aac376631d32abbbd872b0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:56:23 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 20:06:52 2010 -0500"
      },
      "message": "Btrfs: account for missing devices in RAID allocation profiles\n\nWhen we mount in RAID degraded mode without adding a new device to\nreplace the failed one, we can end up using the wrong RAID flags for\nallocations.\n\nThis results in strange combinations of block groups (raid1 in a raid10\nfilesystem) and corruptions when we try to allocate blocks from single\nspindle chunks on drives that are actually missing.\n\nThe first device has two small 4MB chunks in it that mkfs creates and\nthese are usually unused in a raid1 or raid10 setup.  But, in -o degraded,\nthe allocator will fall back to these because the mask of desired raid groups\nisn\u0027t correct.\n\nThe fix here is to count the missing devices as we build up the list\nof devices in the system.  This count is used when picking the\nraid level to make sure we continue using the same levels that were\nin place before we lost a drive.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "68433b73b104bff388aac376631d32abbbd872b0",
      "tree": "b08c8c07f2f77e3d840b316a66a47af1210ab349",
      "parents": [
        "3dd1462e82bcab7625cec129952f26dae7a8b742"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:47:58 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 13 14:47:58 2010 -0500"
      },
      "message": "Btrfs: EIO when we fail to read tree roots\n\nIf we just get a plain IO error when we read tree roots, the code\nwasn\u0027t properly sending that error up the chain.  This allowed mounts to\ncontinue when they should failed, and allowed operations\non partially setup root structs.  The end result was usually oopsen\non spinlocks that hadn\u0027t been spun up correctly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3dd1462e82bcab7625cec129952f26dae7a8b742",
      "tree": "0e4da87e5de3c71613ab6a6470b5c16d03c793a4",
      "parents": [
        "fdfb1e4f6c61477a61890b64974d65cdc3a98702"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Tue Dec 07 14:54:09 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:11 2010 -0500"
      },
      "message": "Btrfs: fix compiler warnings\n\n... regarding an unused function when !MIGRATION, and regarding a\nprintk() format string vs argument mismatch.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fdfb1e4f6c61477a61890b64974d65cdc3a98702",
      "tree": "2bb65569dfbcfe12e4d54449d018abeebf88e89d",
      "parents": [
        "914ee295af418e936ec20a08c1663eaabe4cd07a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Dec 10 06:41:56 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:11 2010 -0500"
      },
      "message": "Btrfs: Make async snapshot ioctl more generic\n\nIf we had reserved some bytes in struct btrfs_ioctl_vol_args, we\nwouldn\u0027t have to create a new structure for async snapshot creation.\n\nHere we convert async snapshot ioctl to use a more generic ABI, as\nwe\u0027ll add more ioctls for snapshots/subvolumes in the future, readonly\nsnapshots for example.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "914ee295af418e936ec20a08c1663eaabe4cd07a",
      "tree": "2e880ea913b8cbadf22b2288b5c278c2e5eadb60",
      "parents": [
        "f106e82caaa0d943e47cacc184f5b40d538e0044"
      ],
      "author": {
        "name": "Xin Zhong",
        "email": "xin.zhong@intel.com",
        "time": "Thu Dec 09 09:30:14 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: pwrite blocked when writing from the mmaped buffer of the same page\n\nThis problem is found in meego testing:\nhttp://bugs.meego.com/show_bug.cgi?id\u003d6672\nA file in btrfs is mmaped and the mmaped buffer is passed to pwrite to write to the same page\nof the same file. In btrfs_file_aio_write(), the pages is locked by prepare_pages(). So when\nbtrfs_copy_from_user() is called, page fault happens and the same page needs to be locked again\nin filemap_fault(). The fix is to move iov_iter_fault_in_readable() before prepage_pages() to make page\nfault happen before pages are locked. And also disable page fault in critical region in\nbtrfs_copy_from_user().\n\nReviewed-by: Yan, Zheng\u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Zhong, Xin \u003cxin.zhong@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f106e82caaa0d943e47cacc184f5b40d538e0044",
      "tree": "5e8b6c5e0b0b35c65ed509029cda85bd54a8aab8",
      "parents": [
        "75eaa0e22c055e38982df267d0f84cc510ba38bf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Dec 07 01:51:26 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: Fix a crash when mounting a subvolume\n\nWe should drop dentry before deactivating the superblock, otherwise\nwe can hit this bug:\n\nBUG: Dentry f349a690{i\u003d100,n\u003d/} still in use (1) [unmount of btrfs loop1]\n...\n\nSteps to reproduce the bug:\n\n  # mount /dev/loop1 /mnt\n  # mkdir save\n  # btrfs subvolume snapshot /mnt save/snap1\n  # umount /mnt\n  # mount -o subvol\u003dsave/snap1 /dev/loop1 /mnt\n  (crash)\n\nReported-by: Michael Niederle \u003cmniederle@gmx.at\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "75eaa0e22c055e38982df267d0f84cc510ba38bf",
      "tree": "073828ec809c95dbae9368b7f83a3734dad82b45",
      "parents": [
        "24ae63656a165c870c0d69fcc8aac1dc35e25e34"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 10 00:36:28 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:10 2010 -0500"
      },
      "message": "Btrfs: fix sync subvol/snapshot creation\n\nWe were incorrectly taking the async path even for the sync ioctls by\npassing in \u0026transid unconditionally.\n\nThere\u0027s ample room for further cleanup here, but this keeps the fix simple.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "24ae63656a165c870c0d69fcc8aac1dc35e25e34",
      "tree": "8833bfeba51ef45e0acc42f3a23838f528e6a37e",
      "parents": [
        "84cd948cb11041f205242de457e680b9bb872a36"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.z.yan@linux.intel.com",
        "time": "Mon Dec 06 07:02:36 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:09 2010 -0500"
      },
      "message": "Btrfs: Fix page leak in compressed writeback path\n\n\"start + num_bytes \u003e\u003d actual_end\" can happen when compressed page writeback races\nwith file truncation. In that case we need unlock and release pages past the end\nof file.\n\nSigned-off-by: Yan, Zheng \u003czheng.z.yan@intel.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "84cd948cb11041f205242de457e680b9bb872a36",
      "tree": "479ac0dc057044a8b399c8c32f1c78641bd33740",
      "parents": [
        "7e1fea731da8c1b5fcf5d8e157befd389b030760"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 12:24:01 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 10 16:29:04 2010 -0500"
      },
      "message": "Btrfs: do not BUG if we fail to remove the orphan item for dead snapshots\n\nNot being able to delete an orphan item isn\u0027t a horrible thing.  The worst that\nhappens is the next time around we try and do the orphan cleanup and we can\u0027t\nfind the referenced object and just delete the item and move on.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7e1fea731da8c1b5fcf5d8e157befd389b030760",
      "tree": "85800034e3b0f8262dd51e128264bec5ce30aed2",
      "parents": [
        "b8399dee478db7939cd0d6fda8ecacddf2facd03"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 12:22:34 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:15 2010 -0500"
      },
      "message": "Btrfs: fixup return code for btrfs_del_orphan_item\n\nIf the orphan item doesn\u0027t exist, we return 1, which doesn\u0027t make any sense to\nthe callers.  Instead return -ENOENT if we didn\u0027t find the item.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b8399dee478db7939cd0d6fda8ecacddf2facd03",
      "tree": "418a67d8d2de13739f3b14518917c8aaadafe3b8",
      "parents": [
        "2b20982e3154266106573beac2a4d4ba57a2789a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Dec 08 09:15:11 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:13 2010 -0500"
      },
      "message": "Btrfs: do not do fast caching if we are allocating blocks for tree_root\n\nSince the fast caching uses normal tree locking, we can possibly deadlock if we\nget to the caching via a btrfs_search_slot() on the tree_root.  So just check to\nsee if the root we are on is the tree root, and just don\u0027t do the fast caching.\n\nReported-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2b20982e3154266106573beac2a4d4ba57a2789a",
      "tree": "13539703ccb713385b4c7ff7eac508bb8f3b1e18",
      "parents": [
        "955256f2c3e25c94ad373c43fbc38d2ac8af2a71"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 03 13:17:53 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:12 2010 -0500"
      },
      "message": "Btrfs: deal with space cache errors better\n\nCurrently if the space cache inode generation number doesn\u0027t match the\ngeneration number in the space cache header we will just fail to load the space\ncache, but we won\u0027t mark the space cache as an error, so we\u0027ll keep getting that\nerror each time somebody tries to cache that block group until we actually clear\nthe thing.  Fix this by marking the space cache as having an error so we only\nget the message once.  This patch also makes it so that we don\u0027t try and setup\nspace cache for a block group that isn\u0027t cached, since we won\u0027t be able to write\nit out anyway.  None of these problems are actual problems, they are just\nannoying and sub-optimal.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "955256f2c3e25c94ad373c43fbc38d2ac8af2a71",
      "tree": "f8a6074a34e988e613eb308d4aeb91fd8fb2e968",
      "parents": [
        "5a92bc88cef279261d3f138e25850c122df67045"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 09:41:10 2010 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 09 13:57:10 2010 -0500"
      },
      "message": "Btrfs: fix use after free in O_DIRECT\n\nThis fixes a bug where we use dip after we have freed it.  Instead just use the\nfile_offset that was passed to the function.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "aa3fc52546b847f590d86a093afd863ff9081628",
      "tree": "9d8b35a700287ae19fb3baa0e9f2c93462795d11",
      "parents": [
        "555bdaefd52c386e79f98591810ceb8bab780398",
        "5a92bc88cef279261d3f138e25850c122df67045"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:11:08 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 29 14:11:08 2010 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (24 commits)\n  Btrfs: don\u0027t use migrate page without CONFIG_MIGRATION\n  Btrfs: deal with DIO bios that span more than one ordered extent\n  Btrfs: setup blank root and fs_info for mount time\n  Btrfs: fix fiemap\n  Btrfs - fix race between btrfs_get_sb() and umount\n  Btrfs: update inode ctime when using links\n  Btrfs: make sure new inode size is ok in fallocate\n  Btrfs: fix typo in fallocate to make it honor actual size\n  Btrfs: avoid NULL pointer deref in try_release_extent_buffer\n  Btrfs: make btrfs_add_nondir take parent inode as an argument\n  Btrfs: hold i_mutex when calling btrfs_log_dentry_safe\n  Btrfs: use dget_parent where we can UPDATED\n  Btrfs: fix more ESTALE problems with NFS\n  Btrfs: handle NFS lookups properly\n  btrfs: make 1-bit signed fileds unsigned\n  btrfs: Show device attr correctly for symlinks\n  btrfs: Set file size correctly in file clone\n  btrfs: Check if dest_offset is block-size aligned before cloning file\n  Btrfs: handle the space_cache option properly\n  btrfs: Fix early enospc because \u0027unused\u0027 calculated with wrong sign.\n  ...\n"
    },
    {
      "commit": "5a92bc88cef279261d3f138e25850c122df67045",
      "tree": "22bc186bda2d2a61343bed473c3e606b43a49a18",
      "parents": [
        "163cf09c2a0ee5cac6285f9347975bd1e97725da"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 29 09:49:11 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 29 09:49:11 2010 -0500"
      },
      "message": "Btrfs: don\u0027t use migrate page without CONFIG_MIGRATION\n\nFixes compile error\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "163cf09c2a0ee5cac6285f9347975bd1e97725da",
      "tree": "5a83cd42d57fcc4d92d12965b5eafdb472e89b02",
      "parents": [
        "450ba0ea06b6ed3612d27f2b7127a9de4160f285"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 28 19:56:33 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 28 19:56:33 2010 -0500"
      },
      "message": "Btrfs: deal with DIO bios that span more than one ordered extent\n\nThe new DIO bio splitting code has problems when the bio\nspans more than one ordered extent.  This will happen as the\ngeneric DIO code merges our get_blocks calls together into\na bigger single bio.\n\nThis fixes things by walking forward in the ordered extent\ncode finding all the overlapping ordered extents and completing them\nall at once.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "450ba0ea06b6ed3612d27f2b7127a9de4160f285",
      "tree": "2276ddbcb65d7656416cdce69432a5858b35c413",
      "parents": [
        "975f84fee2e8a77ee5f41bfe7c5682bf29366b10"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 14:59:15 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:51 2010 -0500"
      },
      "message": "Btrfs: setup blank root and fs_info for mount time\n\nThere is a problem with how we use sget, it searches through the list of supers\nattached to the fs_type looking for a super with the same fs_devices as what\nwe\u0027re trying to mount.  This depends on sb-\u003es_fs_info being filled, but we don\u0027t\nfill that in until we get to btrfs_fill_super, so we could hit supers on the\nfs_type super list that have a null s_fs_info.  In order to fix that we need to\ngo ahead and setup a blank root with a blank fs_info to hold fs_devices, that\nway our test will work out right and then we can set s_fs_info in\nbtrfs_set_super, and then open_ctree will simply use our pre-allocated root and\nfs_info when setting everything up.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "975f84fee2e8a77ee5f41bfe7c5682bf29366b10",
      "tree": "e7e20e775fa4c126273c28d0c7f0ee05b5bb7f5b",
      "parents": [
        "619c8c763928841b1112e1d417f88bc1d44daecb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 23 19:36:57 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:50 2010 -0500"
      },
      "message": "Btrfs: fix fiemap\n\nThere are two big problems currently with FIEMAP\n\n1) We return extents for holes.  This isn\u0027t supposed to happen, we just don\u0027t\nreturn extents for holes and then userspace interprets the lack of an extent as\na hole.\n\n2) We sometimes don\u0027t set FIEMAP_EXTENT_LAST properly.  This is because we wait\nto see a EXTENT_FLAG_VACANCY flag on the em, but this won\u0027t happen if say we ask\nfiemap to map up to the last extent in a file, and there is nothing but holes up\nto the i_size.  To fix this we need to lookup the last extent in this file and\nsave the logical offset, so if we happen to try and map that extent we can be\nsure to set FIEMAP_EXTENT_LAST.\n\nWith this patch we now pass xfstest 225, which we never have before.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "619c8c763928841b1112e1d417f88bc1d44daecb",
      "tree": "23fc73cf043faac2cdb15a0b22e6e9e29a69797a",
      "parents": [
        "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon Nov 22 02:21:38 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:37:44 2010 -0500"
      },
      "message": "Btrfs - fix race between btrfs_get_sb() and umount\n\nWhen mounting a btrfs file system btrfs_test_super() may attempt to\nuse sb-\u003es_fs_info, the btrfs root, of a super block that is going away\nand that has had the btrfs root set to NULL in its -\u003eput_super(). But\nif the super block is going away it cannot be an existing super block\nso we can return false in this case.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bc1cbf1f86aa2501efa9ca637c736fce6bcc4b1d",
      "tree": "af17fcd439f67eafc534e894168b397c563e2366",
      "parents": [
        "0ed42a63f3edb144b091d9528401fce95c3c4d8d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Nov 23 19:50:59 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:00:07 2010 -0500"
      },
      "message": "Btrfs: update inode ctime when using links\n\nCurrently we fail xfstest 236 because we\u0027re not updating the inode ctime on\nlink.  This is a simple fix, and makes it so we pass 236 now.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0ed42a63f3edb144b091d9528401fce95c3c4d8d",
      "tree": "d98573473d916eecbeb949d45f8ac9b530440080",
      "parents": [
        "55a61d1d06a3dc443d0db8aaa613365dcb83b98a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 22 18:55:39 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 13:00:07 2010 -0500"
      },
      "message": "Btrfs: make sure new inode size is ok in fallocate\n\nWe have been failing xfstest 228 forever, because we don\u0027t check to make sure\nthe new inode size is acceptable as far as RLIMIT is concerned.  Just check to\nmake sure it\u0027s ok to create a inode with this new size and error out if not.\nWith this patch we now pass 228.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "55a61d1d06a3dc443d0db8aaa613365dcb83b98a",
      "tree": "39f59ec200674081b086f9e25393401d08848ffd",
      "parents": [
        "45f49bce99d008d6864a20324548f35936ba46fb"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Nov 22 18:50:32 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Nov 27 12:59:16 2010 -0500"
      },
      "message": "Btrfs: fix typo in fallocate to make it honor actual size\n\nThere is a typo in __btrfs_prealloc_file_range() where we set the i_size to\nactual_len/cur_offset, and then just set it to cur_offset again, and do the same\nwith btrfs_ordered_update_i_size().  This fixes it back to keeping i_size in a\nlocal variable and then updating i_size properly.  Tested this with\n\nxfs_io -F -f -c \"falloc 0 1\" -c \"pwrite 0 1\" foo\n\nstat\u0027ing foo gives us a size of 1 instead of 4096 like it was.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "45f49bce99d008d6864a20324548f35936ba46fb",
      "tree": "9bae14a5fa0b68573758dcc1aaaa176f4a62c6b8",
      "parents": [
        "a1b075d28da563c5e2325577f282c042494254ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:27:44 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:27:44 2010 -0500"
      },
      "message": "Btrfs: avoid NULL pointer deref in try_release_extent_buffer\n\nIf we fail to find a pointer in the radix tree, don\u0027t try\nto deref the NULL one we do have.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a1b075d28da563c5e2325577f282c042494254ba",
      "tree": "0699a0490e11efb6fc2b1a2e99fa6419e9e568fa",
      "parents": [
        "495e86779f4f319828bc10dfc0c9ac2161868077"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 20:36:11 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:10 2010 -0500"
      },
      "message": "Btrfs: make btrfs_add_nondir take parent inode as an argument\n\nEverybody who calls btrfs_add_nondir just passes in the dentry of the new file\nand then dereference dentry-\u003ed_parent-\u003ed_inode, but everybody who calls\nbtrfs_add_nondir() are already passed the parent\u0027s inode.  So instead of\ndereferencing dentry-\u003ed_parent, just make btrfs_add_nondir take the dir inode as\nan argument and pass that along so we don\u0027t have to worry about d_parent.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "495e86779f4f319828bc10dfc0c9ac2161868077",
      "tree": "62729f2b65c9565fadb551bd8d343d6c57d7cb85",
      "parents": [
        "6a912213046ecb6511fdf35531a0c7de3de963c9"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 20:36:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:09 2010 -0500"
      },
      "message": "Btrfs: hold i_mutex when calling btrfs_log_dentry_safe\n\nSince we walk up the path logging all of the parts of the inode\u0027s path, we need\nto hold i_mutex to make sure that the inode is not renamed while we\u0027re logging\neverything.  btrfs_log_dentry_safe does dget_parent and all of that jazz, but we\nmay get unexpected results if the rename changes the inode\u0027s location while\nwe\u0027re higher up the path logging those dentries, so do this for safety reasons.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6a912213046ecb6511fdf35531a0c7de3de963c9",
      "tree": "b745a07d0ad5c5bedf68c55739200093f9d96c1b",
      "parents": [
        "76195853903ca613ba722203db9b747d70478fc7"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Nov 20 09:48:00 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:09 2010 -0500"
      },
      "message": "Btrfs: use dget_parent where we can UPDATED\n\nThere are lots of places where we do dentry-\u003ed_parent-\u003ed_inode without holding\nthe dentry-\u003ed_lock.  This could cause problems with rename.  So instead we need\nto use dget_parent() and hold the reference to the parent as long as we are\ngoing to use it\u0027s inode and then dput it at the end.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nCc: raven@themaw.net\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76195853903ca613ba722203db9b747d70478fc7",
      "tree": "d3c7af7f141566a1ca2acfdf1efccd374b5e349f",
      "parents": [
        "2ede0daf01549cecf4bb0962c46dc47382047523"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 02:18:02 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:08 2010 -0500"
      },
      "message": "Btrfs: fix more ESTALE problems with NFS\n\nWhen creating new inodes we don\u0027t setup inode-\u003ei_generation.  So if we generate\nan fh with a newly created inode we save the generation of 0, but if we flush\nthe inode to disk and have to read it back when getting the inode on the server\nwe\u0027ll have the right i_generation, so gens wont match and we get ESTALE.  This\npatch properly sets inode-\u003ei_generation when we create the new inode and now I\u0027m\nno longer getting ESTALE.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2ede0daf01549cecf4bb0962c46dc47382047523",
      "tree": "3d02b4445b8657ac402a64772dd80ca517967557",
      "parents": [
        "0410c94aff109c02b6774a0ed00114987cda7ce5"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 18:54:54 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:08 2010 -0500"
      },
      "message": "Btrfs: handle NFS lookups properly\n\nPeople kept reporting NFS issues, specifically getting ESTALE alot.  I figured\nout how to reproduce the problem\n\nSERVER\nmkfs.btrfs /dev/sda1\nmount /dev/sda1 /mnt/btrfs-test\n\u003cadd /mnt/btrfs-test to /etc/exports\u003e\nbtrfs subvol create /mnt/btrfs-test/foo\nservice nfs start\n\nCLIENT\nmount server:/mnt/btrfs /mnt/test\ncd /mnt/test/foo\nls\n\nSERVER\necho 3 \u003e /proc/sys/vm/drop_caches\n\nCLIENT\nls\t\t\t\u003c-- get an ESTALE here\n\nThis is because the standard way to lookup a name in nfsd is to use readdir, and\nwhat it does is do a readdir on the parent directory looking for the inode of\nthe child.  So in this case the parent being / and the child being foo.  Well\nsubvols all have the same inode number, so doing a readdir of / looking for\ninode 256 will return \u0027.\u0027, which obviously doesn\u0027t match foo.  So instead we\nneed to have our own .get_name so that we can find the right name.\n\nOur .get_name will either lookup the inode backref or the root backref,\nwhichever we\u0027re looking for, and return the name we find.  Running the above\nreproducer with this patch results in everything acting the way its supposed to.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0410c94aff109c02b6774a0ed00114987cda7ce5",
      "tree": "d36f25febc48d836420acfa93f2b4b97b63c9ceb",
      "parents": [
        "f209561ad83c5ffd561dc4bc3a3c90b704fe9231"
      ],
      "author": {
        "name": "Mariusz Kozlowski",
        "email": "mk@lab.zgora.pl",
        "time": "Sat Nov 20 12:03:07 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:07 2010 -0500"
      },
      "message": "btrfs: make 1-bit signed fileds unsigned\n\nFixes these sparse warnings:\nfs/btrfs/ctree.h:811:17: error: dubious one-bit signed bitfield\nfs/btrfs/ctree.h:812:20: error: dubious one-bit signed bitfield\nfs/btrfs/ctree.h:813:19: error: dubious one-bit signed bitfield\n\nSigned-off-by: Mariusz Kozlowski \u003cmk@lab.zgora.pl\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f209561ad83c5ffd561dc4bc3a3c90b704fe9231",
      "tree": "9241e4251c8e73cdbb8b9e4abf279afd61694a8d",
      "parents": [
        "5f3888ff6f0b9dce60705765752b788a92557644"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 19 02:05:24 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:07 2010 -0500"
      },
      "message": "btrfs: Show device attr correctly for symlinks\n\nSymlinks and files of other types show different device numbers, though\nthey are on the same partition:\n\n $ touch tmp; ln -s tmp tmp2; stat tmp tmp2\n   File: `tmp\u0027\n   Size: 0         \tBlocks: 0          IO Block: 4096   regular empty file\n Device: 15h/21d\tInode: 984027      Links: 1\n --- snip ---\n   File: `tmp2\u0027 -\u003e `tmp\u0027\n   Size: 3         \tBlocks: 0          IO Block: 4096   symbolic link\n Device: 13h/19d\tInode: 984028      Links: 1\n\nReported-by: Toke Høiland-Jørgensen \u003ctoke@toke.dk\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5f3888ff6f0b9dce60705765752b788a92557644",
      "tree": "c7745507d85f68b188f0c9b11cc6f783f0d0cb86",
      "parents": [
        "2a6b8daedaf3682bed3fc1d4e2390491f6e19c49"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 19 01:36:34 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:06 2010 -0500"
      },
      "message": "btrfs: Set file size correctly in file clone\n\nSet src_offset \u003d 0, src_length \u003d 20K, dest_offset \u003d 20K. And the\noriginal filesize of the dest file \u0027file2\u0027 is 30K:\n\n  # ls -l /mnt/file2\n  -rw-r--r-- 1 root root 30720 Nov 18 16:42 /mnt/file2\n\nNow clone file1 to file2, the dest file should be 40K, but it\nstill shows 30K:\n\n  # ls -l /mnt/file2\n  -rw-r--r-- 1 root root 30720 Nov 18 16:42 /mnt/file2\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a6b8daedaf3682bed3fc1d4e2390491f6e19c49",
      "tree": "76f418aa17a1e3e690d5c1fb164e0c4b96ca1e8d",
      "parents": [
        "0de90876c6cb774d4a424dafc1fc9ec50071b81b"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Nov 19 01:36:10 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:05 2010 -0500"
      },
      "message": "btrfs: Check if dest_offset is block-size aligned before cloning file\n\nWe\u0027ve done the check for src_offset and src_length, and We should\nalso check dest_offset, otherwise we\u0027ll corrupt the destination\nfile:\n\n  (After cloning file1 to file2 with unaligned dest_offset)\n  # cat /mnt/file2\n  cat: /mnt/file2: Input/output error\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0de90876c6cb774d4a424dafc1fc9ec50071b81b",
      "tree": "a3edae0a3873c959a94f45ee035de83bb85c379c",
      "parents": [
        "6f33434850ed87dc5e56b60ebbad3d3cf405f296"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Nov 19 13:40:41 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:05 2010 -0500"
      },
      "message": "Btrfs: handle the space_cache option properly\n\nWhen I added the clear_cache option I screwed up and took the break out of\nthe space_cache case statement, so whenever you mount with space_cache you also\nget clear_cache, which does you no good if you say set space_cache in fstab so\nit always gets set.  This patch adds the break back in properly.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6f33434850ed87dc5e56b60ebbad3d3cf405f296",
      "tree": "e70433c2c1fe59180bb8a92341f73931eff7ddb0",
      "parents": [
        "e65e1535542931e51189832264cd282e5899e4b9"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Fri Nov 12 23:17:56 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:04 2010 -0500"
      },
      "message": "btrfs: Fix early enospc because \u0027unused\u0027 calculated with wrong sign.\n\n\u0027unused\u0027 calculated with wrong sign in reserve_metadata_bytes().\nThis might have lead to unwanted over-reservations.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e65e1535542931e51189832264cd282e5899e4b9",
      "tree": "cc3cda0f658cad9f69c351d0735150958a1b0147",
      "parents": [
        "88f794ede7fadd4b63135b94d1561c1f2d5eb5f5"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Nov 22 03:04:43 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:04 2010 -0500"
      },
      "message": "btrfs: fix panic caused by direct IO\n\nbtrfs paniced when we write \u003e64KB data by direct IO at one time.\n\nReproduce steps:\n # mkfs.btrfs /dev/sda5 /dev/sda6\n # mount /dev/sda5 /mnt\n # dd if\u003d/dev/zero of\u003d/mnt/tmpfile bs\u003d100K count\u003d1 oflag\u003ddirect\n\nThen btrfs paniced:\nmapping failed logical 1103155200 bio len 69632 len 12288\n------------[ cut here ]------------\nkernel BUG at fs/btrfs/volumes.c:3010!\n[SNIP]\nPid: 1992, comm: btrfs-worker-0 Not tainted 2.6.37-rc1 #1 D2399/PRIMERGY\nRIP: 0010:[\u003cffffffffa03d1462\u003e]  [\u003cffffffffa03d1462\u003e] btrfs_map_bio+0x202/0x210 [btrfs]\n[SNIP]\nCall Trace:\n [\u003cffffffffa03ab3eb\u003e] __btrfs_submit_bio_done+0x1b/0x20 [btrfs]\n [\u003cffffffffa03a35ff\u003e] run_one_async_done+0x9f/0xb0 [btrfs]\n [\u003cffffffffa03d3d20\u003e] run_ordered_completions+0x80/0xc0 [btrfs]\n [\u003cffffffffa03d45a4\u003e] worker_loop+0x154/0x5f0 [btrfs]\n [\u003cffffffffa03d4450\u003e] ? worker_loop+0x0/0x5f0 [btrfs]\n [\u003cffffffffa03d4450\u003e] ? worker_loop+0x0/0x5f0 [btrfs]\n [\u003cffffffff81083216\u003e] kthread+0x96/0xa0\n [\u003cffffffff8100cec4\u003e] kernel_thread_helper+0x4/0x10\n [\u003cffffffff81083180\u003e] ? kthread+0x0/0xa0\n [\u003cffffffff8100cec0\u003e] ? kernel_thread_helper+0x0/0x10\n\nWe fix this problem by splitting bios when we submit bios.\n\nReported-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "88f794ede7fadd4b63135b94d1561c1f2d5eb5f5",
      "tree": "04e4fede4aa520bd4dfb7de7ab28f5ad38d215cc",
      "parents": [
        "0c56fa9662927354255f2f64617d1de61fc03db9"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Nov 22 03:02:55 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:03 2010 -0500"
      },
      "message": "btrfs: cleanup duplicate bio allocating functions\n\nextent_bio_alloc() and compressed_bio_alloc() are similar, cleanup\nsimilar source code.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0c56fa9662927354255f2f64617d1de61fc03db9",
      "tree": "d3e4afe5596c6ac844b8f84fbb5cd89c9a8d0cf8",
      "parents": [
        "784b4e29a26617589edd290dd2919735e190c06e"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Mon Nov 22 03:01:39 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:02 2010 -0500"
      },
      "message": "btrfs: fix free dip and dip-\u003ecsums twice\n\nbio_endio() will free dip and dip-\u003ecsums, so dip and dip-\u003ecsums twice will\nbe freed twice. Fix it.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "784b4e29a26617589edd290dd2919735e190c06e",
      "tree": "1c1806afb3aa5a7f82b272b8b38dc1e13e45d16b",
      "parents": [
        "6418c96107a2b399848bb8cfc6e29f11ca74fb94"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:20:49 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 21 22:26:02 2010 -0500"
      },
      "message": "Btrfs: add migrate page for metadata inode\n\nMigrate page will directly call the btrfs btree writepage function,\nwhich isn\u0027t actually allowed.\n\nOur writepage assumes that you have locked the extent_buffer and\nflagged the block as written.  Without doing these steps, we can\ncorrupt metadata blocks.\n\nA later commit will remove the btree writepage function since\nit is really only safely used internally by btrfs.  We\nuse writepages for everything else.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "37004c42f7240035bc2726c340c4efa726b4818e",
      "tree": "f0c9c9b2d21a1258939b99ec37a2d11396583ea6",
      "parents": [
        "731edacb7567c15f25b1fccac18a203bd432ae5e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "btrfs: close_bdev_exclusive() should use the same @flags as the matching open_bdev_exclusive()\n\nIn the failure path of __btrfs_open_devices(), close_bdev_exclusive()\nis called with @flags which doesn\u0027t match the one used during\nopen_bdev_exclusive().  Fix it.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "925d169f5b86fe57e2f5264ea574cce9a89b719d",
      "tree": "241d3156b427c6398bd3fc5efa9108635d0e189b",
      "parents": [
        "cdf01dd5443d0befc8c6a32cb2e3d2f568fd2558",
        "6418c96107a2b399848bb8cfc6e29f11ca74fb94"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 09:05:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 09:05:48 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (39 commits)\n  Btrfs: deal with errors from updating the tree log\n  Btrfs: allow subvol deletion by unprivileged user with -o user_subvol_rm_allowed\n  Btrfs: make SNAP_DESTROY async\n  Btrfs: add SNAP_CREATE_ASYNC ioctl\n  Btrfs: add START_SYNC, WAIT_SYNC ioctls\n  Btrfs: async transaction commit\n  Btrfs: fix deadlock in btrfs_commit_transaction\n  Btrfs: fix lockdep warning on clone ioctl\n  Btrfs: fix clone ioctl where range is adjacent to extent\n  Btrfs: fix delalloc checks in clone ioctl\n  Btrfs: drop unused variable in block_alloc_rsv\n  Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n  Btrfs: Fix variables set but not read (bugs found by gcc 4.6)\n  Btrfs: Use ERR_CAST helpers\n  Btrfs: use memdup_user helpers\n  Btrfs: fix raid code for removing missing drives\n  Btrfs: Switch the extent buffer rbtree into a radix tree\n  Btrfs: restructure try_release_extent_buffer()\n  Btrfs: use the flusher threads for delalloc throttling\n  Btrfs: tune the chunk allocation to 5% of the FS as metadata\n  ...\n\nFix up trivial conflicts in fs/btrfs/super.c and fs/fs-writeback.c, and\nremove use of INIT_RCU_HEAD in fs/btrfs/extent_io.c (that init macro was\nuseless and removed in commit 5e8067adfdba: \"rcu head remove init\")\n"
    },
    {
      "commit": "6418c96107a2b399848bb8cfc6e29f11ca74fb94",
      "tree": "38064798bde148760a7a3b555c0eb097bfd29fb2",
      "parents": [
        "4260f7c7516f4c209cf0ca34fda99cc9a0847772"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Oct 30 07:34:24 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Oct 30 07:34:24 2010 -0400"
      },
      "message": "Btrfs: deal with errors from updating the tree log\n\nDuring unlink we remove any references to the inode from\nthe tree log.  It can return -ENOENT and other errors,\nand this changes the unlink code to deal with it.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4260f7c7516f4c209cf0ca34fda99cc9a0847772",
      "tree": "7feb5ab81d074b17a7c5b12bcc019c2e1bb010e2",
      "parents": [
        "531cb13f1e417c060b54f979e1659ecd69bea650"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:46:43 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:42:10 2010 -0400"
      },
      "message": "Btrfs: allow subvol deletion by unprivileged user with -o user_subvol_rm_allowed\n\nAdd a mount option user_subvol_rm_allowed that allows users to delete a\n(potentially non-empty!) subvol when they would otherwise we allowed to do\nan rmdir(2).  We duplicate the may_delete() checks from the core VFS code\nto implement identical security checks (minus the directory size check).\nWe additionally require that the user has write+exec permission on the\nsubvol root inode.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "531cb13f1e417c060b54f979e1659ecd69bea650",
      "tree": "6b421ac1ddf7cad271cd0c767f0c19e6c4f826df",
      "parents": [
        "72fd032e94240d001b1d22f2c1dfd2592b02e44e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:42:10 2010 -0400"
      },
      "message": "Btrfs: make SNAP_DESTROY async\n\nThere is no reason to force an immediate commit when deleting a snapshot.\nUsers have some expectation that space from a deleted snapshot be freed\nimmediately, but even if we do commit the reclaim is a background process.\n\nIf users _do_ want the deletion to be durable, they can call \u0027sync\u0027.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "72fd032e94240d001b1d22f2c1dfd2592b02e44e",
      "tree": "7671ea5585f79a8cecc9708e869aa37e24eb74de",
      "parents": [
        "462045928bda777c86919a396a42991fcf235378"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 21:41:57 2010 -0400"
      },
      "message": "Btrfs: add SNAP_CREATE_ASYNC ioctl\n\nCreate a snap without waiting for it to commit to disk.  The ioctl is\nordered such that subsequent operations will not be contained by the\ncreated snapshot, and the commit is initiated, but the ioctl does not\nwait for the snapshot to commit to disk.\n\nWe return the specific transid to userspace so that an application can wait\nfor this specific snapshot creation to commit via the WAIT_SYNC ioctl.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "462045928bda777c86919a396a42991fcf235378",
      "tree": "c2b12ff8e9ef1951b5960b853034bd4165578f99",
      "parents": [
        "bb9c12c945cbd1b0eaa1589546dde772ccabeeba"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:41:32 2010 -0400"
      },
      "message": "Btrfs: add START_SYNC, WAIT_SYNC ioctls\n\nSTART_SYNC will start a sync/commit, but not wait for it to\ncomplete.  Any modification started after the ioctl returns is\nguaranteed not to be included in the commit.  If a non-NULL\npointer is passed, the transaction id will be returned to\nuserspace.\n\nWAIT_SYNC will wait for any in-progress commit to complete.  If a\ntransaction id is specified, the ioctl will block and then\nreturn (success) when the specified transaction has committed.\nIf it has already committed when we call the ioctl, it returns\nimmediately.  If the specified transaction doesn\u0027t exist, it\nreturns EINVAL.\n\nIf no transaction id is specified, WAIT_SYNC will wait for the\ncurrently committing transaction to finish it\u0027s commit to disk.\nIf there is no currently committing transaction, it returns\nsuccess.\n\nThese ioctls are useful for applications which want to impose an\nordering on when fs modifications reach disk, but do not want to\nwait for the full (slow) commit process to do so.\n\nPicky callers can take the transid returned by START_SYNC and\nfeed it to WAIT_SYNC, and be certain to wait only as long as\nnecessary for the transaction _they_ started to reach disk.\n\nSloppy callers can START_SYNC and WAIT_SYNC without a transid,\nand provided they didn\u0027t wait too long between the calls, they\nwill get the same result.  However, if a second commit starts\nbefore they call WAIT_SYNC, they may end up waiting longer for\nit to commit as well.  Even so, a START_SYNC+WAIT_SYNC still\nguarantees that any operation completed before the START_SYNC\nreaches disk.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bb9c12c945cbd1b0eaa1589546dde772ccabeeba",
      "tree": "92f0bb01dce5125547c590d7c06b3e02d5c9d4fa",
      "parents": [
        "99d16cbcaf694c803a1b6bf7e851694ffe1d255d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "message": "Btrfs: async transaction commit\n\nAdd support for an async transaction commit that is ordered such that any\nsubsequent operations will join the following transaction, but does not\nwait until the current commit is fully on disk.  This avoids much of the\nlatency associated with the btrfs_commit_transaction for callers concerned\nwith serialization and not safety.\n\nThe wait_for_unblock flag controls whether we wait for the \u0027middle\u0027 portion\nof commit_transaction to complete, which is necessary if the caller expects\nsome of the modifications contained in the commit to be available (this is\nthe case for subvol/snapshot creation).\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "99d16cbcaf694c803a1b6bf7e851694ffe1d255d",
      "tree": "dacf7f8eca75dc0d92566b5d3876f3efe8196e35",
      "parents": [
        "fccdae435c1b295cca546f23f6f43126a28ffac3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:34 2010 -0400"
      },
      "message": "Btrfs: fix deadlock in btrfs_commit_transaction\n\nWe calculate timeout (either 1 or MAX_SCHEDULE_TIMEOUT) based on whether\nnum_writers \u003e 1 or should_grow at the top of the loop.  Then, much much\nlater, we wait for that timeout if either num_writers or should_grow is\ntrue.  However, it\u0027s possible for a racing process (calling\nbtrfs_end_transaction()) to decrement num_writers such that we wait\nforever instead of for 1.\n\nFix this by deciding how long to wait when we wait.  Include a smp_mb()\nbefore checking if the waitqueue is active to ensure the num_writers\nis visible.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fccdae435c1b295cca546f23f6f43126a28ffac3",
      "tree": "e5c84325114cd554c62e7e275e85596200b45d19",
      "parents": [
        "050006a753bab8ba05f2113cc57ba49398cd5521"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "message": "Btrfs: fix lockdep warning on clone ioctl\n\nI\u0027m no lockdep expert, but this appears to make the lockdep warning go\naway for the i_mutex locking in the clone ioctl.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "050006a753bab8ba05f2113cc57ba49398cd5521",
      "tree": "43b8bdc0ce9f76d2726096dbfbc72a04c141afa6",
      "parents": [
        "9a019196ecaa57780141ef5d1f0bb31050d6ed5b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "message": "Btrfs: fix clone ioctl where range is adjacent to extent\n\nWe had an edge case issue where the requested range was just\nfollowing an existing extent. Instead of skipping to the next\nextent, we used the previous one which lead to having zero\nsized extents.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9a019196ecaa57780141ef5d1f0bb31050d6ed5b",
      "tree": "abd838acff1d6407d2d91efeb38e76e53271aadb",
      "parents": [
        "d8e39c457bc1ca2a7304bc086c7b0f0c10854921"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:37:33 2010 -0400"
      },
      "message": "Btrfs: fix delalloc checks in clone ioctl\n\nThe lookup_first_ordered_extent() was done on the wrong inode, and the\n-\u003edelalloc_bytes test was wrong, as the following\nbtrfs_wait_ordered_range() would only invoke a range write and wouldn\u0027t\nwrite the entire file data range. Also, a bad parameter was passed to\nbtrfs_wait_ordered_range().\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d8e39c457bc1ca2a7304bc086c7b0f0c10854921",
      "tree": "da2f37292b8021dfe90aa9803ee85f9f95acedf5",
      "parents": [
        "559af8211433b8c0b20e6c43c61409cb9c9c2996"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:17:41 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:17:41 2010 -0400"
      },
      "message": "Btrfs: drop unused variable in block_alloc_rsv\n\nThe alloc_target variable is not really used.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "559af8211433b8c0b20e6c43c61409cb9c9c2996",
      "tree": "702ebd4c4f5b610daa36f65d814a518356a9a46b",
      "parents": [
        "411fc6bcef54f828a5458f4730c68abdf13c6bf0"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:37 2010 -0400"
      },
      "message": "Btrfs: cleanup warnings from gcc 4.6 (nonbugs)\n\nThese are all the cases where a variable is set, but not read which are\nnot bugs as far as I can see, but simply leftovers.\n\nStill needs more review.\n\nFound by gcc 4.6\u0027s new warnings\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "411fc6bcef54f828a5458f4730c68abdf13c6bf0",
      "tree": "89b91cd7e0d7633e9d6e386e388bd0493165f66c",
      "parents": [
        "d0b678cb0a26783ab7238784f1e7e608e5caafa3"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Fri Oct 29 15:14:31 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:31 2010 -0400"
      },
      "message": "Btrfs: Fix variables set but not read (bugs found by gcc 4.6)\n\nThese are all the cases where a variable is set, but not\nread which are really bugs.\n\n- Couple of incorrect error handling fixed.\n- One incorrect use of a allocation policy\n- Some other things\n\nStill needs more review.\n\nFound by gcc 4.6\u0027s new warnings.\n\n[akpm@linux-foundation.org: fix build.  Might have been bitrot]\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0b678cb0a26783ab7238784f1e7e608e5caafa3",
      "tree": "a912b938a6558550960f6b07139bd119d86f89eb",
      "parents": [
        "2354d08fe9aeec3e451b85cb5387a6b28dbca0b1"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Oct 29 15:14:23 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:23 2010 -0400"
      },
      "message": "Btrfs: Use ERR_CAST helpers\n\nUse ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more\nclear what is the purpose of the operation, which otherwise looks like a\nno-op.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\nT x;\nidentifier f;\n@@\n\nT f (...) { \u003c+...\n- ERR_PTR(PTR_ERR(x))\n+ x\n ...+\u003e }\n\n@@\nexpression x;\n@@\n\n- ERR_PTR(PTR_ERR(x))\n+ ERR_CAST(x)\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2354d08fe9aeec3e451b85cb5387a6b28dbca0b1",
      "tree": "7a3f43dfac81fc54faf231400a4b871ca24bb031",
      "parents": [
        "18e503d695ff8ff9a43768555aa74575bf6b77f3"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri Oct 29 15:14:18 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 15:14:18 2010 -0400"
      },
      "message": "Btrfs: use memdup_user helpers\n\nUse memdup_user when user data is immediately copied into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to,size,flag;\nposition p;\nidentifier l1,l2;\n@@\n\n-  to \u003d \\(kmalloc@p\\|kzalloc@p\\)(size,flag);\n+  to \u003d memdup_user(from,size);\n   if (\n-      to\u003d\u003dNULL\n+      IS_ERR(to)\n                 || ...) {\n   \u003c+... when !\u003d goto l1;\n-  -ENOMEM\n+  PTR_ERR(to)\n   ...+\u003e\n   }\n-  if (copy_from_user(to, from, size) !\u003d 0) {\n-    \u003c+... when !\u003d goto l2;\n-    -EFAULT\n-    ...+\u003e\n-  }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "18e503d695ff8ff9a43768555aa74575bf6b77f3",
      "tree": "c17c34762dcf9988e9739ae0cdf5628885bf8828",
      "parents": [
        "19fe0a8b787d7c7f9318975b5a8c6e7e5e54e925"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Oct 28 15:30:42 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Oct 29 11:25:46 2010 -0400"
      },
      "message": "Btrfs: fix raid code for removing missing drives\n\nWhen btrfs is mounted in degraded mode, it has some internal structures\nto track the missing devices.  This missing device is setup as readonly,\nbut the mapping code can get upset when we try to write to it.\n\nThis changes the mapping code to return -EIO instead of oops when we try\nto write to the readonly device.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "19fe0a8b787d7c7f9318975b5a8c6e7e5e54e925"
}
