)]}'
{
  "log": [
    {
      "commit": "567a45e917343c952806bb9f5c19aab0139bd519",
      "tree": "b1d6dac31a3a2836d24662139f21bb1ddc2522d3",
      "parents": [
        "e755d9ab387c4c2401dce5b6f435432a829f41cb",
        "e65cbb94e036058128a5dec6398be2fd64cf88ba"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 13:43:49 2011 -0500"
      },
      "message": "Merge branch \u0027for-chris\u0027 of http://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into integration\n\nConflicts:\n\tfs/btrfs/inode.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "660d3f6cde552323578b85fc5a09a6742f1fe804",
      "tree": "7273af0b2a6fe7f9be685cb0586534802c807924",
      "parents": [
        "22c44fe65adacd20a174f3f54686509ee94ef7be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 09 11:18:51 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Dec 15 11:04:22 2011 -0500"
      },
      "message": "Btrfs: fix how we do delalloc reservations and how we free reservations on error\n\nRunning xfstests 269 with some tracing my scripts kept spitting out errors about\nreleasing bytes that we didn\u0027t actually have reserved.  This took me down a huge\nrabbit hole and it turns out the way we deal with reserved_extents is wrong,\nwe need to only be setting it if the reservation succeeds, otherwise the free()\nmethod will come in and unreserve space that isn\u0027t actually reserved yet, which\ncan lead to other warnings and such.  The math was all working out right in the\nend, but it caused all sorts of other issues in addition to making my scripts\nyell and scream and generally make it impossible for me to track down the\noriginal issue I was looking for.  The other problem is with our error handling\nin the reservation code.  There are two cases that we need to deal with\n\n1) We raced with free.  In this case free won\u0027t free anything because csum_bytes\nis modified before we dro the lock in our reservation path, so free rightly\ndoesn\u0027t release any space because the reservation code may be depending on that\nreservation.  However if we fail, we need the reservation side to do the free at\nthat point since that space is no longer in use.  So as it stands the code was\ndoing this fine and it worked out, except in case #2\n\n2) We don\u0027t race with free.  Nobody comes in and changes anything, and our\nreservation fails.  In this case we didn\u0027t reserve anything anyway and we just\nneed to clean up csum_bytes but not free anything.  So we keep track of\ncsum_bytes before we drop the lock and if it hasn\u0027t changed we know we can just\ndecrement csum_bytes and carry on.\n\nBecause of the case where we can race with free()\u0027s since we have to drop our\nspin_lock to do the reservation, I\u0027m going to serialize all reservations with\nthe i_mutex.  We already get this for free in the heavy use paths, truncate and\nfile write all hold the i_mutex, just needed to add it to page_mkwrite and\nvarious ioctl/balance things.  With this patch my space leak scripts no longer\nscream bloody murder.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "306424cc880a0fbbdc99eee1f43d056a301a180f",
      "tree": "7c6b3b851fcd325c65724f3a7875311407998a6d",
      "parents": [
        "f8e9e0b07be0464e12366631da3da73a1a62449c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 14 20:12:02 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 15 10:50:37 2011 -0500"
      },
      "message": "Btrfs: fix ctime update of on-disk inode\n\nTo reproduce the bug:\n\n    # touch /mnt/tmp\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:23.412105981 +0800\n    # chattr +i /mnt/tmp\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:43.198105295 +0800\n    # umount /mnt\n    # mount /dev/loop1 /mnt\n    # stat /mnt/tmp | grep Change\n    Change: 2011-12-09 09:32:23.412105981 +0800\n\nWe should update ctime of in-memory inode before calling\nbtrfs_update_inode().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ece7d20e8be6730fbb29f4550de6b19b1a3a9387",
      "tree": "7c01770040d8dd86548610679ab629683ec94017",
      "parents": [
        "aa38a711a893accf5b5192f3d705a120deaa81e0"
      ],
      "author": {
        "name": "Mike Fleetwood",
        "email": "mike.fleetwood@googlemail.com",
        "time": "Fri Nov 18 18:55:01 2011 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Nov 30 18:46:04 2011 +0100"
      },
      "message": "Btrfs: Don\u0027t error on resizing FS to same size\n\nIt seems overly harsh to fail a resize of a btrfs file system to the\nsame size when a shrink or grow would succeed.  User app GParted trips\nover this error.  Allow it by bypassing the shrink or grow operation.\n\nSigned-off-by: Mike Fleetwood \u003cmike.fleetwood@googlemail.com\u003e\n"
    },
    {
      "commit": "5bb1468238e20b15921909e9f9601e945f03bac7",
      "tree": "fdd730e4e974ce07dfc6f40be47f512178f3ff5c",
      "parents": [
        "fadc0d8be4dfca80f6c568bc5874931893c6709b"
      ],
      "author": {
        "name": "Arnd Hannemann",
        "email": "arnd@arndnet.de",
        "time": "Sun Nov 20 07:33:38 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:16 2011 -0500"
      },
      "message": "Btrfs: prefix resize related printks with btrfs:\n\nFor the user it is confusing to find something like:\n[10197.627710] new size for /dev/mapper/vg0-usr_share is 3221225472\nin kernel log, because it doesn\u0027t point directly to btrfs.\n\nThis patch prefixes those messages with \"btrfs:\" like other btrfs\nrelated printks.\n\nSigned-off-by: Arnd Hannemann \u003carnd@arndnet.de\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "745c4d8e160afaf6c75e887c27ea4b75c8142b26",
      "tree": "b1e5b3725654f4119f06346cef3a1c94d34accf8",
      "parents": [
        "387125fc722a8ed432066b85a552917343bdafca"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Sun Nov 20 07:31:57 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 20 07:42:13 2011 -0500"
      },
      "message": "btrfs: Fix up 32/64-bit compatibility for new ioctls\n\n This patch casts to unsigned long before casting to a pointer and fixes\n the following warnings:\nfs/btrfs/extent_io.c:2289:20: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2933:37: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\nfs/btrfs/ioctl.c:2937:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/ioctl.c:3020:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/scrub.c:275:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]\nfs/btrfs/backref.c:686:27: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "740c3d226cbba6cd6a32adfb66809c94938f3e57",
      "tree": "375a5d2ee3bdc66f29e69e99c3691c3200407820",
      "parents": [
        "806468f8bf76a3cb2b626dd282946a6c9c0a50f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 02 15:48:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:08:49 2011 -0500"
      },
      "message": "Btrfs: fix the new inspection ioctls for 32 bit compat\n\nThe new ioctls to follow backrefs are not clean for 32/64 bit\ncompat.  This reworks them for u64s everywhere.  They are brand new, so\nthere are no problems with changing the interface now.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6c41761fc6efe1503103a1afe03a6635c0b5d4ec",
      "tree": "08ad34d43aac48e8f8143a0b1fa07141df8f202a",
      "parents": [
        "c8174313a8102e874aaa321e2fc4c7c460a87151"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 15:41:04 2011 +0200"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:04:01 2011 -0500"
      },
      "message": "btrfs: separate superblock items out of fs_info\n\nfs_info has now ~9kb, more than fits into one page. This will cause\nmount failure when memory is too fragmented. Top space consumers are\nsuper block structures super_copy and super_for_commit, ~2.8kb each.\nAllocate them dynamically. fs_info will be ~3.5kb. (measured on x86_64)\n\nAdd a wrapper for freeing fs_info and all of it\u0027s dynamically allocated\nmembers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "a81d3b1ba2f5faae28ba7a092c7598673fa02ac2",
      "tree": "8301fefcd9f3d45be9d0030456a86bca5b9ff061",
      "parents": [
        "afd582ac8f10382002a72b4d17d9c2db328ed8b8",
        "f9d9ef62cd3ecbd6cbb7957a253c1e81f69d5586"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:58 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:58 2011 +0200"
      },
      "message": "Merge branch \u0027hotfixes-20111024/josef/for-chris\u0027 into btrfs-next-stable\n"
    },
    {
      "commit": "afd582ac8f10382002a72b4d17d9c2db328ed8b8",
      "tree": "91246c1296c06cc0d5add8d10452e7fb110ed920",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96",
        "016fc6a63e465d5b94e4028f6d05d9703e195428"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:57 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon Oct 24 14:47:57 2011 +0200"
      },
      "message": "Merge remote-tracking branch \u0027remotes/josef/for-chris\u0027 into btrfs-next-stable\n"
    },
    {
      "commit": "f4c697e6406da5dd445eda8d923c53e1138793dd",
      "tree": "a572fcd0b9db22177d74c8fd3276ccb6a05c028c",
      "parents": [
        "008873eafbc77deb1702aedece33756c58486c6a"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Sep 05 16:34:54 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:40 2011 +0200"
      },
      "message": "btrfs: return EINVAL if start \u003e total_bytes in fitrim ioctl\n\nWe should retirn EINVAL if the start is beyond the end of the file\nsystem in the btrfs_ioctl_fitrim(). Fix that by adding the appropriate\ncheck for it.\n\nAlso in the btrfs_trim_fs() it is possible that len+start might overflow\nif big values are passed. Fix it by decrementing the len so that start+len\nis equal to the file system size in the worst case.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\n"
    },
    {
      "commit": "008873eafbc77deb1702aedece33756c58486c6a",
      "tree": "2b578bfdb47f8351f33d8ebf29714d4f2e4b15f6",
      "parents": [
        "83c8c9bde0add721f7509aa446455183b040b931"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:57:07 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:39 2011 +0200"
      },
      "message": "Btrfs: honor extent thresh during defragmentation\n\nWe won\u0027t defrag an extent, if it\u0027s bigger than the threshold we\nspecified and there\u0027s no small extent before it, but actually\nthe code doesn\u0027t work this way.\n\nThere are three bugs:\n\n- When should_defrag_range() decides we should keep on defragmenting\n  an extent, last_len is not incremented. (old bug)\n\n- The length that passes to should_defrag_range() is not the length\n  we\u0027re going to defrag. (new bug)\n\n- We always defrag 256K bytes data, and a big extent can be part of\n  this range. (new bug)\n\nFor a file with 4 extents:\n\n        | 4K | 4K | 256K | 256K |\n\nThe result of defrag with (the default) 256K extent thresh should be:\n\n        | 264K | 256K |\n\nbut with those bugs, we\u0027ll get:\n\n        | 520K |\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "5ca496604b5975d371bb669ee6c2394bcbea818f",
      "tree": "6a99818b0c54b71c706206bf8981e807e2b0a99b",
      "parents": [
        "151a31b25e5c941bdd9fdefed650effca223c716"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:56:55 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:37 2011 +0200"
      },
      "message": "Btrfs: fix wrong max_to_defrag in btrfs_defrag_file()\n\nIt\u0027s off-by-one, and thus we may skip the last page while defragmenting.\n\nAn example case:\n\n  # create /mnt/file with 2 4K file extents\n  # btrfs fi defrag /mnt/file\n  # sync\n  # filefrag /mnt/file\n  /mnt/file: 2 extents found\n\nSo it\u0027s not defragmented.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "151a31b25e5c941bdd9fdefed650effca223c716",
      "tree": "60c0888c247601fad2b550885c5b430f1fbf02e0",
      "parents": [
        "cbcc83265d929ac71553c1b5dafdb830171af947"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:56:39 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:35 2011 +0200"
      },
      "message": "Btrfs: use i_size_read() in btrfs_defrag_file()\n\nDon\u0027t use inode-\u003ei_size directly, since we\u0027re not holding i_mutex.\n\nThis also fixes another bug, that i_size can change after it\u0027s checked\nagainst 0 and then (i_size - 1) can be negative.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "cbcc83265d929ac71553c1b5dafdb830171af947",
      "tree": "4628b3eaf8e6d20681814d23a15ba174ae69ccb9",
      "parents": [
        "60ccf82f5b6e26e10d41783464ca469c070c7d49"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Sep 02 15:56:25 2011 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:34 2011 +0200"
      },
      "message": "Btrfs: fix defragmentation regression\n\nThere\u0027s an off-by-one bug:\n\n  # create a file with lots of 4K file extents\n  # btrfs fi defrag /mnt/file\n  # sync\n  # filefrag -v /mnt/file\n  Filesystem type is: 9123683e\n  File size of /mnt/file is 1228800 (300 blocks, blocksize 4096)\n   ext logical physical expected length flags\n     0       0     3372              64\n     1      64     3136     3435      1\n     2      65     3436     3136     64\n     3     129     3201     3499      1\n     4     130     3500     3201     64\n     5     194     3266     3563      1\n     6     195     3564     3266     64\n     7     259     3331     3627      1\n     8     260     3628     3331     40 eof\n\nAfter this patch:\n\n  ...\n  # filefrag -v /mnt/file\n  Filesystem type is: 9123683e\n  File size of /mnt/file is 1228800 (300 blocks, blocksize 4096)\n   ext logical physical expected length flags\n     0       0     3372             300 eof\n  /mnt/file: 1 extent found\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "60ccf82f5b6e26e10d41783464ca469c070c7d49",
      "tree": "b99794e4dc34d6c9f4e51e7ec4def4946055b9c5",
      "parents": [
        "84850e8d8a5ec7b9d3c47d224e9a10c9da52ff1b"
      ],
      "author": {
        "name": "Diego Calleja",
        "email": "diegocg@gmail.com",
        "time": "Thu Sep 01 16:33:57 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Oct 20 18:10:33 2011 +0200"
      },
      "message": "btrfs: fix memory leak in btrfs_defrag_file\n\nkmemleak found this:\nunreferenced object 0xffff8801b64af968 (size 512):\n  comm \"btrfs-cleaner\", pid 3317, jiffies 4306810886 (age 903.272s)\n  hex dump (first 32 bytes):\n    00 82 01 07 00 ea ff ff c0 83 01 07 00 ea ff ff  ................\n    80 82 01 07 00 ea ff ff c0 87 01 07 00 ea ff ff  ................\n  backtrace:\n    [\u003cffffffff816875cc\u003e] kmemleak_alloc+0x5c/0xc0\n    [\u003cffffffff8114aec3\u003e] kmem_cache_alloc_trace+0x163/0x240\n    [\u003cffffffff8127a290\u003e] btrfs_defrag_file+0xf0/0xb20\n    [\u003cffffffff8125d9a5\u003e] btrfs_run_defrag_inodes+0x165/0x210\n    [\u003cffffffff812479d7\u003e] cleaner_kthread+0x177/0x190\n    [\u003cffffffff81075c7d\u003e] kthread+0x8d/0xa0\n    [\u003cffffffff816af5f4\u003e] kernel_thread_helper+0x4/0x10\n    [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\n\"pages\" is not always freed. Fix it removing the unnecesary additional return.\n\nSigned-off-by: Diego Calleja \u003cdiegocg@gmail.com\u003e\n"
    },
    {
      "commit": "e27425d614d68daa08f60735982a7c3a0230e855",
      "tree": "7f06f5576552498dd902860d77564436a2ef1606",
      "parents": [
        "2bf64758fd6290797a5ce97d4b9c698a4ed1cbad"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Sep 27 11:01:30 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:50 2011 -0400"
      },
      "message": "Btrfs: only inherit btrfs specific flags when creating files\n\nXfstests 79 was failing because we were inheriting the S_APPEND flag when we\nweren\u0027t supposed to.  There isn\u0027t any specific documentation on this so I\u0027m\ntaking the test as the standard of how things work, and having S_APPEND set on a\ndirectory doesn\u0027t mean that S_APPEND gets inherited by its children according to\nthis test.  So only inherit btrfs specific things.  This will let us set\ncompress/nocompress on specific directories and everything in the directories\nwill inherit this flag, same with nodatacow.  With this patch test 79 passes.\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3b16a4e3c355ee3c790473decfcf83d4faeb8ce0",
      "tree": "5c3dad941468cf6952623cc18d6b1e682ee3f264",
      "parents": [
        "455757c322cc0a0f2a692c5625dd88aaf6a7b889"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Sep 21 15:05:58 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Oct 19 15:12:45 2011 -0400"
      },
      "message": "Btrfs: use the inode\u0027s mapping mask for allocating pages\n\nJohannes pointed out we were allocating only kernel pages for doing writes,\nwhich is kind of a big deal if you are on 32bit and have more than a gig of ram.\nSo fix our allocations to use the mapping\u0027s gfp but still clear __GFP_FS so we\ndon\u0027t re-enter.  Thanks,\n\nReported-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b2f9452bd5234d573898bbda52a410b154f8f510",
      "tree": "b2599fdd3247befb52f9b5c64b99aed6f6db195e",
      "parents": [
        "65112dccf8a113737684366349d7f9ec373ddc47",
        "f7f43cc84152e53b5687cd0eb8823310ba065524"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 13 18:20:40 2011 +1200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 13 18:20:40 2011 +1200"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 of git://github.com/chrismason/linux\n\n* \u0027btrfs-3.0\u0027 of git://github.com/chrismason/linux:\n  Btrfs: make sure not to defrag extents past i_size\n  Btrfs: fix recursive auto-defrag\n"
    },
    {
      "commit": "f7f43cc84152e53b5687cd0eb8823310ba065524",
      "tree": "2ae66461455a750baa970d02589cb393d27ffbd1",
      "parents": [
        "2a0f7f5769992bae5b3f97157fd80b2b943be485"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 11 11:41:40 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Oct 11 11:45:55 2011 -0400"
      },
      "message": "Btrfs: make sure not to defrag extents past i_size\n\nThe btrfs file defrag code will loop through the extents and\nforce COW on them.  But there is a concurrent truncate in the middle of\nthe defrag, it might end up defragging the same range over and over\nagain.\n\nThe problem is that writepage won\u0027t go through and do anything on pages\npast i_size, so the cow won\u0027t happen, so the file will appear to still\nbe fragmented.  defrag will end up hitting the same extents again and\nagain.\n\nIn the worst case, the truncate can actually live lock with the defrag\nbecause the defrag keeps creating new ordered extents which the truncate\ncode keeps waiting on.\n\nThe fix here is to make defrag check for i_size inside the main loop,\ninstead of just once before the looping starts.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a0f7f5769992bae5b3f97157fd80b2b943be485",
      "tree": "ee19a5470211f13d1e53a311cb0d9e2ccc2988fc",
      "parents": [
        "b6316429af7f365f307dfd2b6a7a42f2563aef19"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Oct 10 15:43:34 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Oct 10 15:43:34 2011 -0400"
      },
      "message": "Btrfs: fix recursive auto-defrag\n\nFollow those steps:\n\n  # mount -o autodefrag /dev/sda7 /mnt\n  # dd if\u003d/dev/urandom of\u003d/mnt/tmp bs\u003d200K count\u003d1\n  # sync\n  # dd if\u003d/dev/urandom of\u003d/mnt/tmp bs\u003d8K count\u003d1 conv\u003dnotrunc\n\nand then it\u0027ll go into a loop: writeback -\u003e defrag -\u003e writeback ...\n\nIt\u0027s because writeback writes [8K, 200K] and then writes [0, 8K].\n\nI tried to make writeback know if the pages are dirtied by defrag,\nbut the patch was a bit intrusive. Here I simply set writeback_index\nwhen we defrag a file.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d7728c960dccf775b92f2c4139f1216275a45c44",
      "tree": "76d8ea34fe47a1557f0cf5e558aa3cb525f39c70",
      "parents": [
        "0ef8e45158f97dde4801b535e25f70f7caf01a27"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Jul 07 16:48:38 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:28 2011 +0200"
      },
      "message": "btrfs: new ioctls to do logical-\u003einode and inode-\u003epath resolving\n\nthese ioctls make use of the new functions initially added for scrub. they\nreturn all inodes belonging to a logical address (BTRFS_IOC_LOGICAL_INO) and\nall paths belonging to an inode (BTRFS_IOC_INO_PATHS).\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\u003e\n"
    },
    {
      "commit": "0a7a0519d1789f3a222849421dbe91b6bddb88f5",
      "tree": "d9fee1dae1627f24de73bf6555030b6285c7c73a",
      "parents": [
        "a66e7cc626f42de6c745963fe0d807518fa49d39",
        "b6f3409b2197e8fcedb43e6600e37b7cfbe0715b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 20 14:49:29 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 20 14:49:29 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "b6f3409b2197e8fcedb43e6600e37b7cfbe0715b",
      "tree": "f4001140db592992982a323bc18553cb9d7c5682",
      "parents": [
        "dde820fbf7176b64daddc1856597d9c61dac19e2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Sep 20 14:48:51 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Sep 20 14:48:51 2011 -0400"
      },
      "message": "Btrfs: reserve sufficient space for ioctl clone\n\nFix a crash/BUG_ON in the clone ioctl due to insufficient reservation. We\nneed to reserve space for:\n\n - adjusting the old extent (possibly splitting it)\n - adding the new extent\n - updating the inode\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2cf4ce7c2a07782c3f4d899b380a78522bca3238",
      "tree": "46ef48fd4ee47753d6539b65c8a90a2f64e9f8a5",
      "parents": [
        "b6fd41e29dea9c6753b1843a77e50433e6123bcb",
        "dde820fbf7176b64daddc1856597d9c61dac19e2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:31:44 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:31:44 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "dde820fbf7176b64daddc1856597d9c61dac19e2",
      "tree": "4a991cc02d9903dd2c4d017686bf4a549478e327",
      "parents": [
        "0e7b824c4ef9f5bcf5e48cdce164a7b349dde969"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "message": "Btrfs: don\u0027t change inode flag of the dest clone file\n\nThe dst file will have the same inode flags with dst file after\nfile clone, and I think it\u0027s unexpected.\n\nFor example, the dst file will suddenly become immutable after\ngetting some share of data with src file, if the src is immutable.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0e7b824c4ef9f5bcf5e48cdce164a7b349dde969",
      "tree": "d2f11b5f8ddde4bda00798a09b5e2233766f3874",
      "parents": [
        "71ef07861080418d125dcf454af41baafa409a2c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "message": "Btrfs: don\u0027t make a file partly checksummed through file clone\n\nTo reproduce the bug:\n\n  # mount /dev/sda7 /mnt\n  # dd if\u003d/dev/zero of\u003d/mnt/src bs\u003d4K count\u003d1\n  # umount /mnt\n\n  # mount -o nodatasum /dev/sda7 /mnt\n  # dd if\u003d/dev/zero of\u003d/mnt/dst bs\u003d4K count\u003d1\n  # clone_range -s 4K -l 4K /mnt/src /mnt/dst\n\n  # echo 3 \u003e /proc/sys/vm/drop_caches\n  # cat /mnt/dst\n  # dmesg\n  ...\n  btrfs no csum found for inode 258 start 0\n  btrfs csum failed ino 258 off 0 csum 2566472073 private 0\n\nIt\u0027s because part of the file is checksummed and the other part is not,\nand then btrfs will complain checksum is not found when we read the file.\n\nDisallow file clone if src and dst file have different checksum flag,\nso we ensure a file is completely checksummed or unchecksummed.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "71ef07861080418d125dcf454af41baafa409a2c",
      "tree": "9f2c706625a67a5164f774805eb8aaa32ea2410b",
      "parents": [
        "3765fefaee2da83f10829fa64a74e6b7360350cb"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 18 10:20:46 2011 -0400"
      },
      "message": "Btrfs: fix pages truncation in btrfs_ioctl_clone()\n\nIt\u0027s a bug in commit f81c9cdc567cd3160ff9e64868d9a1a7ee226480\n(Btrfs: truncate pages from clone ioctl target range)\n\nWe should pass the dest range to the truncate function, but not the\nsrc range.\n\nAlso move the function before locking extent state.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0b001b2edaead6fd906b1f87967ae05f082189c4",
      "tree": "2df377b4b08946af496941e9d18a48e9a100af6b",
      "parents": [
        "5dfcc87fd79dfb96ed155b524337dbd0da4f5993",
        "d525e8ab022cb000e6e31a515ba8c3cf0d9c6130"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://github.com/chrismason/linux\n\n* \u0027for-linus\u0027 of git://github.com/chrismason/linux:\n  Btrfs: add dummy extent if dst offset excceeds file end in\n  Btrfs: calc file extent num_bytes correctly in file clone\n  btrfs: xattr: fix attribute removal\n  Btrfs: fix wrong nbytes information of the inode\n  Btrfs: fix the file extent gap when doing direct IO\n  Btrfs: fix unclosed transaction handle in btrfs_cont_expand\n  Btrfs: fix misuse of trans block rsv\n  Btrfs: reset to appropriate block rsv after orphan operations\n  Btrfs: skip locking if searching the commit root in csum lookup\n  btrfs: fix warning in iput for bad-inode\n  Btrfs: fix an oops when deleting snapshots\n"
    },
    {
      "commit": "d525e8ab022cb000e6e31a515ba8c3cf0d9c6130",
      "tree": "afaa93134ca050e1169ed8fe68442b4522d9112e",
      "parents": [
        "d72c0842ff0e71342857723bb65f35b71f57b264"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "message": "Btrfs: add dummy extent if dst offset excceeds file end in\n\nYou can see there\u0027s no file extent with range [0, 4096]. Check this by\nbtrfsck:\n\n # btrfsck /dev/sda7\n root 5 inode 258 errors 100\n ...\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d72c0842ff0e71342857723bb65f35b71f57b264",
      "tree": "ab0e5037f19fd279fb57b3b653a53d5c92f32e73",
      "parents": [
        "4815053aba7f2304055745df820cd74a39fdaab2"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Sep 11 10:52:25 2011 -0400"
      },
      "message": "Btrfs: calc file extent num_bytes correctly in file clone\n\nnum_bytes should be 4096 not 12288.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "81d86e1b70961f4816f961875e0c706b0954acad",
      "tree": "ac69ce2e8d174260770d1a84d7d8fe910939c923",
      "parents": [
        "9a4327ca1f45f82edad7dc0a4e52ce9316e0950c",
        "f1e490a7ebe41e06324abbbcd86005b0af02a375"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:38:03 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Aug 18 10:38:03 2011 -0400"
      },
      "message": "Merge branch \u0027btrfs-3.0\u0027 into for-linus\n"
    },
    {
      "commit": "f81c9cdc567cd3160ff9e64868d9a1a7ee226480",
      "tree": "d4812f9328ea0f5945c42a6b694bdcdb7bdbd707",
      "parents": [
        "0e588859618be54ec100373f1b86296271ce5307"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 10 18:04:04 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 16 21:09:31 2011 -0400"
      },
      "message": "Btrfs: truncate pages from clone ioctl target range\n\nWe need to truncate page cache pages for the clone ioctl target range or\nelse we\u0027ll confuse ourselves to no end.  If the old data was cached, we\nused to still see it (until remount).  If the page was partially updated\nwe used to get a mix of old and new data.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ed8f37370d83e695c0a4fa5d5fc7a83ecb947526",
      "tree": "2e57247c609a495b31892b2d05ea52e35556ab60",
      "parents": [
        "a6b11f53388973d99c4a357c22b19753b424e73c",
        "0d10ee2e6deb5c8409ae65b970846344897d5e4e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 02 21:14:05 2011 -1000"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (31 commits)\n  Btrfs: don\u0027t call writepages from within write_full_page\n  Btrfs: Remove unused variable \u0027last_index\u0027 in file.c\n  Btrfs: clean up for find_first_extent_bit()\n  Btrfs: clean up for wait_extent_bit()\n  Btrfs: clean up for insert_state()\n  Btrfs: remove unused members from struct extent_state\n  Btrfs: clean up code for merging extent maps\n  Btrfs: clean up code for extent_map lookup\n  Btrfs: clean up search_extent_mapping()\n  Btrfs: remove redundant code for dir item lookup\n  Btrfs: make acl functions really no-op if acl is not enabled\n  Btrfs: remove remaining ref-cache code\n  Btrfs: remove a BUG_ON() in btrfs_commit_transaction()\n  Btrfs: use wait_event()\n  Btrfs: check the nodatasum flag when writing compressed files\n  Btrfs: copy string correctly in INO_LOOKUP ioctl\n  Btrfs: don\u0027t print the leaf if we had an error\n  btrfs: make btrfs_set_root_node void\n  Btrfs: fix oops while writing data to SSD partitions\n  Btrfs: Protect the readonly flag of block group\n  ...\n\nFix up trivial conflicts (due to acl and writeback cleanups) in\n - fs/btrfs/acl.c\n - fs/btrfs/ctree.h\n - fs/btrfs/extent_io.c\n"
    },
    {
      "commit": "77906a5075a4eb767026c2e07b1a412d08aea5be",
      "tree": "0d7744a53a88c0e657ba727cd69e9b694d034772",
      "parents": [
        "b783e62d9620445d1ca3de76badf0468cdd329ba"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jul 14 03:16:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Aug 01 14:30:45 2011 -0400"
      },
      "message": "Btrfs: copy string correctly in INO_LOOKUP ioctl\n\nMemory areas [ptr, ptr+total_len] and [name, name+total_len]\nmay overlap, so it\u0027s wrong to use memcpy().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "22712200e175e0df5c7f9edfe6c6bf5c94c23b83",
      "tree": "a3e332aab7f5a953ff4f12e67af2a0e5f32f5be5",
      "parents": [
        "597a67e0ba758e3d2239c81fbb648c6e69ec30a2",
        "ff95acb6733d41a8d45feb0e18b96df25e610e78"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 27 16:43:52 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: make sure reserve_metadata_bytes doesn\u0027t leak out strange errors\n  Btrfs: use the commit_root for reading free_space_inode crcs\n  Btrfs: reduce extent_state lock contention for metadata\n  Btrfs: remove lockdep magic from btrfs_next_leaf\n  Btrfs: make a lockdep class for each root\n  Btrfs: switch the btrfs tree locks to reader/writer\n  Btrfs: fix deadlock when throttling transactions\n  Btrfs: stop using highmem for extent_buffers\n  Btrfs: fix BUG_ON() caused by ENOSPC when relocating space\n  Btrfs: tag pages for writeback in sync\n  Btrfs: fix enospc problems with delalloc\n  Btrfs: don\u0027t flush delalloc arbitrarily\n  Btrfs: use find_or_create_page instead of grab_cache_page\n  Btrfs: use a worker thread to do caching\n  Btrfs: fix how we merge extent states and deal with cached states\n  Btrfs: use the normal checksumming infrastructure for free space cache\n  Btrfs: serialize flushers in reserve_metadata_bytes\n  Btrfs: do transaction space reservation before joining the transaction\n  Btrfs: try to only do one btrfs_search_slot in do_setxattr\n"
    },
    {
      "commit": "9e0baf60dea69f31ac3b1adeb35b03b02a53e8e1",
      "tree": "0fb899e1fa78b599d22389ca3befc8ab51ff5049",
      "parents": [
        "a5991428064e98c7367fe1c1686ea6a23fb6a4b3"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Jul 15 15:16:44 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:44 2011 -0400"
      },
      "message": "Btrfs: fix enospc problems with delalloc\n\nSo I had this brilliant idea to use atomic counters for outstanding and reserved\nextents, but this turned out to be a bad idea.  Consider this where we have 1\noutstanding extent and 1 reserved extent\n\nReserver\t\t\t\tReleaser\n\t\t\t\t\tatomic_dec(outstanding) now 0\natomic_read(outstanding)+1 get 1\natomic_read(reserved) get 1\ndon\u0027t actually reserve anything because\nthey are the same\n\t\t\t\t\tatomic_cmpxchg(reserved, 1, 0)\natomic_inc(outstanding)\natomic_add(0, reserved)\n\t\t\t\t\tfree reserved space for 1 extent\n\nThen the reserver now has no actual space reserved for it, and when it goes to\nfinish the ordered IO it won\u0027t have enough space to do it\u0027s allocation and you\nget those lovely warnings.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a94733d0bc630edaedc6ca156752dd5a7cb82521",
      "tree": "3f0bd508aa1ce5894e43df45bb73031a380ed8f5",
      "parents": [
        "bab39bf998133510f2dad08158006197ec0dabea"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 11 10:47:06 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jul 27 12:46:43 2011 -0400"
      },
      "message": "Btrfs: use find_or_create_page instead of grab_cache_page\n\ngrab_cache_page will use mapping_gfp_mask(), which for all inodes is set to\nGFP_HIGHUSER_MOVABLE.  So instead use find_or_create_page in all cases where we\nneed GFP_NOFS so we don\u0027t deadlock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "2fbe8c8ad176db69dfc682b4abb721c8fc19c3fd",
      "tree": "f473a370543927ec2ebf1a462d165fc08c1515d3",
      "parents": [
        "02c24a82187d5a628c68edfe71ae60dc135cd178"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 16 21:38:06 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:00 2011 -0400"
      },
      "message": "get rid of useless dget_parent() in fs/btrfs/ioctl.c\n\nboth callers there have dentry-\u003ed_parent stabilized by the fact that\ntheir caller had obtained dentry from lookup_one_len() and had not\ndropped -\u003ei_mutex on parent since then.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8351583e3f6e430ce8f71913909a96ad5cc6a2f6",
      "tree": "f345f40f94d12ffe090735f19aebc96c72be44bd",
      "parents": [
        "71d7aed014457147e8f71a843d5fbf03235e4a85"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jun 14 15:16:14 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jun 15 13:24:46 2011 -0400"
      },
      "message": "Btrfs: protect the pending_snapshots list with trans_lock\n\nCurrently there is nothing protecting the pending_snapshots list on the\ntransaction.  We only hold the directory mutex that we are snapshotting and a\nread lock on the subvol_sem, so we could race with somebody else creating a\nsnapshot in a different directory and end up with list corruption.  So protect\nthis list with the trans_lock.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "027ed2f0044e95a97ed34db2d55a9ca95ba84385",
      "tree": "7bcdb6d542e5adbbe8cfd59c9ddc36be868f1238",
      "parents": [
        "9eb9104c665aae2401a1723c044669eb10240072"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jun 08 08:27:56 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jun 10 18:57:10 2011 -0400"
      },
      "message": "Btrfs: avoid stack bloat in btrfs_ioctl_fs_info()\n\nThe size of struct btrfs_ioctl_fs_info_args is as big as 1KB, so\ndon\u0027t declare the variable on stack.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "a4689d2bd3b00dcf5c4320f06e0ab88810fbff9c",
      "tree": "295bcdb0fdbe5a4cda80eb886694efd45e276699",
      "parents": [
        "d132a538d258f8f52fd0cd8b5017755f4e915386"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Tue May 31 17:08:14 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat Jun 04 08:03:46 2011 -0400"
      },
      "message": "btrfs: use btrfs_ino to access inode number\n\ncommit 4cb5300bc (\"Btrfs: add mount -o auto_defrag\") accesses inode\nnumber directly while it should use the helper with the new inode\nnumber allocator.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff5714cca971848963b87d6b477c16ca8abbaa54",
      "tree": "17ee34b9b5e00804df4059503f82f6f1d94383a9",
      "parents": [
        "174ba50915b08dcfd07c8b5fb795b46a165fa09a",
        "d90c732122a1f6d0efe388a8a204f67f144b2eb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 28 07:00:39 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of\ngit://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-work into for-linus\n\nConflicts:\n\tfs/btrfs/disk-io.c\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "4cb5300bc839b8a943eb19c9f27f25470e22d0ca",
      "tree": "ac0f2fb481c7aa6af08a624d276fa6d580c94c9b",
      "parents": [
        "d6c0cb379c5198487e4ac124728cbb2346d63b1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 24 15:35:30 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu May 26 17:52:15 2011 -0400"
      },
      "message": "Btrfs: add mount -o auto_defrag\n\nThis will detect small random writes into files and\nqueue the up for an auto defrag process.  It isn\u0027t well suited to\ndatabase workloads yet, but works for smaller files such as rpm, sqlite\nor bdb databases.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d6c0cb379c5198487e4ac124728cbb2346d63b1f",
      "tree": "167a97ac58c7a2fbf7c4e94b6abbfe1e03af014a",
      "parents": [
        "8e531cdfeb75269c6c5aae33651cca39707848da",
        "1f78160ce1b1b8e657e2248118c4d91f881763f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 14:37:47 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups_and_fixes\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/tree-log.c\n\tfs/btrfs/volumes.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f78160ce1b1b8e657e2248118c4d91f881763f0",
      "tree": "98c5496a9ab3e77e4cd682c0487f4c0127198396",
      "parents": [
        "46224705656633466ca7dc71d81b3c0abc76cae4"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Wed Apr 20 10:09:16 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:24:43 2011 -0400"
      },
      "message": "Btrfs: using rcu lock in the reader side of devices list\n\nfs_devices-\u003edevices is only updated on remove and add device paths, so we can\nuse rcu to protect it in the reader side\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e2156867159ae7b3bc38ef1c26ea0ee30a895ef8",
      "tree": "d949884cdaf5ebeb8d9ba14ec0284c9ece437164",
      "parents": [
        "0956c798ef8dbe0fc215870eb68bd2d8e789f86a"
      ],
      "author": {
        "name": "Hugo Mills",
        "email": "hugo@carfax.org.uk",
        "time": "Sat May 14 17:43:41 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 13:05:39 2011 -0400"
      },
      "message": "btrfs: Ensure the tree search ioctl returns the right number of records\n\nBtrfs\u0027s tree search ioctl has a field to indicate that no more than a\ngiven number of records should be returned. The ioctl doesn\u0027t honour\nthis, as the tested value is not incremented until the end of the\ncopy_to_sk function. This patch removes an unnecessary local variable,\nand updates the num_found counter as each key is found in the tree.\n\nSigned-off-by: Hugo Mills \u003chugo@carfax.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d82a6f1d7e8b61ed5996334d0db66651bb43641d",
      "tree": "5738ec75f7679bdc1b97aecbc5cad3464cc65541",
      "parents": [
        "7e2355ba1a11649f0b212a29fdb9f47476f1248e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 11 15:26:06 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:03:12 2011 -0400"
      },
      "message": "Btrfs: kill BTRFS_I(inode)-\u003eblock_group\n\nOriginally this was going to be used as a way to give hints to the allocator,\nbut frankly we can get much better hints elsewhere and it\u0027s not even used at all\nfor anything usefull.  In addition to be completely useless, when we initialize\nan inode we try and find a freeish block group to set as the inodes block group,\nand with a completely full 40gb fs this takes _forever_, so I imagine with say\n1tb fs this is just unbearable.  So just axe the thing altoghether, we don\u0027t\nneed it and it saves us 8 bytes in the inode and saves us 500 microseconds per\ninode lookup in my testcase.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "a4abeea41adfa3c143c289045f4625dfaeba2212",
      "tree": "792e2a398d8ba77447ba3f9f2c4266a1ce2f611c",
      "parents": [
        "2a1eb4614d984d5cd4c928784e9afcf5c07f93be"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Apr 11 17:25:13 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:57 2011 -0400"
      },
      "message": "Btrfs: kill trans_mutex\n\nWe use trans_mutex for lots of things, here\u0027s a basic list\n\n1) To serialize trans_handles joining the currently running transaction\n2) To make sure that no new trans handles are started while we are committing\n3) To protect the dead_roots list and the transaction lists\n\nReally the serializing trans_handles joining is not too hard, and can really get\nbogged down in acquiring a reference to the transaction.  So replace the\ntrans_mutex with a trans_lock spinlock and use it to do the following\n\n1) Protect fs_info-\u003erunning_transaction.  All trans handles have to do is check\nthis, and then take a reference of the transaction and keep on going.\n2) Protect the fs_info-\u003etrans_list.  This doesn\u0027t get used too much, basically\nit just holds the current transactions, which will usually just be the currently\ncommitting transaction and the currently running transaction at most.\n3) Protect the dead roots list.  This is only ever processed by splicing the\nlist so this is relatively simple.\n4) Protect the fs_info-\u003ereloc_ctl stuff.  This is very lightweight and was using\nthe trans_mutex before, so this is a pretty straightforward change.\n5) Protect fs_info-\u003eno_trans_join.  Because we don\u0027t hold the trans_lock over\nthe entirety of the commit we need to have a way to block new people from\ncreating a new transaction while we\u0027re doing our work.  So we set no_trans_join\nand in join_transaction we test to see if that is set, and if it is we do a\nwait_on_commit.\n6) Make the transaction use count atomic so we don\u0027t need to take locks to\nmodify it when we\u0027re dropping references.\n7) Add a commit_lock to the transaction to make sure multiple people trying to\ncommit the same transaction don\u0027t race and commit at the same time.\n8) Make open_ioctl_trans an atomic so we don\u0027t have to take any locks for ioctl\ntrans.\n\nI have tested this with xfstests, but obviously it is a pretty hairy change so\nlots of testing is greatly appreciated.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "7a7eaa40a39bde4eefc91aadeb1ce3dc4e6a1252",
      "tree": "eea3dea572a73168b70efa9fba2e9800457571d7",
      "parents": [
        "74b2107543da4ed9607ec484f63c42362dc9fca6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Apr 13 12:54:33 2011 -0400"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon May 23 13:00:56 2011 -0400"
      },
      "message": "Btrfs: take away the num_items argument from btrfs_join_transaction\n\nI keep forgetting that btrfs_join_transaction() just ignores the num_items\nargument, which leads me to sending pointless patches and looking stupid :).  So\njust kill the num_items argument from btrfs_join_transaction and\nbtrfs_start_ioctl_transaction, since neither of them use it.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "712673339a0d085358fd1cd3a6477cc7979bb69f",
      "tree": "b2e268685e3cbba19a4adb2a47d853e4e461fcfc",
      "parents": [
        "aa2dfb372a2a647beedac163ce6f8b0fcbefac29",
        "8628764e1a5e1998a42b9713e9edea7753653d01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon May 23 06:30:52 2011 -0400"
      },
      "message": "Merge branch \u0027for-chris\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arne/btrfs-unstable-arne into inode_numbers\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/ctree.h\n\tfs/btrfs/volumes.h\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "945d8962ceee6bb273365d0bdf42f763225b290f",
      "tree": "43f5617022c7c947c3c63664e49eb9575ab82f2f",
      "parents": [
        "0d0ca30f180906224be6279788f2b202cfd959d8",
        "4ea028859bbdad34b84c9951fbb832ae10c6a96c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 12:33:42 2011 -0400"
      },
      "message": "Merge branch \u0027cleanups\u0027 of git://repo.or.cz/linux-2.6/btrfs-unstable into inode_numbers\n\nConflicts:\n\tfs/btrfs/extent-tree.c\n\tfs/btrfs/free-space-cache.c\n\tfs/btrfs/inode.c\n\tfs/btrfs/tree-log.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dcc6d073225b6b732a52477c91bd4edc9b4d5502",
      "tree": "71da6844bb03c940c87c01a2a1f8c2e11cf85238",
      "parents": [
        "0965537308ac3b267ea16e731bd73870a51c53b8",
        "16cdcec736cd214350cdb591bf1091f8beedefa0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:07:01 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun May 22 07:07:01 2011 -0400"
      },
      "message": "Merge branch \u0027delayed_inode\u0027 into inode_numbers\n\nConflicts:\n\tfs/btrfs/inode.c\n\tfs/btrfs/ioctl.c\n\tfs/btrfs/transaction.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "16cdcec736cd214350cdb591bf1091f8beedefa0",
      "tree": "5598d4561660c4d7a1d4de8b3703d6dd3cc7f9e7",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Fri Apr 22 18:12:22 2011 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:30:56 2011 -0400"
      },
      "message": "btrfs: implement delayed inode items operation\n\nChangelog V5 -\u003e V6:\n- Fix oom when the memory load is high, by storing the delayed nodes into the\n  root\u0027s radix tree, and letting btrfs inodes go.\n\nChangelog V4 -\u003e V5:\n- Fix the race on adding the delayed node to the inode, which is spotted by\n  Chris Mason.\n- Merge Chris Mason\u0027s incremental patch into this patch.\n- Fix deadlock between readdir() and memory fault, which is reported by\n  Itaru Kitayama.\n\nChangelog V3 -\u003e V4:\n- Fix nested lock, which is reported by Itaru Kitayama, by updating space cache\n  inode in time.\n\nChangelog V2 -\u003e V3:\n- Fix the race between the delayed worker and the task which does delayed items\n  balance, which is reported by Tsutomu Itoh.\n- Modify the patch address David Sterba\u0027s comment.\n- Fix the bug of the cpu recursion spinlock, reported by Chris Mason\n\nChangelog V1 -\u003e V2:\n- break up the global rb-tree, use a list to manage the delayed nodes,\n  which is created for every directory and file, and used to manage the\n  delayed directory name index items and the delayed inode item.\n- introduce a worker to deal with the delayed nodes.\n\nCompare with Ext3/4, the performance of file creation and deletion on btrfs\nis very poor. the reason is that btrfs must do a lot of b+ tree insertions,\nsuch as inode item, directory name item, directory name index and so on.\n\nIf we can do some delayed b+ tree insertion or deletion, we can improve the\nperformance, so we made this patch which implemented delayed directory name\nindex insertion/deletion and delayed inode update.\n\nImplementation:\n- introduce a delayed root object into the filesystem, that use two lists to\n  manage the delayed nodes which are created for every file/directory.\n  One is used to manage all the delayed nodes that have delayed items. And the\n  other is used to manage the delayed nodes which is waiting to be dealt with\n  by the work thread.\n- Every delayed node has two rb-tree, one is used to manage the directory name\n  index which is going to be inserted into b+ tree, and the other is used to\n  manage the directory name index which is going to be deleted from b+ tree.\n- introduce a worker to deal with the delayed operation. This worker is used\n  to deal with the works of the delayed directory name index items insertion\n  and deletion and the delayed inode update.\n  When the delayed items is beyond the lower limit, we create works for some\n  delayed nodes and insert them into the work queue of the worker, and then\n  go back.\n  When the delayed items is beyond the upper bound, we create works for all\n  the delayed nodes that haven\u0027t been dealt with, and insert them into the work\n  queue of the worker, and then wait for that the untreated items is below some\n  threshold value.\n- When we want to insert a directory name index into b+ tree, we just add the\n  information into the delayed inserting rb-tree.\n  And then we check the number of the delayed items and do delayed items\n  balance. (The balance policy is above.)\n- When we want to delete a directory name index from the b+ tree, we search it\n  in the inserting rb-tree at first. If we look it up, just drop it. If not,\n  add the key of it into the delayed deleting rb-tree.\n  Similar to the delayed inserting rb-tree, we also check the number of the\n  delayed items and do delayed items balance.\n  (The same to inserting manipulation)\n- When we want to update the metadata of some inode, we cached the data of the\n  inode into the delayed node. the worker will flush it into the b+ tree after\n  dealing with the delayed insertion and deletion.\n- We will move the delayed node to the tail of the list after we access the\n  delayed node, By this way, we can cache more delayed items and merge more\n  inode updates.\n- If we want to commit transaction, we will deal with all the delayed node.\n- the delayed node will be freed when we free the btrfs inode.\n- Before we log the inode items, we commit all the directory name index items\n  and the delayed inode update.\n\nI did a quick test by the benchmark tool[1] and found we can improve the\nperformance of file creation by ~15%, and file deletion by ~20%.\n\nBefore applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 1.096108\n        Average time: 0.000022\nDelete files:\n        Total files: 50000\n        Total time: 1.510403\n        Average time: 0.000030\n\nAfter applying this patch:\nCreate files:\n        Total files: 50000\n        Total time: 0.932899\n        Average time: 0.000019\nDelete files:\n        Total files: 50000\n        Total time: 1.215732\n        Average time: 0.000024\n\n[1] http://marc.info/?l\u003dlinux-btrfs\u0026m\u003d128212635122920\u0026q\u003dp3\n\nMany thanks for Kitayama-san\u0027s help!\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdave@jikos.cz\u003e\nTested-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nTested-by: Itaru Kitayama \u003ckitayama@cl.bb4u.ne.jp\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0965537308ac3b267ea16e731bd73870a51c53b8",
      "tree": "7b52288b7272b2391f736dd82a313cbbaad68570",
      "parents": [
        "61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf",
        "82d5902d9c681be37ffa9d70482907f9f0b7ec1f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 21 09:27:38 2011 -0400"
      },
      "message": "Merge branch \u0027ino-alloc\u0027 of git://repo.or.cz/linux-btrfs-devel into inode_numbers\n\nConflicts:\n\tfs/btrfs/free-space-cache.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eed631e0d741d1a1067cfc6d709fdf2363126f9c",
      "tree": "31ba02472a8d5ef2d7780274a7663258c09a9acf",
      "parents": [
        "bd1a643e10eb8782b36b47c3602300319dd2fb00",
        "ebcb904dfe31644857422e3bb62e50f76fe86255"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 15 10:22:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 15 10:22:10 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix FS_IOC_SETFLAGS ioctl\n  Btrfs: fix FS_IOC_GETFLAGS ioctl\n  fs: remove FS_COW_FL\n  Btrfs: fix easily get into ENOSPC in mixed case\n  Prevent oopsing in posix_acl_valid()\n"
    },
    {
      "commit": "ebcb904dfe31644857422e3bb62e50f76fe86255",
      "tree": "e4dd906d7f15e0a924b410acd236e8b7e3bc8bba",
      "parents": [
        "d0092bdda819914b8725da76a8c33eb06eb0bd21"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Apr 15 03:03:17 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 14 16:10:28 2011 -0400"
      },
      "message": "Btrfs: fix FS_IOC_SETFLAGS ioctl\n\nSteps to reproduce the bug:\n\n  - Call FS_IOC_SETLFAGS ioctl with flags\u003dFS_COMPR_FL\n  - Call FS_IOC_SETFLAGS ioctl with flags\u003d0\n  - Call FS_IOC_GETFLAGS ioctl, and you\u0027ll see FS_COMPR_FL is still set!\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d0092bdda819914b8725da76a8c33eb06eb0bd21",
      "tree": "34de4ffe3822f8a8f1a731628c849280a7e4edeb",
      "parents": [
        "e1e8fb6a1ff3f9487e03a4cbf85b81d1316068ce"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Apr 15 03:03:06 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 14 16:10:27 2011 -0400"
      },
      "message": "Btrfs: fix FS_IOC_GETFLAGS ioctl\n\nAs we\u0027ve added per file compression/cow support.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e1e8fb6a1ff3f9487e03a4cbf85b81d1316068ce",
      "tree": "a7cd1ba1f93d163e2ca02b8172888f43e444713f",
      "parents": [
        "1aba86d67f340a8001d67183ec32e8a62e3ec658"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Apr 15 03:02:49 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 14 16:10:26 2011 -0400"
      },
      "message": "fs: remove FS_COW_FL\n\nFS_COW_FL and FS_NOCOW_FL were newly introduced to control per file\nCOW in btrfs, but FS_NOCOW_FL is sufficient.\n\nThe fact is we don\u0027t have corresponding BTRFS_INODE_COW flag.\n\nCOW is default, and FS_NOCOW_FL can be used to switch off COW for\na single file.\n\nIf we mount btrfs with nodatacow, a newly created file will be set with\nthe FS_NOCOW_FL flag. So to turn on COW for it, we can just clear the\nFS_NOCOW_FL flag.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8628764e1a5e1998a42b9713e9edea7753653d01",
      "tree": "19c88f4d4eb806f7d5de83a1fc36996658ace17d",
      "parents": [
        "96e369208e65a7d017a52361fd572df41fde8472"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Wed Mar 23 16:34:19 2011 +0100"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:48:31 2011 +0200"
      },
      "message": "btrfs: add readonly flag\n\nsetting the readonly flag prevents writes in case an error is detected\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "475f63874d739d7842a56da94687f18d583ae654",
      "tree": "096902bd87353d1e8be3cf6a9ecadb66fc620d11",
      "parents": [
        "a2de733c78fa7af51ba9670482fa7d392aa67c57"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Fri Mar 11 15:41:01 2011 +0100"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:45:38 2011 +0200"
      },
      "message": "btrfs: new ioctls for scrub\n\nadds ioctls necessary to start and cancel scrubs, to get current\nprogress and to get info about devices to be scrubbed.\nNote that the scrub is done per-device and that the ioctl only\nreturns after the scrub for this devices is finished or has been\ncanceled.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    },
    {
      "commit": "b3b4aa74b58bded927f579fff787fb6fa1c0393c",
      "tree": "30dab4ab26558992dd8b6b212bef805de11c4c29",
      "parents": [
        "ba14419264684b290f0d0b7f48d26eafb11fc0c6"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Apr 21 01:20:15 2011 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Mon May 02 13:57:22 2011 +0200"
      },
      "message": "btrfs: drop unused parameter from btrfs_release_path\n\nparameter tree root it\u0027s not used since commit\n5f39d397dfbe140a14edecd4e73c34ce23c4f9ee (\"Btrfs: Create extent_buffer\ninterface for large blocksizes\")\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\n"
    },
    {
      "commit": "33345d01522f8152f99dc84a3e7a1a45707f387f",
      "tree": "6a978702dc4421768e63501fa15bc8fedd5bff32",
      "parents": [
        "0414efae7989a2183fb2cc000ab285c4c2836a00"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:31:50 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:09 2011 +0800"
      },
      "message": "Btrfs: Always use 64bit inode number\n\nThere\u0027s a potential problem in 32bit system when we exhaust 32bit inode\nnumbers and start to allocate big inode numbers, because btrfs uses\ninode-\u003ei_ino in many places.\n\nSo here we always use BTRFS_I(inode)-\u003elocation.objectid, which is an\nu64 variable.\n\nThere are 2 exceptions that BTRFS_I(inode)-\u003elocation.objectid !\u003d\ninode-\u003ei_ino: the btree inode (0 vs 1) and empty subvol dirs (256 vs 2),\nand inode-\u003ei_ino will be used in those cases.\n\nAnother reason to make this change is I\u0027m going to use a special inode\nto save free ino cache, and the inode number must be \u003e (u64)-256.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "581bb050941b4f220f84d3e5ed6dace3d42dd382",
      "tree": "5ebd56af5eb3612f508419b188dfc18e959e7c94",
      "parents": [
        "34d52cb6c50b5a43901709998f59fb1c5a43dc4a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 20 10:06:11 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Apr 25 16:46:04 2011 +0800"
      },
      "message": "Btrfs: Cache free inode numbers in memory\n\nCurrently btrfs stores the highest objectid of the fs tree, and it always\nreturns (highest+1) inode number when we create a file, so inode numbers\nwon\u0027t be reclaimed when we delete files, so we\u0027ll run out of inode numbers\nas we keep create/delete files in 32bits machines.\n\nThis fixes it, and it works similarly to how we cache free space in block\ncgroups.\n\nWe start a kernel thread to read the file tree. By scanning inode items,\nwe know which chunks of inode numbers are free, and we cache them in\nan rb-tree.\n\nBecause we are searching the commit root, we have to carefully handle the\ncross-transaction case.\n\nThe rb-tree is a hybrid extent+bitmap tree, so if we have too many small\nchunks of inode numbers, we\u0027ll use bitmaps. Initially we allow 16K ram\nof extents, and a bitmap will be used if we exceed this threshold. The\nextents threshold is adjusted in runtime.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "adff377bb1010ec65aada1f94ef2be7c7805c711",
      "tree": "83742ebd4de5c043b2f58969ef4d6634a301bfe7",
      "parents": [
        "d8bdc59f215e62098bc5b4256fd9928bf27053a1",
        "f65647c29b14f5a32ff6f3237b0ef3b375ed5a79"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 18 12:24:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 18 12:24:05 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (24 commits)\n  Btrfs: fix free space cache leak\n  Btrfs: avoid taking the chunk_mutex in do_chunk_alloc\n  Btrfs end_bio_extent_readpage should look for locked bits\n  Btrfs: don\u0027t force chunk allocation in find_free_extent\n  Btrfs: Check validity before setting an acl\n  Btrfs: Fix incorrect inode nlink in btrfs_link()\n  Btrfs: Check if btrfs_next_leaf() returns error in btrfs_real_readdir()\n  Btrfs: Check if btrfs_next_leaf() returns error in btrfs_listxattr()\n  Btrfs: make uncache_state unconditional\n  btrfs: using cached extent_state in set/unlock combinations\n  Btrfs: avoid taking the trans_mutex in btrfs_end_transaction\n  Btrfs: fix subvolume mount by name problem when default mount subvolume is set\n  fix user annotation in ioctl.c\n  Btrfs: check for duplicate iov_base\u0027s when doing dio reads\n  btrfs: properly handle overlapping areas in memmove_extent_buffer\n  Btrfs: fix memory leaks in btrfs_new_inode()\n  Btrfs: check for duplicate iov_base\u0027s when doing dio reads\n  Btrfs: reuse the extent_map we found when calling btrfs_get_extent\n  Btrfs: do not use async submit for small DIO io\u0027s\n  Btrfs: don\u0027t split dio bios if we don\u0027t have to\n  ...\n"
    },
    {
      "commit": "13f2696f1da9700d401db0ac2bc27ebc17068b22",
      "tree": "fa7e518f896ed8f69da76b0feb33867a73aa2cce",
      "parents": [
        "a1b75f7d961955e697ec377f90115e3517df98f9"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel.blueman@gmail.com",
        "time": "Mon Apr 11 15:56:31 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 11 20:25:46 2011 -0400"
      },
      "message": "fix user annotation in ioctl.c\n\nFix address space annotation correct in ioctl.c.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\n\n \t\t       BTRFS_BLOCK_GROUP_SYSTEM,\n@@ -2387,7 +2387,7 @@ long btrfs_ioctl_space_info(struct btrfs_root\n*root, void __user *arg)\n \t\tup_read(\u0026info-\u003egroups_sem);\n \t}\n\n-\tuser_dest \u003d (struct btrfs_ioctl_space_info *)\n+\tuser_dest \u003d (struct btrfs_ioctl_space_info __user *)\n \t\t(arg + sizeof(struct btrfs_ioctl_space_args));\n\n \tif (copy_to_user(user_dest, dest_orig, alloc_size))\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "884b8267d5f13bdcdc7e675ecbd0dbb0257689bb",
      "tree": "637c734a7466e43d3786968891e746c5b70d6a4b",
      "parents": [
        "d14f5b810b49c7dbd1a01be1c6d3641d46090080",
        "c9ddec74aa950a220cc4caa5215cfc5d886050b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 12:29:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 12:29:25 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: don\u0027t warn in btrfs_add_orphan\n  Btrfs: fix free space cache when there are pinned extents and clusters V2\n  Btrfs: Fix uninitialized root flags for subvolumes\n  btrfs: clear __GFP_FS flag in the space cache inode\n  Btrfs: fix memory leak in start_transaction()\n  Btrfs: fix memory leak in btrfs_ioctl_start_sync()\n  Btrfs: fix subvol_sem leak in btrfs_rename()\n  Btrfs: Fix oops for defrag with compression turned on\n  Btrfs: fix /proc/mounts info.\n  Btrfs: fix compiler warning in file.c\n"
    },
    {
      "commit": "08fe4db170b4193603d9d31f40ebaf652d07ac9c",
      "tree": "2d0d2abe40b77266600653e399d4973a679716a9",
      "parents": [
        "adae52b94e18afa1f84fab67df2a8a872c2f5533"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 28 02:01:25 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:20:24 2011 -0400"
      },
      "message": "Btrfs: Fix uninitialized root flags for subvolumes\n\nroot_item-\u003eflags and root_item-\u003ebyte_limit are not initialized when\na subvolume is created. This bug is not revealed until we added\nreadonly snapshot support - now you mount a btrfs filesystem and you\nmay find the subvolumes in it are readonly.\n\nTo work around this problem, we steal a bit from root_item-\u003einode_item-\u003eflags,\nand use it to indicate if those fields have been properly initialized.\nWhen we read a tree root from disk, we check if the bit is set, and if\nnot we\u0027ll set the flag and initialize the two fields of the root item.\n\nReported-by: Andreas Philipp \u003cphilipp.andreas@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Andreas Philipp \u003cphilipp.andreas@gmail.com\u003e\ncc: stable@kernel.org\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8b2b2d3cbefb605501342adaf64d601b545ed154",
      "tree": "244e724c20bbdc639f06a7a59a108b1eedd55f10",
      "parents": [
        "b44c59a80ded004e1a82712e5f9e17b131c03221"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Apr 04 01:52:13 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:42 2011 -0400"
      },
      "message": "Btrfs: fix memory leak in btrfs_ioctl_start_sync()\n\nCall btrfs_end_transaction() if btrfs_commit_transaction_async() fails.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "212a17ab878305600e607f637d2d8a49d9f7ef25",
      "tree": "64ad97fcc3d5c49ebd735f5508643c798aeecddf",
      "parents": [
        "baaca1a61497d97cec595fedce03b0a23b983e64",
        "d9d04879321af570ea7285c6dad92d9c3cd108a1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:31:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:31:05 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-unmerged\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus-unmerged\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (45 commits)\n  Btrfs: fix __btrfs_map_block on 32 bit machines\n  btrfs: fix possible deadlock by clearing __GFP_FS flag\n  btrfs: check link counter overflow in link(2)\n  btrfs: don\u0027t mess with i_nlink of unlocked inode in rename()\n  Btrfs: check return value of btrfs_alloc_path()\n  Btrfs: fix OOPS of empty filesystem after balance\n  Btrfs: fix memory leak of empty filesystem after balance\n  Btrfs: fix return value of setflags ioctl\n  Btrfs: fix uncheck memory allocations\n  btrfs: make inode ref log recovery faster\n  Btrfs: add btrfs_trim_fs() to handle FITRIM\n  Btrfs: adjust btrfs_discard_extent() return errors and trimmed bytes\n  Btrfs: make btrfs_map_block() return entire free extent for each device of RAID0/1/10/DUP\n  Btrfs: make update_reserved_bytes() public\n  btrfs: return EXDEV when linking from different subvolumes\n  Btrfs: Per file/directory controls for COW and compression\n  Btrfs: add datacow flag in inode flag\n  btrfs: use GFP_NOFS instead of GFP_KERNEL\n  Btrfs: check return value of read_tree_block()\n  btrfs: properly access unaligned checksum buffer\n  ...\n\nFix up trivial conflicts in fs/btrfs/volumes.c due to plug removal in\nthe block layer.\n"
    },
    {
      "commit": "2d4e6f6ad2b9f84f568d07dae4bdbc7f48a70ad1",
      "tree": "eb1490b2b5383fc92eaf276ef31011ec206a2439",
      "parents": [
        "dac97e516c617f9c797f64b0224050b70aea30c7"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 24 09:38:16 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:51 2011 -0400"
      },
      "message": "Btrfs: fix return value of setflags ioctl\n\nsetflags ioctl should return error when any checks fail.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7039b1d5c32241f87a513e33120db36bf30264d",
      "tree": "e911bc79c795fceb3e9a618d8f18571c2a776307",
      "parents": [
        "5378e60734f5b7bfe1b43dc191aaf6131c1befe7"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Mar 24 10:24:28 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:47 2011 -0400"
      },
      "message": "Btrfs: add btrfs_trim_fs() to handle FITRIM\n\nWe take an free extent out from allocator, trim it, then put it back,\nbut before we trim the block group, we should make sure the block group is\ncached, so plus a little change to make cache_block_group() run without a\ntransaction.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "75e7cb7fe0c391561bd3af36515be3f3c64a04c6",
      "tree": "3738481e2db10b2904a4434e4ca42d326da02be7",
      "parents": [
        "32471f6e1983922473573da62cbee58699574aa4"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Tue Mar 22 10:12:20 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:41 2011 -0400"
      },
      "message": "Btrfs: Per file/directory controls for COW and compression\n\nData compression and data cow are controlled across the entire FS by mount\noptions right now.  ioctls are needed to set this on a per file or per\ndirectory basis.  This has been proposed previously, but VFS developers\nwanted us to use generic ioctls rather than btrfs-specific ones.\n\nAccording to Chris\u0027s comment, there should be just one true compression\nmethod(probably LZO) stored in the super.  However, before this, we would\nwait for that one method is stable enough to be adopted into the super.\nSo I list it as a long term goal, and just store it in ram today.\n\nAfter applying this patch, we can use the generic \"FS_IOC_SETFLAGS\" ioctl to\ncontrol file and directory\u0027s datacow and compression attribute.\n\nNOTE:\n - The compression type is selected by such rules:\n   If we mount btrfs with compress options, ie, zlib/lzo, the type is it.\n   Otherwise, we\u0027ll use the default compress type (zlib today).\n\nv1-\u003ev2:\n- rebase to the latest btrfs.\nv2-\u003ev3:\n- fix a problem, i.e. when a file is set NOCOW via mount option, then this NOCOW\n  will be screwed by inheritance from parent directory.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "db5b493ac78e46c7b6bad22cd25d8041564cd8ea",
      "tree": "18f484c3d8194b80165e5400831931a3ac5c58ba",
      "parents": [
        "1abe9b8a138c9988ba8f7bfded6453649a31541f"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Mar 23 08:14:16 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:35 2011 -0400"
      },
      "message": "Btrfs: cleanup some BUG_ON()\n\nThis patch changes some BUG_ON() to the error return.\n(but, most callers still use BUG_ON())\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2e1496707560ecf98e9b0604622c0990f94861d3",
      "tree": "d1473b70fad31a903fedc87221680678a6c6c5f6",
      "parents": [
        "e795b71799ff0b27365020c9ddaa25d0d83f99c8"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:13 2011 -0700"
      },
      "message": "userns: rename is_owner_or_cap to inode_owner_or_capable\n\nAnd give it a kernel-doc comment.\n\n[akpm@linux-foundation.org: btrfs changed in linux-next]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66b4ffd110f9b48b8d8c1319ee446b53b8d073bf",
      "tree": "690b14cda46b47c0d71be15a82019c35729afa75",
      "parents": [
        "3893e33b0bebee2f67d96b6c15259dc884523c20"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jan 31 16:22:42 2011 -0500"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Mar 17 14:21:26 2011 -0400"
      },
      "message": "Btrfs: handle errors in btrfs_orphan_cleanup\n\nIf we cannot truncate an inode for some reason we will never delete the orphan\nitem associated with that inode, which means that we will loop forever in\nbtrfs_orphan_cleanup.  Instead of doing this just return error so we fail to\nmount.  It sucks, but hey it\u0027s better than hanging.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b4dc2b8c694ead005b828f5fb7fa1134db5b6275",
      "tree": "ba01c2bb5381ab9a34c4152ed4dd83c1797f780c",
      "parents": [
        "c87f08ca44e83b2c8d28f63f9c33f3a270a04bbe"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Feb 16 06:06:34 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Feb 16 15:37:58 2011 -0500"
      },
      "message": "Btrfs: Fix BTRFS_IOC_SUBVOL_SETFLAGS ioctl\n\n- Check user-specified flags correctly\n- Check the inode owership\n- Search root item in root tree but not fs tree\n\nReported-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "51788b1bdd0d68345bab0af4301e7fa429277228",
      "tree": "52895ef3c348c2dfa1f1ef2c4557d9f7515dfc3b",
      "parents": [
        "6848ad6461e551849ba3c32d945d4f45e96453a6"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "drosenberg@vsecurity.com",
        "time": "Mon Feb 14 16:04:23 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 14 16:04:23 2011 -0500"
      },
      "message": "btrfs: prevent heap corruption in btrfs_ioctl_space_info()\n\nCommit bf5fc093c5b625e4259203f1cee7ca73488a5620 refactored\nbtrfs_ioctl_space_info() and introduced several security issues.\n\nspace_args.space_slots is an unsigned 64-bit type controlled by a\npossibly unprivileged caller.  The comparison as a signed int type\nallows providing values that are treated as negative and cause the\nsubsequent allocation size calculation to wrap, or be truncated to 0.\nBy providing a size that\u0027s truncated to 0, kmalloc() will return\nZERO_SIZE_PTR.  It\u0027s also possible to provide a value smaller than the\nslot count.  The subsequent loop ignores the allocation size when\ncopying data in, resulting in a heap overflow or write to ZERO_SIZE_PTR.\n\nThe fix changes the slot count type and comparison typecast to u64,\nwhich prevents truncation or signedness errors, and also ensures that we\ndon\u0027t copy more data than we\u0027ve allocated in the subsequent loop.  Note\nthat zero-size allocations are no longer possible since there is already\nan explicit check for space_args.space_slots being 0 and truncation of\nthis value is no longer an issue.\n\nSigned-off-by: Dan Rosenberg \u003cdrosenberg@vsecurity.com\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nReviewed-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "98d5dc13e7e74b77ca3b4c3cbded9f48d2dbbbb7",
      "tree": "8e75f67b28b5b0d909483a06bb5258e0ba0c9789",
      "parents": [
        "5df67083488ccbad925f583b698ab38f8629a016"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Jan 20 06:19:37 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Feb 01 07:17:27 2011 -0500"
      },
      "message": "btrfs: fix return value check of btrfs_start_transaction()\n\nThe error check of btrfs_start_transaction() is added, and the mistake\nof the error check on several places is corrected.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "abd30bb0af9d4671506502278e8631bed9e3c35c",
      "tree": "73e00f8712c8e4460647dd889cc32503fb56c21b",
      "parents": [
        "3612b49598c303cfb22a4b609427f829828e2427"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Jan 24 00:57:10 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "btrfs: check return value of btrfs_start_ioctl_transaction() properly\n\nbtrfs_start_ioctl_transaction() returns ERR_PTR(), not NULL.\nSo, it is necessary to use IS_ERR() to check the return value.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3612b49598c303cfb22a4b609427f829828e2427",
      "tree": "d0e9eabb176777ab80af5d78eab0555044172370",
      "parents": [
        "34d19bada00f4825588b338a8ee193820f9ceeb0"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Jan 25 02:51:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:40:37 2011 -0500"
      },
      "message": "btrfs: fix return value check of btrfs_join_transaction()\n\nThe error check of btrfs_join_transaction()/btrfs_join_transaction_nolock()\nis added, and the mistake of the error check in several places is\ncorrected.\n\nFor more stable Btrfs, I think that we should reduce BUG_ON().\nBut, I think that long time is necessary for this.\nSo, I propose this patch as a short-term solution.\n\nWith this patch:\n - To more stable Btrfs, the part that should be corrected is clarified.\n - The panic isn\u0027t done by the NULL pointer reference etc. (even if\n   BUG_ON() is increased temporarily)\n - The error code is returned in the place where the error can be easily\n   returned.\n\nAs a long-term plan:\n - BUG_ON() is reduced by using the forced-readonly framework, etc.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "eab49bec41136460b12ac0fbeceeb88386d538c7",
      "tree": "d2ad3e163407d7779d53fdaa0dedcc3b934106de",
      "parents": [
        "acce952b0263825da32cf10489413dec78053347",
        "4d728ec7aefdca5419d2ebfb28c147e81a4b59f4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:24:59 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 28 16:24:59 2011 -0500"
      },
      "message": "Merge branch \u0027bug-fixes\u0027 of git://repo.or.cz/linux-btrfs-devel into btrfs-38\n"
    },
    {
      "commit": "4d728ec7aefdca5419d2ebfb28c147e81a4b59f4",
      "tree": "19dc56836d053c04d796ddca126dd60232175bb0",
      "parents": [
        "b897abec032deb7cc3ce67392a1f544ac965ddea"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jan 26 14:10:43 2011 +0800"
      },
      "committer": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Jan 27 01:11:18 2011 +0800"
      },
      "message": "Btrfs: Fix file clone when source offset is not 0\n\nSuppose:\n- the source extent is: [0, 100]\n- the src offset is 10\n- the clone length is 90\n- the dest offset is 0\n\nThis statement:\n\n\tnew_key.offset \u003d key.offset + destoff - off\n\nwill produce such an extent for the dest file:\n\n\t[ino, BTRFS_EXTENT_DATA_KEY, -10]\n\n, which is obviously wrong.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "050006a753bab8ba05f2113cc57ba49398cd5521"
}
