)]}'
{
  "log": [
    {
      "commit": "c11d2c236cc260b36ef644700fbe99bcc7e7da33",
      "tree": "e240721e0b6e5784177ac39bc299db4063b93c72",
      "parents": [
        "442a4f6308e694e0fa6025708bd5e4e424bbf51c"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:09 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:40 2012 -0400"
      },
      "message": "Btrfs: add ioctl to get and reset the device stats\n\nAn ioctl interface is added to get the device statistic counters.\nA second ioctl is added to atomically get and reset these counters.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "442a4f6308e694e0fa6025708bd5e4e424bbf51c",
      "tree": "e782db1bcbec25283048d77871e0bed7ad04567c",
      "parents": [
        "d07eb9117050c9ed3f78296ebcc06128b52693be"
      ],
      "author": {
        "name": "Stefan Behrens",
        "email": "sbehrens@giantdisaster.de",
        "time": "Fri May 25 16:06:08 2012 +0200"
      },
      "committer": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed May 30 10:23:39 2012 -0400"
      },
      "message": "Btrfs: add device counters for detected IO and checksum errors\n\nThe goal is to detect when drives start to get an increased error rate,\nwhen drives should be replaced soon. Therefore statistic counters are\nadded that count IO errors (read, write and flush). Additionally, the\nsoftware detected errors like checksum errors and corrupted blocks are\ncounted.\n\nSigned-off-by: Stefan Behrens \u003csbehrens@giantdisaster.de\u003e\n"
    },
    {
      "commit": "d04b1debc92535453df2494d0b019edf0bb91003",
      "tree": "386e5ce40a3d4c211bafc20da9480eb6783f6ab4",
      "parents": [
        "17de39ac17bf99b8bf0d819d13668d5048836efc"
      ],
      "author": {
        "name": "Alexander Block",
        "email": "ablock84@googlemail.com",
        "time": "Fri May 04 15:16:06 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri May 04 15:16:06 2012 -0400"
      },
      "message": "btrfs: Fix mismatching struct members in ioctl.h\n\nFix the size members of btrfs_ioctl_ino_path_args and\nbtrfs_ioctl_logical_ino_args. The user space btrfs-progs utilities used\n__u64 and the kernel headers used __u32 before.\n\nSigned-off-by: Alexander Block \u003cablock84@googlemail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "19a39dce3b9bf0244d19a446718ad6f7605ff099",
      "tree": "4834e177b8b64405aa858bfdcfbabd890277102b",
      "parents": [
        "de322263d3a6d4ffd4ed7c4d0c6536e9497aec9b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: add balance progress reporting\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "a7e99c691af553fc15ac46a51f130b7c59a65f76",
      "tree": "55491f285683951d509819a66e614ac6f12659dd",
      "parents": [
        "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for canceling restriper\n\nImplement an ioctl for canceling restriper.  Currently we wait until\nrelocation of the current block group is finished, in future this can be\ndone by triggering a commit.  Balance item is deleted and no memory\nabout the interrupted balance is kept.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "837d5b6e46d1a4af5b6cc8f2fe83cb5de79a2961",
      "tree": "4ef87d05240e90480749c345274a83094caf66f0",
      "parents": [
        "9555c6c180600b40f6e86bd4dc53bf47e06ed663"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:49 2012 +0200"
      },
      "message": "Btrfs: allow for pausing restriper\n\nImplement an ioctl for pausing restriper.  This pauses the relocation,\nbut balance is still considered to be \"in progress\": balance item is\nnot deleted, other volume operations cannot be started, etc.  If paused\nin the middle of profile changing operation we will continue making\nallocations with the target profile.\n\nAdd a hook to close_ctree() to pause restriper and free its data\nstructures on unmount.  (It\u0027s safe to unmount when restriper is in\n\"paused\" state, we will resume with the same parameters on the next\nmount)\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "c9e9f97bdfb64d06e9520f8e4f37674ac21cc9bc",
      "tree": "22d695a7a461068c773b327e5c89a045ade5d8a3",
      "parents": [
        "10ea00f55a07f8f9536d9112b95108a86f700bab"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "committer": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Mon Jan 16 22:04:47 2012 +0200"
      },
      "message": "Btrfs: add basic restriper infrastructure\n\nAdd basic restriper infrastructure: extended balancing ioctl and all\nrelated ioctl data structures, add data structure for tracking\nrestriper\u0027s state to fs_info, etc.  The semantics of the old balancing\nioctl are fully preserved.\n\nExplicitly disallow any volume operations when balance is in progress.\n\nSigned-off-by: Ilya Dryomov \u003cidryomov@gmail.com\u003e\n"
    },
    {
      "commit": "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": "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": "a542ad1bafc7df9fc16de8a6894b350a4df75572",
      "tree": "ece4cabbed85ceea326233735134863b2feec0e6",
      "parents": [
        "0a7a0519d1789f3a222849421dbe91b6bddb88f5"
      ],
      "author": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Mon Jun 13 19:52:59 2011 +0200"
      },
      "committer": {
        "name": "Jan Schmidt",
        "email": "list.btrfs@jan-o-sch.net",
        "time": "Thu Sep 29 12:54:27 2011 +0200"
      },
      "message": "btrfs: added helper functions to iterate backrefs\n\nThese helper functions iterate back references and call a function for each\nbackref. There is also a function to resolve an inode to a path in the\nfile system.\n\nSigned-off-by: Jan Schmidt \u003clist.btrfs@jan-o-sch.net\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": "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": "a2de733c78fa7af51ba9670482fa7d392aa67c57",
      "tree": "d88817bc7aba94e7efea530efac5ef190c1b799c",
      "parents": [
        "7cf96da3ec7ca225acf4f284b0e904a1f5f98821"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Tue Mar 08 14:14:00 2011 +0100"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Thu May 12 14:45:20 2011 +0200"
      },
      "message": "btrfs: scrub\n\nThis adds an initial implementation for scrub. It works quite\nstraightforward. The usermode issues an ioctl for each device in the\nfs. For each device, it enumerates the allocated device chunks. For\neach chunk, the contained extents are enumerated and the data checksums\nfetched. The extents are read sequentially and the checksums verified.\nIf an error occurs (checksum or EIO), a good copy is searched for. If\none is found, the bad copy will be rewritten.\nAll enumerations happen from the commit roots. During a transaction\ncommit, the scrubs get paused and afterwards continue from the new\nroots.\n\nThis commit is based on the series originally posted to linux-btrfs\nwith some improvements that resulted from comments from David Sterba,\nIlya Dryomov and Jan Schmidt.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\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": "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": "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": "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": "ce769a2904bf5a9110ef534a7702397e38e2b3e9",
      "tree": "f783a7e8ca35053f534ad2bc64e52bf0d08442c2",
      "parents": [
        "854d2c3531e6d32e76b94ca5e096ea54c7497e40"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 16 00:02:26 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 16 14:24:27 2010 -0400"
      },
      "message": "Btrfs: use __u64 types in ioctl.h\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1406e4327be3a533a2b18582f715ce2cfbcf6804",
      "tree": "40cafa639095b1a652cd013746394b7a77e52b69",
      "parents": [
        "2ac55d41b5d6bf49e76bc85db5431240617e2f8f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Jan 13 18:19:06 2010 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:14 2010 -0400"
      },
      "message": "Btrfs: add a \"df\" ioctl for btrfs\n\ndf is a very loaded question in btrfs.  This gives us a way to get the per-space\nusage information so we can tell exactly what is in use where.  This will help\nus figure out ENOSPC problems, and help users better understand where their disk\nspace is going.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1e701a3292e25a6c4939cad9f24951dc6b6ad853",
      "tree": "899887a99aae82fe113bffedccb90a76e5473f8b",
      "parents": [
        "940100a4a7b78b27e60a3e72340fb9b5397dcdb2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Mar 11 09:42:04 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:10 2010 -0400"
      },
      "message": "Btrfs: add new defrag-range ioctl.\n\nThe btrfs defrag ioctl was limited to doing the entire file.  This\ncommit adds a new interface that can defrag a specific range inside\nthe file.\n\nIt can also force compression on the file, allowing you to selectively\ncompress individual files after they were created, even when mount -o\ncompress isn\u0027t turned on.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6ef5ed0d386be5c43ec66d6f2999919c0893558b",
      "tree": "7ec391a0525506eb03bcbb0b5e19709f530b0b74",
      "parents": [
        "73f73415caddbc01d9f10c03e0a677d5b3d11569"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Dec 11 21:11:29 2009 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 11:00:08 2010 -0400"
      },
      "message": "Btrfs: add ioctl and incompat flag to set the default mount subvol\n\nThis patch needs to go along with my previous patch.  This lets us set the\ndefault dir item\u0027s location to whatever root we want to use as our default\nmounting subvol.  With this we don\u0027t have to use mount -o subvol\u003d\u003ctree id\u003e\nanymore to mount a different subvol, we can just set the new one and it will\njust magically work.  I\u0027ve done some moderate testing with this, mostly just\nswitching the default mount around, mounting subvols and the default mount at\nthe same time and such, everything seems to work.  Thanks,\n\nOlder kernels would generally be able to still mount the filesystem with the\ndefault subvolume set, but it would result in a different volume being mounted,\nwhich could be an even more unpleasant suprise for users.  So if you set your\ndefault subvolume, you can\u0027t go back to older kernels.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ac8e9819d71f907a0532b01b22c26b56bbbcbd21",
      "tree": "5bdebf68182139e664b59286f6f7071e3ada2b18",
      "parents": [
        "98d377a0894e6bcca44eafd4d2eee74e8af4db83"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Feb 28 15:39:26 2010 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 15 10:55:10 2010 -0400"
      },
      "message": "Btrfs: add search and inode lookup ioctls\n\nThe search ioctl is a generic tool for doing btree searches from\nuserland applications.  The first user of the search ioctl is a\nsubvolume listing feature, but we\u0027ll also use it to find new\nfiles in a subvolume.\n\nThe search ioctl allows you to specify min and max keys to search for,\nalong with min and max transid.  It returns the items along with a\nheader that includes the item key.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "76dda93c6ae2c1dc3e6cde34569d6aca26b0c918",
      "tree": "f5ca46ec89d4ae2c762952d5f35e2c6f95ac046a",
      "parents": [
        "4df27c4d5cc1dda54ed7d0a8389347f2df359cf9"
      ],
      "author": {
        "name": "Yan, Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Sep 21 16:00:26 2009 -0400"
      },
      "message": "Btrfs: add snapshot/subvolume destroy ioctl\n\nThis patch adds snapshot/subvolume destroy ioctl.  A subvolume that isn\u0027t being\nused and doesn\u0027t contains links to other subvolumes can be destroyed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c071fcfdb60e7abbe95e02460005d6bca165bf24",
      "tree": "2f7b32f7a554e03e012586ae429ea3bd2794fcb6",
      "parents": [
        "1d9e2ae949411c2f329f30e01ea0355cd02c4296"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 16 11:59:08 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 16 11:59:08 2009 -0500"
      },
      "message": "Btrfs: fix ioctl arg size (userland incompatible change!)\n\nThe structure used to send device in btrfs ioctl calls was not\nproperly aligned, and so 32 bit ioctls would not work properly on\n64 bit kernels.\n\nWe could fix this with compat ioctls, but we\u0027re just one byte away\nand it doesn\u0027t make sense at this stage to carry about the compat ioctls\nforever at this stage in the project.\n\nThis patch brings the ioctl arg up to an evenly aligned 4k.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3de4586c5278a28107030c336956381f69ff7a9d",
      "tree": "d636e3806cd5ecff71927d0300e46526fa23de1a",
      "parents": [
        "4ce4cb526f67775c1cce3e3fa01c292672ba874e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:02:50 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:02:50 2008 -0500"
      },
      "message": "Btrfs: Allow subvolumes and snapshots anywhere in the directory tree\n\nBefore, all snapshots and subvolumes lived in a single flat directory.  This\nwas awkward and confusing because the single flat directory was only writable\nwith the ioctls.\n\nThis commit changes the ioctls to create subvols and snapshots at any\npoint in the directory tree.  This requires making separate ioctls for\nsnapshot and subvol creation instead of a combining them into one.\n\nThe subvol ioctl does:\n\nbtrfsctl -S subvol_name parent_dir\n\nAfter the ioctl is done subvol_name lives inside parent_dir.\n\nThe snapshot ioctl does:\n\nbtrfsctl -s path_for_snapshot root_to_snapshot\n\npath_for_snapshot can be an absolute or relative path.  btrfsctl breaks it up\ninto directory and basename components.\n\nroot_to_snapshot can be any file or directory in the FS.  The snapshot\nis taken of the entire root where that file lives.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c5c9cd4d1b827fe545ed2a945e91e3a6909f3886",
      "tree": "5dae28d8cd871952b105cdc2822ef4e54f1f02f3",
      "parents": [
        "2ed6d66408527be0d1c6131d44cec7e86008ba26"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 12 14:32:25 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:32:25 2008 -0500"
      },
      "message": "Btrfs: allow clone of an arbitrary file range\n\nThis patch adds an additional CLONE_RANGE ioctl to clone an arbitrary \n(block-aligned) file range to another file.  The original CLONE ioctl \nbecomes a special case of cloning the entire file range.  The logic is a \nbit more complex now since ranges may be cloned to different offsets, and \nbecause we may only be cloning the beginning or end of a particular extent \nor checksum item.\n\nAn additional sanity check ensures the source and destination files aren\u0027t \nthe same (which would previously deadlock), although eventually this could \nbe extended to allow the duplication of file data at a different offset \nwithin the same file.\n\nAny extents within the destination range in the target file are dropped.\n\nWe currently do not cope with the case where a compressed inline extent \nneeds to be split.  This will probably require decompressing the extent \ninto a temporary address_space, and inserting just the cloned portion as a \nnew compressed inline extent.  For now, just return -EINVAL in this case.  \nNote that this never comes up in the more common case of cloning an entire \nfile.\n    \nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "6bf13c0cc833bf5ba013d6aa60379484bf48c4e6",
      "tree": "ae2b54a1a26a89fece49f6b6d6dff8448efab542",
      "parents": [
        "eba12c7bfcb4855fc757357e5e5b0b9a474499ba"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jun 10 10:07:39 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:03 2008 -0400"
      },
      "message": "Btrfs: transaction ioctls\n\nThese ioctls let a user application hold a transaction open while it\nperforms a series of operations.  A final ioctl does a sync on the fs\n(closing the current transaction).  This is the main requirement for\nCeph\u0027s OSD to be able to keep the data it\u0027s storing in a btrfs volume\nconsistent, and AFAICS it works just fine.  The application would do\nsomething like\n\n\tfd \u003d ::open(\"some/file\", O_RDONLY);\n\t::ioctl(fd, BTRFS_IOC_TRANS_START);\n\t/* do a bunch of stuff */\n\t::ioctl(fd, BTRFS_IOC_TRANS_END);\nor just\n\t::close(fd);\n\nAnd to ensure it commits to disk,\n\n\t::ioctl(fd, BTRFS_IOC_SYNC);\n\nWhen a transaction is held open, the trans_handle is attached to the\nstruct file (via private_data) so that it will get cleaned up if the\nprocess dies unexpectedly.  A held transaction is also ended on fsync() to\navoid a deadlock.\n\nA misbehaving application could also deliberately hold a transaction open,\neffectively locking up the FS, so it may make sense to restrict something\nlike this to root or something.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f2eb0a241f0e5c135d93243b0236cb1f14c305e0",
      "tree": "dd3141efb9142a294222b9195593371887519207",
      "parents": [
        "d6bfde8765668c8687de72f7a40f52acdf4f2f19"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 02 14:43:14 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:02 2008 -0400"
      },
      "message": "Btrfs: Clone file data ioctl\n\nAdd a new ioctl to clone file data\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "788f20eb5affef584e75ea84bb80a4c3352a2c0e",
      "tree": "8d803c865e8f0dd7fa14bdd1f2157b4c8649baa9",
      "parents": [
        "8e7bf94fd5f44fa585e29fbe6a1bfabc04aea7cf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Apr 28 15:29:42 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:02 2008 -0400"
      },
      "message": "Btrfs: Add new ioctl to add devices\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8a4b83cc8bd75fca29ac68615896d9e92820e7c2",
      "tree": "b7f99cf53c322665b78cca10742cc734ad070729",
      "parents": [
        "239b14b32dc39232ebf9cce29ff77c4c564355fd"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Mar 24 15:02:07 2008 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:04:01 2008 -0400"
      },
      "message": "Btrfs: Add support for device scanning and detection ioctls\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "edbd8d4efe4ddaf29a175ae504e2c9a05a96ebee",
      "tree": "c5156fe3a75e97972186c9a933a631b258490a7e",
      "parents": [
        "5d4fb734b4cb89a3902d6de309af0f6f3e63fe73"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 21 16:27:24 2007 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Sep 25 11:03:58 2008 -0400"
      },
      "message": "Btrfs: Support for online FS resize (grow and shrink)\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6702ed490ca0bb44e17131818a5a18b773957c5a",
      "tree": "f6bc4b77e58506a68f1ab539ca6c96854f39f92d",
      "parents": [
        "3c69faecb8d83cb2ef085a98b196a3fecea67725"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Aug 07 16:15:09 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Aug 07 16:15:09 2007 -0400"
      },
      "message": "Btrfs: Add run time btree defrag, and an ioctl to force btree defrag\n\nThis adds two types of btree defrag, a run time form that tries to\ndefrag recently allocated blocks in the btree when they are still in ram,\nand an ioctl that forces defrag of all btree blocks.\n\nFile data blocks are not defragged yet, but this can make a huge difference\nin sequential btree reads.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6cbd55707802b98843f953d1ae6d8f5bcd9a76c0",
      "tree": "5c2d9de53ab948c7aae31660dbabfb5a9fb649b5",
      "parents": [
        "8a712645c3fbbf43293af8640af337b7cf1fef01"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jun 12 09:07:21 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Jun 12 09:07:21 2007 -0400"
      },
      "message": "Btrfs: add GPLv2\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8352d8a473ac84bf7a1c69690b626946d744ca58",
      "tree": "58686bb1de3d994a881d6176dafd7c16dfadeeca",
      "parents": [
        "7eccb903a817e890c947ba4bc90c6a9af9b4219a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Apr 12 10:43:05 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Thu Apr 12 10:43:05 2007 -0400"
      },
      "message": "Btrfs: add disk ioctl, mostly working\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c5739bba5260a59cebd20a51a55080592c8d3b07",
      "tree": "ff33f7acddcfc60e7395209ff949bb9d90afda32",
      "parents": [
        "0f7d52f4431c530b4f39c524448c688bb7754de5"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 10 09:27:04 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@hera.kernel.org",
        "time": "Tue Apr 10 09:27:04 2007 -0400"
      },
      "message": "Btrfs: snapshot progress\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ]
}
