)]}'
{
  "log": [
    {
      "commit": "4b48d9d44ebe0e8c31b4fe3b7480941576fff613",
      "tree": "457e0f1214ba44742f63e3cfc472ffbec206d0f3",
      "parents": [
        "b762666cc7c9f83ac5759127c29dfad438c09e48",
        "c071fcfdb60e7abbe95e02460005d6bca165bf24"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 16 09:32:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 16 09:32:33 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix ioctl arg size (userland incompatible change!)\n  Btrfs: Clear the device-\u003erunning_pending flag before bailing on congestion\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": "1d9e2ae949411c2f329f30e01ea0355cd02c4296",
      "tree": "64287747fdbb1641052d8ec146c8997c3797bc48",
      "parents": [
        "e293e97e363e419d8a3628a927321e3f75206a0b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 16 11:58:19 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 16 11:58:19 2009 -0500"
      },
      "message": "Btrfs: Clear the device-\u003erunning_pending flag before bailing on congestion\n\nBtrfs maintains a queue of async bio submissions so the checksumming\nthreads don\u0027t have to wait on get_request_wait.  In order to avoid\nextra wakeups, this code has a running_pending flag that is used\nto tell new submissions they don\u0027t need to wake the thread.\n\nWhen the threads notice congestion on a single device, they\nmay decide to requeue the job and move on to other devices.  This\nmakes sure the running_pending flag is cleared before the\njob is requeued.\n\nIt should help avoid IO stalls by making sure the task is woken up\nwhen new submissions come in.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "1bcbf31337391a2f54ef6c1e8871c2de5944a7dc",
      "tree": "f027bf7b9e0a96d1df01ecd860699c016a875963",
      "parents": [
        "71038f527f3665f562cf9afe083df729958a099b"
      ],
      "author": {
        "name": "Qinghuang Feng",
        "email": "qhfeng.kernel@gmail.com",
        "time": "Thu Jan 15 13:51:03 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 15 16:39:38 2009 -0800"
      },
      "message": "btrfs \u0026 squashfs: Move btrfs and squashfsto\u0027s magic number to \u003clinux/magic.h\u003e\n\nUse the standard magic.h for btrfs and squashfs.\n\nSigned-off-by: Qinghuang Feng \u003cqhfeng.kernel@gmail.com\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.co.uk\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0176260fc30842e358cf34afa7dcd9413db44822",
      "tree": "c41a99cfbfc904740f81b7b948a05d259ad3aec4",
      "parents": [
        "f4b477c47332367d35686bd2b808c2156b96d7c7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 10 06:09:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jan 10 06:09:52 2009 -0800"
      },
      "message": "btrfs: fix for write_super_lockfs/unlockfs error handling\n\nCommit c4be0c1dc4cdc37b175579be1460f15ac6495e9a added the ability for\nwrite_super_lockfs to return errors, and renamed them to match.  But\nbtrfs didn\u0027t get converted.\n\nDo the minimal conversion to make it compile again.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e293e97e363e419d8a3628a927321e3f75206a0b",
      "tree": "067fb82bb4cabba35429b28c9e43f9614aea6274",
      "parents": [
        "755efdc3c4d3b42d5ffcef0f4d6e5b37ecd3bf21"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 09 13:14:17 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Jan 09 13:14:17 2009 -0500"
      },
      "message": "Btrfs: explicitly mark the tree log root for writeback\n\nEach subvolume has an extent_state_tree used to mark metadata\nthat needs to be sent to disk while syncing the tree.  This is\nused in addition to the dirty bits on the pages themselves so that\na single subvolume can be sent to disk efficiently in disk order.\n\nNormally this marking happens in btrfs_alloc_free_block, which also does\nspecial recording of dirty tree blocks for the tree log roots.\n\nYan Zheng noticed that when the root of the log tree is allocated, it is added\nto the wrong writeback list.  The fix used here is to explicitly set\nit dirty as part of tree log creation.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "755efdc3c4d3b42d5ffcef0f4d6e5b37ecd3bf21",
      "tree": "b3eadbdf6d472189a7221080b7e44f2ff0f0ef7b",
      "parents": [
        "709ac06a148a33493d3e2f9391bb746b067d96d6"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 19:56:59 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 19:56:59 2009 -0500"
      },
      "message": "Btrfs: Drop the hardware crc32c asm code\n\nThis is already in the arch specific directories in mainline and\nshouldn\u0027t be copied into btrfs.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "709ac06a148a33493d3e2f9391bb746b067d96d6",
      "tree": "844a1228e7e4a980beb2754235297bfb0119452e",
      "parents": [
        "9ab86c8e01c3f298dba0cbf2502c635b7f6fc6f9"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed Jan 07 09:54:24 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 09:54:24 2009 -0500"
      },
      "message": "Btrfs: Add Documentation/filesystem/btrfs.txt, remove old COPYING\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9ab86c8e01c3f298dba0cbf2502c635b7f6fc6f9",
      "tree": "4404dc71b5987f240fa8e59d24586304d04d8810",
      "parents": [
        "cc7172defcf253335b16cf703fe4ac1ade15e1b1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 09:48:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Jan 07 09:48:51 2009 -0500"
      },
      "message": "Btrfs: kmap_atomic(KM_USER0) is safe for btrfs_readpage_end_io_hook\n\nNone of the checksum verification code schedules, so we can use the faster\nkmap_atomic\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "cc7172defcf253335b16cf703fe4ac1ade15e1b1",
      "tree": "995f5404304502a0cb13f5fd4b7be24e42f19244",
      "parents": [
        "07d400a6df4767a90d49a153fdb7f4cfa1e3f23e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 13:26:40 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 13:26:40 2009 -0500"
      },
      "message": "Btrfs: Don\u0027t use kmap_atomic(..., KM_IRQ0) during checksum verifies\n\nChecksum verification happens in a helper thread, and there is no\nneed to mess with interrupts.  This switches to kmap() instead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "07d400a6df4767a90d49a153fdb7f4cfa1e3f23e",
      "tree": "8ca61bb87ffb72343b8d392a26fb7a6265f6fa3d",
      "parents": [
        "1ba12553f3600ffebad226c5204ab0e46df98161"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 11:42:00 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 11:42:00 2009 -0500"
      },
      "message": "Btrfs: tree logging checksum fixes\n\nThis patch contains following things.\n\n1) Limit the max size of btrfs_ordered_sum structure to PAGE_SIZE.  This\nstruct is kmalloced so we want to keep it reasonable.\n\n2) Replace copy_extent_csums by btrfs_lookup_csums_range.  This was\nduplicated code in tree-log.c\n\n3) Remove replay_one_csum. csum items are replayed at the same time as\n   replaying file extents. This guarantees we only replay useful csums.\n\n4) nbytes accounting fix.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "1ba12553f3600ffebad226c5204ab0e46df98161",
      "tree": "081d39d935782a34d4726a55f608de3237b57d9d",
      "parents": [
        "180591bcfed1a2cec048abb21d3dab840625caab"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 09:58:02 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 09:58:02 2009 -0500"
      },
      "message": "Btrfs: don\u0027t change file extent\u0027s ram_bytes in btrfs_drop_extents\n\nbtrfs_drop_extents doesn\u0027t change file extent\u0027s ram_bytes\nin the case of booked extent. To be consistent, we should\nalso not change ram_bytes when truncating existing extent.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "180591bcfed1a2cec048abb21d3dab840625caab",
      "tree": "9bd247570ef8f3ed33afcb25bb365ccd707c8a73",
      "parents": [
        "9ca03b997f71787e345951e6267fbd8eba14d49f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Jan 06 09:58:06 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 09:58:06 2009 -0500"
      },
      "message": "Btrfs: Use btrfs_join_transaction to avoid deadlocks during snapshot creation\n\nSnapshot creation happens at a specific time during transaction commit.  We\nneed to make sure the code called by snapshot creation doesn\u0027t wait\nfor the running transaction to commit.\n\nThis changes btrfs_delete_inode and finish_pending_snaps to use\nbtrfs_join_transaction instead of btrfs_start_transaction to avoid deadlocks.\n\nIt would be better if btrfs_delete_inode didn\u0027t use the join, but the\ncall path that triggers it is:\n\nbtrfs_commit_transaction-\u003ecreate_pending_snapshots-\u003e\ncreate_pending_snapshot-\u003ebtrfs_lookup_dentry-\u003e\nfixup_tree_root_location-\u003ebtrfs_read_fs_root-\u003e\nbtrfs_read_fs_root_no_name-\u003ebtrfs_orphan_cleanup-\u003eiput\n\nThis will be fixed in a later patch by moving the orphan cleanup to the\ncleaner thread.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "9ca03b997f71787e345951e6267fbd8eba14d49f",
      "tree": "f18ecb730a66d542ae1c29e2c3438b78ca40859c",
      "parents": [
        "860a7a0c321ce0267fdb6ebdcd03aa63c5fcb31d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 09:38:55 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Jan 06 09:38:55 2009 -0500"
      },
      "message": "Btrfs: drop remaining LINUX_KERNEL_VERSION checks and compat code\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "43b774ba1378dc5e952aadb829048bbe90ba33e4",
      "tree": "a7074cbb9787cc225ddeae88927f877e52344d5d",
      "parents": [
        "d397712bcc6a759a560fd247e6053ecae091f958"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 22:05:48 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 22:05:48 2009 -0500"
      },
      "message": "Btrfs: drop EXPORT symbols from extent_io.c\n\nThey should stay out until this is turned into generic code.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d397712bcc6a759a560fd247e6053ecae091f958",
      "tree": "9da8daebb870d8b8b1843507c4621715e23dd31a",
      "parents": [
        "1f3c79a28c8837e8572b98f6d14142d9a6133c56"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 21:25:51 2009 -0500"
      },
      "message": "Btrfs: Fix checkpatch.pl warnings\n\nThere were many, most are fixed now.  struct-funcs.c generates some warnings\nbut these are bogus.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f3c79a28c8837e8572b98f6d14142d9a6133c56",
      "tree": "09c7a7c46186806ec1ecd34f03780ef15e397245",
      "parents": [
        "ec051c0f929afe5c42c24bb07abf577c616c208c"
      ],
      "author": {
        "name": "Liu Hui",
        "email": "onlyflyer@gmail.com",
        "time": "Mon Jan 05 15:57:51 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:57:51 2009 -0500"
      },
      "message": "Btrfs: Fix free block discard calls down to the block layer\n\nThis is a patch to fix discard semantic to make Btrfs work with FTL and SSD.\nWe can improve FTL\u0027s performance by telling it which sectors are freed by file\nsystem. But if we don\u0027t tell FTL the information of free sectors in proper\ntime, the transaction mechanism of Btrfs will be destroyed and Btrfs could not\nroll back the previous transaction under the power loss condition.\n\nThere are some problems in the old implementation:\n1, In __free_extent(), the pinned down extents should not be discarded.\n2, In free_extents(), the free extents are all pinned, so they need to\nbe discarded in transaction committing time instead of free_extents().\n3, The reserved extent used by log tree should be discard too.\n\nThis patch change discard behavior as follows:\n1, For the extents which need to be free at once,\n   we discard them in update_block_group().\n2, Delay discarding the pinned extent in btrfs_finish_extent_commit()\n   when committing transaction.\n3, Remove discarding from free_extents() and __free_extent()\n4, Add discard interface into btrfs_free_reserved_extent()\n5, Discard sectors before updating the free space cache, otherwise,\n   FTL will destroy file system data.\n\n"
    },
    {
      "commit": "ec051c0f929afe5c42c24bb07abf577c616c208c",
      "tree": "a9b75cd422cf7dde92c9dbb8828feb062e2c35ec",
      "parents": [
        "2d69a0f88459fae35df3ddef4934a2dad67e2765"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "message": "Btrfs: avoid orphan inode caused by log replay\n\ndrop_one_dir_item does not properly update inode\u0027s link count. It can be\nreproduced by executing following commands:\n\n#touch test\n#sync\n#rm -f test\n#dd if\u003d/dev/zero bs\u003d4k count\u003d1 of\u003dtest conv\u003dfsync\n#echo b \u003e /proc/sysrq-trigger\n\nThis fixes it by adding an BTRFS_ORPHAN_ITEM_KEY for the inode\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "2d69a0f88459fae35df3ddef4934a2dad67e2765",
      "tree": "20901742766992c0b1a00e56c5c5535daa8be35b",
      "parents": [
        "dd3fd8bdf7238f99561ee236060b04d5b9a84953"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "message": "Btrfs: avoid potential super block corruption\n\nThe data in fs_info-\u003esuper_for_commit are zeros before the\nfirst transaction commit. If tree log sync and system crash\nboth occur before the first transaction commit, super block\nwill get corrupted.\n\nThis fixes it by properly filling in the super_for_commit field at\nopen time.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "dd3fd8bdf7238f99561ee236060b04d5b9a84953",
      "tree": "5ed82a1018b353b17a87ca9206427a305d103371",
      "parents": [
        "1f48366084a7b046bcb7741ed4e607774f96e3da"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "message": "Btrfs: do not call kfree if kmalloc failed in btrfs_sysfs_add_super\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\n\n"
    },
    {
      "commit": "1f48366084a7b046bcb7741ed4e607774f96e3da",
      "tree": "e85d1e0dccccc78689a833373933c001c5d05adb",
      "parents": [
        "c584482b47f47b051cdc1d5236b99ad18f1b1cfb"
      ],
      "author": {
        "name": "Shen Feng",
        "email": "shen@cn.fujitsu.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:43:42 2009 -0500"
      },
      "message": "Btrfs: fix a memory leak in btrfs_get_sb\n\nsubvol_name should be freed if error occurs.\n\nSigned-off-by: Shen Feng \u003cshen@cn.fujitsu.com\u003e\n\n"
    },
    {
      "commit": "c584482b47f47b051cdc1d5236b99ad18f1b1cfb",
      "tree": "9f1627b79412e91561aebd23d44f64ede3f720db",
      "parents": [
        "9aead43588f4bdb1bb61e348ad0f33794bbddc0f"
      ],
      "author": {
        "name": "Liu Hui",
        "email": "onlyflyer@gmail.com",
        "time": "Mon Jan 05 15:49:55 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:49:55 2009 -0500"
      },
      "message": "Btrfs: Fix typo in clear_state_cb\n\nIn clear_state_cb, we should check \u0027tree-\u003eops-\u003eclear_bit_hook\u0027 instead\nof \u0027tree-\u003eops-\u003eset_bit_hook\u0027.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "9aead43588f4bdb1bb61e348ad0f33794bbddc0f",
      "tree": "294c6333192d15cbf7ff8323920e8bc99e70f91c",
      "parents": [
        "52c2617990fed072220708d6b771dc10f37547b0"
      ],
      "author": {
        "name": "yanhai zhu",
        "email": "zhu.yanhai@gmail.com",
        "time": "Mon Jan 05 15:49:11 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:49:11 2009 -0500"
      },
      "message": "Btrfs: Fix memset length in btrfs_file_write\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "52c2617990fed072220708d6b771dc10f37547b0",
      "tree": "6f97a07b56927bc96fabb0669cd31d0d0d28273a",
      "parents": [
        "e441d54de4fd97dd381f3e73636f5ba51ff4c7d9"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Jan 05 15:43:43 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 15:43:43 2009 -0500"
      },
      "message": "Btrfs: update directory\u0027s size when creating subvol/snapshot\n\nMake sure directory\u0027s size properly updated when creating\nsubvol/snapshot.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "e441d54de4fd97dd381f3e73636f5ba51ff4c7d9",
      "tree": "b0d664ffaa89cec80e6aaac11977c7f6aa92ff63",
      "parents": [
        "b34b086c1c1d934c5314d46ba25ccfa9acc471ae"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 16:57:23 2009 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 05 16:57:23 2009 -0500"
      },
      "message": "Btrfs: add permission checks to the ioctls\n\nOnly root can add/remove devices\nOnly root can defrag subtrees\nOnly files open for writing can be defragged\nOnly files open for writing can be the destination for a clone\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b34b086c1c1d934c5314d46ba25ccfa9acc471ae",
      "tree": "e95f18b5f64ac96d14189c4a5b12b34fe33b6cda",
      "parents": [
        "1f80e4db0fcb3bdc2be51389baf558a9519682f0"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 19 15:43:22 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 19 15:43:22 2008 -0500"
      },
      "message": "Btrfs: Fix compile warning around num_online_cpus() in a min statement\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1f80e4db0fcb3bdc2be51389baf558a9519682f0",
      "tree": "3a47b6fda78aab8a1a4e9e7f021bb9126a298496",
      "parents": [
        "34bf63c4ddddd92bfba3387d134c37bf4426b2ce"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 19 10:59:04 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 19 10:59:04 2008 -0500"
      },
      "message": "Btrfs: set EXTENT_BOUNDARY bit before marking extent delalloc.\n\nThere is a race in relocate_inode_pages, it happens when\nfind_delalloc_range finds the delalloc extent before the\nboundary bit is set. Thank you,\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "34bf63c4ddddd92bfba3387d134c37bf4426b2ce",
      "tree": "a7a2f1fc2d88cb5a5b0a1ca54aa9647ec6e51fa4",
      "parents": [
        "ab67b7c1f780a8a321fe7ee49117775009350fb3"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 19 10:58:46 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 19 10:58:46 2008 -0500"
      },
      "message": "Btrfs: properly update block accounting for metadata\n\nThis adds the missing block accounting code to finish_current_insert and makes\nblock accounting for root item properly protected by the delalloc spin lock.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "ab67b7c1f780a8a321fe7ee49117775009350fb3",
      "tree": "35a7ac2e5f641d8f11d472d7f84601d16f4fcddc",
      "parents": [
        "b16281c30c841c6d999ff36c8d903f42a69315f2"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 19 10:58:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 19 10:58:39 2008 -0500"
      },
      "message": "Btrfs: Add missing mnt_drop_write in ioctl.c\n\nThis patch adds the missing mnt_drop_write to match\nmnt_want_write in btrfs_ioctl_defrag and btrfs_ioctl_clone\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "b16281c30c841c6d999ff36c8d903f42a69315f2",
      "tree": "df7ae4e2c7d948bae276c7c489158a58368a0ec5",
      "parents": [
        "cad321ad529400c6ab24c501a67c3be720a0744c"
      ],
      "author": {
        "name": "Yehuda Sadeh Weinraub",
        "email": "yehudasa@gmail.com",
        "time": "Wed Dec 17 10:21:26 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 10:21:26 2008 -0500"
      },
      "message": "Btrfs: fix return value from btrfs_listxattr when buffer size is too small\n\nThe return value was being overwritten.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n\n"
    },
    {
      "commit": "cad321ad529400c6ab24c501a67c3be720a0744c",
      "tree": "7ac2b81a914329b7ac78b4f2a4275d62484ef45e",
      "parents": [
        "87b29b208c6c38f3446d2de6ece946e2459052cf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 14:51:42 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 14:51:42 2008 -0500"
      },
      "message": "Btrfs: shift all end_io work to thread pools\n\nbio_end_io for reads without checksumming on and btree writes were\nhappening without using async thread pools.  This means the extent_io.c\ncode had to use spin_lock_irq and friends on the rb tree locks for\nextent state.\n\nThere were some irq safe vs unsafe lock inversions between the delallock\nlock and the extent state locks.  This patch gets rid of them by moving\nall end_io code into the thread pools.\n\nTo avoid contention and deadlocks between the data end_io processing and the\nmetadata end_io processing yet another thread pool is added to finish\noff metadata writes.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "87b29b208c6c38f3446d2de6ece946e2459052cf",
      "tree": "43e717289e1e8446fced4093ab39667bba9ea60a",
      "parents": [
        "d7f735d0bc68c411abda0a612e1421bdade649cc"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Dec 17 10:21:48 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 17 10:21:48 2008 -0500"
      },
      "message": "Btrfs: properly check free space for tree balancing\n\nbtrfs_insert_empty_items takes the space needed by the btrfs_item\nstructure into account when calculating the required free space.\n\nSo the tree balancing code shouldn\u0027t add sizeof(struct btrfs_item)\nto the size when checking the free space. This patch removes these\nsuperfluous additions.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "dcbdd4dcb9793b00b46ab023e9330922c8c7c54c",
      "tree": "ca599e975c92de75c98283756f80b2aa7a1879bb",
      "parents": [
        "75eff68ea6959efd999b125fc3dcf73931a3b30b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 16 13:51:01 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 16 13:51:01 2008 -0500"
      },
      "message": "Btrfs: delete checksum items before marking blocks free\n\nBtrfs maintains a cache of blocks available for allocation in ram.  The\ncode that frees extents was marking the extents free and then deleting\nthe checksum items.\n\nThis meant it was possible the extent would be reallocated before the\nchecksum item was actually deleted, leading to races and other\nproblems as the checksums were updated for the newly allocated extent.\n\nThe fix is to delete the checksum before marking the extent free.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "75eff68ea6959efd999b125fc3dcf73931a3b30b",
      "tree": "8467dd51761446dd3539e515055671e707b5f5a0",
      "parents": [
        "42dc7babdcc99feadb04d461592ce5898a362550"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 15:54:40 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 15:54:40 2008 -0500"
      },
      "message": "Btrfs: Don\u0027t use spin*lock_irq for the delalloc lock\n\nThe delalloc lock doesn\u0027t need to have irqs disabled, nobody that\nchanges the number of delalloc bytes in the FS is running with irqs off.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "42dc7babdcc99feadb04d461592ce5898a362550",
      "tree": "9497d6dddba1a046b4a40a51a49cc41a13922394",
      "parents": [
        "17d217fe970d34720f4f1633dca73a6aa2f3d9d1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 11:44:56 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 15 11:44:56 2008 -0500"
      },
      "message": "Btrfs: Fix compressed writes on truncated pages\n\nThe compression code was using isize to limit the amount of data it\nsent through zlib.  But, it wasn\u0027t properly limiting the looping to\njust the pages inside i_size.  The end result was trying to compress\ntoo many pages, including those that had not been setup and properly locked\ndown.  This made the compression code oops while trying find_get_page on a\npage that didn\u0027t exist.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "17d217fe970d34720f4f1633dca73a6aa2f3d9d1",
      "tree": "4e2e716400cc45a6697475629f4c046b96ff76e7",
      "parents": [
        "e4404d6e8da678d852b7f767f665f8edf76c9e9f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 12 10:03:38 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 12 10:03:38 2008 -0500"
      },
      "message": "Btrfs: fix nodatasum handling in balancing code\n\nChecksums on data can be disabled by mount option, so it\u0027s\npossible some data extents don\u0027t have checksums or have\ninvalid checksums. This causes trouble for data relocation.\nThis patch contains following things to make data relocation\nwork.\n\n1) make nodatasum/nodatacow mount option only affects new\nfiles. Checksums and COW on data are only controlled by the\ninode flags.\n\n2) check the existence of checksum in the nodatacow checker.\nIf checksums exist, force COW the data extent. This ensure that\nchecksum for a given block is either valid or does not exist.\n\n3) update data relocation code to properly handle the case\nof checksum missing.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "e4404d6e8da678d852b7f767f665f8edf76c9e9f",
      "tree": "af6b52e5251d8e939f91e1feab760c1f06021410",
      "parents": [
        "d2fb3437e4d8d12c73c587615ad187d5288547ec"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Fri Dec 12 10:03:26 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Dec 12 10:03:26 2008 -0500"
      },
      "message": "Btrfs: shared seed device\n\nThis patch makes seed device possible to be shared by\nmultiple mounted file systems. The sharing is achieved\nby cloning seed device\u0027s btrfs_fs_devices structure.\nThanks you,\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "d2fb3437e4d8d12c73c587615ad187d5288547ec",
      "tree": "894e4c698970dd35226b2614b8a38fb8a96580e7",
      "parents": [
        "cfc8ea87201dc9bb6aeb3fc80c61abee83e7cc06"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Dec 11 16:30:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 11 16:30:39 2008 -0500"
      },
      "message": "Btrfs: fix leaking block group on balance\n\nThe block group structs are referenced in many different\nplaces, and it\u0027s not safe to free while balancing.  So, those block\ngroup structs were simply leaked instead.\n\nThis patch replaces the block group pointer in the inode with the starting byte\noffset of the block group and adds reference counting to the block group\nstruct.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "cfc8ea87201dc9bb6aeb3fc80c61abee83e7cc06",
      "tree": "51c204175bf806abc180badd691aa909e2d61fcf",
      "parents": [
        "0403e47ee26f26e960ee9038552bc89df4a1fb3d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 11 16:30:06 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Dec 11 16:30:06 2008 -0500"
      },
      "message": "Btrfs: mnt_drop_write in ioctl_trans_end\n\nAdd missing mnt_drop_write to match the mnt_want_write in\nbtrfs_ioctl_trans_start.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n\n"
    },
    {
      "commit": "0403e47ee26f26e960ee9038552bc89df4a1fb3d",
      "tree": "08280f23e5cadcf9610f8b80ad1de2c27059aed8",
      "parents": [
        "459931eca5f4b8c9ad259d07cc1ca49afed54804"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Dec 10 20:32:51 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 10 20:32:51 2008 -0500"
      },
      "message": "Btrfs: Add checking of csum tree in balancing code\n\nThis updates the space balancing code for the\nnew checksum format.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "459931eca5f4b8c9ad259d07cc1ca49afed54804",
      "tree": "86088c14cff53f93281dc25022b61fb1d86c2458",
      "parents": [
        "580afd76e451deb6772d0507de580fb1df14da6c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 10 09:10:46 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Dec 10 09:10:46 2008 -0500"
      },
      "message": "Btrfs: Delete csum items when freeing extents\n\nThis finishes off the new checksumming code by removing csum items\nfor extents that are no longer in use.\n\nThe trick is doing it without racing because a single csum item may\nhold csums for more than one extent.  Extra checks are added to\nbtrfs_csum_file_blocks to make sure that we are using the correct\ncsum item after dropping locks.\n\nA new btrfs_split_item is added to split a single csum item so it\ncan be split without dropping the leaf lock.  This is used to\nremove csum bytes from the middle of an item.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "580afd76e451deb6772d0507de580fb1df14da6c",
      "tree": "ea112be78807b07f617efffefb532e19778dc9bb",
      "parents": [
        "c3027eb5523d6983f12628f3fe13d8a7576db701"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 19:15:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 19:15:39 2008 -0500"
      },
      "message": "Btrfs: Fix compressed checksum fsync log copies\n\nThe fsync logging code makes sure to onl copy the relevant checksum for each\nextent based on the file extent pointers it finds.\n\nBut for compressed extents, it needs to copy the checksum for the\nentire extent.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "c3027eb5523d6983f12628f3fe13d8a7576db701",
      "tree": "6a912094818ff261667228a4f6d83ecc4513ac43",
      "parents": [
        "934d375bacf9ea8a37fbfff5f3cf1c093f324095"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:40:21 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:40:21 2008 -0500"
      },
      "message": "Btrfs: Add inode sequence number for NFS and reserved space in a few structs\n\nThis adds a sequence number to the btrfs inode that is increased on\nevery update.  NFS will be able to use that to detect when an inode has\nchanged, without relying on inaccurate time fields.\n\nWhile we\u0027re here, this also:\n\nPuts reserved space into the super block and inode\n\nAdds a log root transid to the super so we can pick the newest super\nbased on the fsync log as well as the main transaction ID.  For now\nthe log root transid is always zero, but that\u0027ll get fixed.\n\nAdds a starting offset to the dev_item.  This will let us do better\nalignment calculations if we know the start of a partition on the disk.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "934d375bacf9ea8a37fbfff5f3cf1c093f324095",
      "tree": "e81948e6e26028fd979ce59f4fc5988c1813694c",
      "parents": [
        "a512bbf855ff0af474257475f2e6da7acd854f52"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:43:10 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:43:10 2008 -0500"
      },
      "message": "Btrfs: Use map_private_extent_buffer during generic_bin_search\n\nIt is possible that generic_bin_search will be called on a tree block\nthat has not been locked.  This happens because cache_block_block skips\nlocking on the tree blocks.\n\nSince the tree block isn\u0027t locked, we aren\u0027t allowed to change\nthe extent_buffer-\u003emap_token field.  Using map_private_extent_buffer\navoids any changes to the internal extent buffer fields.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "a512bbf855ff0af474257475f2e6da7acd854f52",
      "tree": "1b2cfcf4152e09f32a6cb0bcbd798d5dab2f5490",
      "parents": [
        "d20f7043fa65659136c1a7c3c456eeeb5c6f431f"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Dec 08 16:46:26 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:46:26 2008 -0500"
      },
      "message": "Btrfs: superblock duplication\n\nThis patch implements superblock duplication. Superblocks\nare stored at offset 16K, 64M and 256G on every devices.\nSpaces used by superblocks are preserved by the allocator,\nwhich uses a reverse mapping function to find the logical\naddresses that correspond to superblocks. Thank you,\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "d20f7043fa65659136c1a7c3c456eeeb5c6f431f",
      "tree": "05d1031cadec6d440a97221e3a32adb504a51699",
      "parents": [
        "c99e905c945c462085c6d64646dc5af0c0a16815"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 08 16:58:54 2008 -0500"
      },
      "message": "Btrfs: move data checksumming into a dedicated tree\n\nBtrfs stores checksums for each data block.  Until now, they have\nbeen stored in the subvolume trees, indexed by the inode that is\nreferencing the data block.  This means that when we read the inode,\nwe\u0027ve probably read in at least some checksums as well.\n\nBut, this has a few problems:\n\n* The checksums are indexed by logical offset in the file.  When\ncompression is on, this means we have to do the expensive checksumming\non the uncompressed data.  It would be faster if we could checksum\nthe compressed data instead.\n\n* If we implement encryption, we\u0027ll be checksumming the plain text and\nstoring that on disk.  This is significantly less secure.\n\n* For either compression or encryption, we have to get the plain text\nback before we can verify the checksum as correct.  This makes the raid\nlayer balancing and extent moving much more expensive.\n\n* It makes the front end caching code more complex, as we have touch\nthe subvolume and inodes as we cache extents.\n\n* There is potentitally one copy of the checksum in each subvolume\nreferencing an extent.\n\nThe solution used here is to store the extent checksums in a dedicated\ntree.  This allows us to index the checksums by phyiscal extent\nstart and length.  It means:\n\n* The checksum is against the data stored on disk, after any compression\nor encryption is done.\n\n* The checksum is stored in a central location, and can be verified without\nfollowing back references, or reading inodes.\n\nThis makes compression significantly faster by reducing the amount of\ndata that needs to be checksummed.  It will also allow much faster\nraid management code in general.\n\nThe checksums are indexed by a key with a fixed objectid (a magic value\nin ctree.h) and offset set to the starting byte of the extent.  This\nallows us to copy the checksum items into the fsync log tree directly (or\nany other tree), without having to invent a second format for them.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c99e905c945c462085c6d64646dc5af0c0a16815",
      "tree": "3aed8630c0778c4a8b26a5d8eb2fba42fbb5e26c",
      "parents": [
        "2a7108ad89e1ea9a30afbbece8b581a0532afd12"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 11:18:37 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 11:18:37 2008 -0500"
      },
      "message": "Btrfs: Fix sparse endian warnings in struct-funcs.c\n\nThe btrfs macros to access individual struct members on disk were\nsending the same variable to functions that expected different types\nof endianness.  This fix explicitly creates a variable of the correct\ntype instead of abusing a single variable for mixed purposes.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2a7108ad89e1ea9a30afbbece8b581a0532afd12",
      "tree": "660a90d74dad4a303d30e9bab6121c067348122c",
      "parents": [
        "4022abf4498186de2e893ce614333216f2add461"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:58:02 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:58:02 2008 -0500"
      },
      "message": "Btrfs: rev the disk format for the inode compat and csum selection changes\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "4022abf4498186de2e893ce614333216f2add461",
      "tree": "908e08871a551e649832d9047dd4886c4d45a88e",
      "parents": [
        "607d432da0542e84ddcd358adfddac6f68500e3d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:57:03 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:57:03 2008 -0500"
      },
      "message": "Btrfs: delete unused function: btrfs_invalidate_dcache_root\n\nSnapshot and subvolume creation no longer need this helper.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "607d432da0542e84ddcd358adfddac6f68500e3d",
      "tree": "44425bf1fe8378022bc1b84425ca4ba9d0176566",
      "parents": [
        "c6e2bac1a52ffc36dd10769b594dfa3994e95f77"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Dec 02 07:17:45 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 07:17:45 2008 -0500"
      },
      "message": "Btrfs: add support for multiple csum algorithms\n\nThis patch gives us the space we will need in order to have different csum\nalgorithims at some point in the future.  We save the csum algorithim type\nin the superblock, and use those instead of define\u0027s.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "c6e2bac1a52ffc36dd10769b594dfa3994e95f77",
      "tree": "a48c535515c0d9311fa770afd0696644489cf074",
      "parents": [
        "f2b636e80d8206dd4012de6e973c2367259a7d22"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "message": "Btrfs: fix panic on error during mount\n\nThis needs to be applied on top of my previous patches, but is needed for more\nthan just my new stuff.  We\u0027re going to the wrong label when we have an error,\nwe try to stop the workers, but they are started below all of this code.  This\nfixes it so we go to the right error label and not panic when we fail one of\nthese cases.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "f2b636e80d8206dd4012de6e973c2367259a7d22",
      "tree": "4ed39baca853608bb7b77a6d1061766690cbb32a",
      "parents": [
        "7a865e8ac3a8ead776ea2c8c74fa2b2d00a2c9cf"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Tue Dec 02 06:36:08 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:08 2008 -0500"
      },
      "message": "Btrfs: add support for compat flags to btrfs\n\nThis adds the necessary disk format for handling compatibility flags\nin the future to handle disk format changes.  We have a compat_flags,\ncompat_ro_flags and incompat_flags set for the super block.  Compat\nflags will be to hold the features that are compatible with older\nversions of btrfs, compat_ro flags have features that are compatible\nwith older versions of btrfs if the fs is mounted read only, and\nincompat_flags has features that are incompatible with older versions\nof btrfs.  This also axes the compat_flags field for the inode and\njust makes the flags field a 64bit field, and changes the root item\nflags field to 64bit.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "7a865e8ac3a8ead776ea2c8c74fa2b2d00a2c9cf",
      "tree": "e7b425f7857f3643e911d268c779b61777d3e854",
      "parents": [
        "4bcabaa30a63a156fc50026f972377dada66452c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 09:52:24 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:52:24 2008 -0500"
      },
      "message": "Btrfs: btrfs: pass void __user * to btrfs_ioctl_clone_range\n\nCleans the code up a little and also avoids a sparse warning due to the\nincorrect cast in the current version of the code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "4bcabaa30a63a156fc50026f972377dada66452c",
      "tree": "4f6575aca5209748a716eeac2c3fb0bb0263daa5",
      "parents": [
        "97288f2c71e46965a2010baea10548fcb5f3af73"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 06:36:08 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:08 2008 -0500"
      },
      "message": "Btrfs: clean up btrfs_ioctl a little bit\n\nProvide a void __user *argp pointer so that we can avoid duplicating\nthe cast for various sub-command calls.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "97288f2c71e46965a2010baea10548fcb5f3af73",
      "tree": "6f84cd33ee12eb8c51cccf931671da1b149c4ba6",
      "parents": [
        "6e430f94e508fee1aefd1dfec88da3c24ce64433"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 06:36:09 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:09 2008 -0500"
      },
      "message": "Btrfs: corret fmode_t annotations\n\nMake sure to propagate fmode_t properly and use the right constants for\nit.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "6e430f94e508fee1aefd1dfec88da3c24ce64433",
      "tree": "a93d163dbd42a16750f4ecbf4a333d8ea6ec1c0d",
      "parents": [
        "b2950863c61bc24cf0f63bc05947d9d50663c4c0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 06:36:09 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:09 2008 -0500"
      },
      "message": "Btrfs: fix shadowed variable declarations\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "b2950863c61bc24cf0f63bc05947d9d50663c4c0",
      "tree": "3005a034713fe86db2d64ab1b21fe8762f6a4b0c",
      "parents": [
        "1ffa4f426c002161b7dbd58b297f5d0680e7dd6a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 09:54:17 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:54:17 2008 -0500"
      },
      "message": "Btrfs: make things static and include the right headers\n\nShut up various sparse warnings about symbols that should be either\nstatic or have their declarations in scope.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "1ffa4f426c002161b7dbd58b297f5d0680e7dd6a",
      "tree": "5839170f90f7929f4c96453c74f808648c006318",
      "parents": [
        "6e3ad88729103c4d19703311253fab8a49669fa8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 02 09:53:09 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 09:53:09 2008 -0500"
      },
      "message": "Btrfs: remove unneeded btrfs_start_delalloc_inodes call\n\nIt is called by btrfs_sync_fs.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n\n"
    },
    {
      "commit": "6e3ad88729103c4d19703311253fab8a49669fa8",
      "tree": "4dfbc656de0b8956fd90226b5a03d35c076b9d34",
      "parents": [
        "641f5219f2ea0dfd1c024c91021ddc83f50bf1ce"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "message": "Btrfs: remove unneeded total_trans\n\nRemove unneeded debugging sanity check.  It gets corrupted anyway when\nmultiple btrfs file systems are mounted, throwing bad warnings along the\nway.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n\n"
    },
    {
      "commit": "641f5219f2ea0dfd1c024c91021ddc83f50bf1ce",
      "tree": "0989c0b847617e791aaef8e50e48723ef8fa17ca",
      "parents": [
        "ce397c0616de9bfb678569f1dfa655838a711594"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Dec 02 06:36:10 2008 -0500"
      },
      "message": "Btrfs: sparse lock verification annotations for wait_on_state\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "ce397c0616de9bfb678569f1dfa655838a711594",
      "tree": "7268154f484cb442f25a5876697f211bef9dd7c5",
      "parents": [
        "ea6a478ed9758cb0f5af228104b9434840aa20ff"
      ],
      "author": {
        "name": "Liu Hui",
        "email": "onlyflyer@gmail.com",
        "time": "Mon Dec 01 20:31:40 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Dec 01 20:31:40 2008 -0500"
      },
      "message": "Btrfs: Fix cow semantic in run_delalloc_nocow()\n\nThe file preallocation code reversed the logic to force nodatacow.\nThis fixes it.\n\n"
    },
    {
      "commit": "ea6a478ed9758cb0f5af228104b9434840aa20ff",
      "tree": "1dd41601f8bb031a1e222b073458067af5d4b70d",
      "parents": [
        "0e6bd956ed238eb2f69386f251847fe3163532e1"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Thu Nov 20 12:16:16 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 12:16:16 2008 -0500"
      },
      "message": "Btrfs: Fix for lockdep warnings with alloc_mutex and pinned_mutex\n\nThis the lockdep complaint by having a different mutex to gaurd caching the\nblock group, so you don\u0027t end up with this backwards dependancy.  Thank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "0e6bd956ed238eb2f69386f251847fe3163532e1",
      "tree": "72b99621e0d4f187aca1214b0a5faa9a71768efd",
      "parents": [
        "43dd729b862f4a053310f75d3ee559b678772f59"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:46:35 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:46:35 2008 -0500"
      },
      "message": "Btrfs: only flush down bios for writeback pages\n\nThe btrfs write_cache_pages call has a flush function so that it submits\nthe bio it has been building before it waits on any writeback pages.\n\nThis adds a check so that flush only happens on writeback pages.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e556ce2c9d2163aea122e91a1512c9a110fece5d",
      "tree": "a9cc015cdaa47ab42b60525d1a4285cc723a21d7",
      "parents": [
        "4b4e25f2a6ddb070bab7f7dd2bd2926fb8db9e04"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Thu Nov 20 10:25:19 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:25:19 2008 -0500"
      },
      "message": "Btrfs: Drop dirty roots created by log replay immediately when\n\nThe log replay produces dirty roots. These dirty roots\nshould be dropped immediately if the fs is mounted as\nro. Otherwise they can be added to the dirty root list\nagain when remounting the fs as rw. Thank you,\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "4b4e25f2a6ddb070bab7f7dd2bd2926fb8db9e04",
      "tree": "b4417e03a187efd6a88da75a41a94020a2bb76ac",
      "parents": [
        "79683f2d685cfb6ef9c97c5194e3ce3319e80cac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:22:27 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 20 10:22:27 2008 -0500"
      },
      "message": "Btrfs: compat code fixes\n\nThe btrfs git kernel trees is used to build a standalone tree for\ncompiling against older kernels.  This commit makes the standalone tree\nwork with 2.6.27\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "79683f2d685cfb6ef9c97c5194e3ce3319e80cac",
      "tree": "b6fbf05161a2d518a523dcbd66ea52bc8804bd9e",
      "parents": [
        "15916de835a683bd8133a0d1ac0c982b795ab4ff"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 22:00:53 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 22:00:53 2008 -0500"
      },
      "message": "Btrfs: Use current_fsuid/gid\n\nThis fixes compile problems with linux-next\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "15916de835a683bd8133a0d1ac0c982b795ab4ff",
      "tree": "20603c2e0cade00d2e40a3b5390f5def36a02711",
      "parents": [
        "ae20a6afec1cf21919d97303f2d8b737eac5acc7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 21:17:22 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 21:17:22 2008 -0500"
      },
      "message": "Btrfs: Fixes for 2.6.28-rc API changes\n\n* open/close_bdev_excl -\u003e open/close_bdev_exclusive\n* blkdev_issue_discard takes a GFP mask now\n* Fix blkdev_issue_discard usage now that it is enabled\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "07103a3cdb24099324a11be1f35279b463cdfc31",
      "tree": "9baff1ecc9e6a069f0cb6e64af6713bbe373780a",
      "parents": [
        "7c2ca4682a2b401cb0c43f96b05eced25eb83eec"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Nov 19 15:17:55 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 15:17:55 2008 -0500"
      },
      "message": "Btrfs: fix free space accounting when unpinning extents\n\nThis patch fixes what I hope is the last early ENOSPC bug left.  I did not know\nthat pinned extents would merge into one big extent when inserted on to the\npinned extent tree, so I was adding free space to a block group that could\npossibly span multiple block groups.\n\nThis is a big issue because first that space doesn\u0027t exist in that block group,\nand second we won\u0027t actually use that space because there are a bunch of other\nchecks to make sure we\u0027re allocating within the constraints of the block group.\n\nThis patch fixes the problem by adding the btrfs_add_free_space to\nbtrfs_update_pinned_extents which makes sure we are adding the appropriate\namount of free space to the appropriate block group.  Thanks much to Lee Trager\nfor running my myriad of debug patches to help me track this problem down.\nThank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "7c2ca4682a2b401cb0c43f96b05eced25eb83eec",
      "tree": "8c6cf2661f1f15869acdbbf7096bce2e19a1c1e1",
      "parents": [
        "d2c3f4f695edac4d75c1b3eb01a1d16072de63bb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 15:13:35 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 15:13:35 2008 -0500"
      },
      "message": "Btrfs: Do fsync log replay when mount -o ro, except when on readonly media\n\nfsync log replay can change the filesystem, so it cannot be delayed until\nmount -o rw,remount, and it can\u0027t be forgotten entirely.  So, this patch\nchanges btrfs to do with reiserfs, ext3 and xfs do, which is to do the\nlog replay even when mounted readonly.\n\nOn a readonly device if log replay is required, the mount is aborted.\n\nGetting all of this right had required fixing up some of the error\nhandling in open_ctree.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d2c3f4f695edac4d75c1b3eb01a1d16072de63bb",
      "tree": "14a8dd519d067adbe16e8adb7342343529eb5c75",
      "parents": [
        "105d931d482b7d1b1b2dd4b0ea30365db8630b9f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 12:44:22 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 19 12:44:22 2008 -0500"
      },
      "message": "Btrfs: Avoid writeback stalls\n\nWhile building large bios in writepages, btrfs may end up waiting\nfor other page writeback to finish if WB_SYNC_ALL is used.\n\nWhile it is waiting, the bio it is building has a number of pages with the\nwriteback bit set and they aren\u0027t getting to the disk any time soon.  This\nlowers the latencies of writeback in general by sending down the bio being\nbuilt before waiting for other pages.\n\nThe bio submission code tries to limit the total number of async bios in\nflight by waiting when we\u0027re over a certain number of async bios.  But,\nthe waits are happening while writepages is building bios, and this can easily\nlead to stalls and other problems for people calling wait_on_page_writeback.\n\nThe current fix is to let the congestion tests take care of waiting.\n\nsync() and others make sure to drain the current async requests to make\nsure that everything that was pending when the sync was started really get\nto disk.  The code would drain pending requests both before and after\nsubmitting a new request.\n\nBut, if one of the requests is waiting for page writeback to finish,\nthe draining waits might block that page writeback.  This changes the\ndraining code to only wait after submitting the bio being processed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "105d931d482b7d1b1b2dd4b0ea30365db8630b9f",
      "tree": "e3c8ba5bc5cb5fcbf6ac33b08c701e1e8cdabf10",
      "parents": [
        "73e9f5beb16f568f797bba87f082556fac18dede"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 12:13:12 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 12:13:12 2008 -0500"
      },
      "message": "Btrfs: switch back to wait_on_page_writeback to wait on metadata writes\n\nThe extent based waiting was using more CPU, and other fixes have helped\nwith the unplug storm problems.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "73e9f5beb16f568f797bba87f082556fac18dede",
      "tree": "b568806f159e3cbad322fadc86386e54fb3bd162",
      "parents": [
        "9f0ba5bd91d42706ba78f97ec638c6a821db1c5e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 11:50:33 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 11:50:33 2008 -0500"
      },
      "message": "Btrfs: Update the disk format for the seed device and new root code\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "9f0ba5bd91d42706ba78f97ec638c6a821db1c5e",
      "tree": "89e6c8e6d6135091ee8f1d072dc5f62506ff67d1",
      "parents": [
        "b4eec2ca1167bae46295aeb66abd15fd52387845"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 10:31:22 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 10:31:22 2008 -0500"
      },
      "message": "Btrfs: unplug all devices in the unplug call back\n\nFor larger multi-device filesystems, there was logic to limit the\nnumber of devices unplugged to just the page that was sent to our sync_page\nfunction.\n\nBut, the code wasn\u0027t always unplugging the right device.  Since this was\njust an optimization, disable it for now.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "b4eec2ca1167bae46295aeb66abd15fd52387845",
      "tree": "bad79258bb437341611116d951f7a8711c4473a0",
      "parents": [
        "ea9e8b11bd1252dcbc23afefcf1a52ec6aa3c113"
      ],
      "author": {
        "name": "Liu Hui",
        "email": "onlyflyer@gmail.com",
        "time": "Tue Nov 18 11:30:10 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 18 11:30:10 2008 -0500"
      },
      "message": "Btrfs: Some fixes for batching extent insert.\n\nIn insert_extents(), when ret\u003d\u003d1 and last is not zero, it should\ncheck if the current inserted item is the last item in this batching\ninserts. If so, it should just break from loop. If not, \u0027cur \u003d\ninsert_list-\u003enext\u0027 will make no sense because the list is empty now,\nand \u0027op\u0027 will point to an unexpectable place.\n\nThere are also some trivial fixs in this patch including one comment\ntypo error and deleting two redundant lines.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "ea9e8b11bd1252dcbc23afefcf1a52ec6aa3c113",
      "tree": "3573c8d79e1936e8c921a3be77abda35124e0d78",
      "parents": [
        "0660b5af3f7ac0fac69de975914e1f4a3a586fb3"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:14:24 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:14:24 2008 -0500"
      },
      "message": "Btrfs: prevent loops in the directory tree when creating snapshots\n\nFor a directory tree:\n\n/mnt/subvolA/subvolB\n\nbtrfsctl -s /mnt/subvolA/subvolB /mnt\n\nWill create a directory loop with subvolA under subvolB.  This\ncommit uses the forward refs for each subvol and snapshot to error out\nbefore creating the loop.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "0660b5af3f7ac0fac69de975914e1f4a3a586fb3",
      "tree": "5e911dfad23df29f1815fbbc76d38ffff7fe36d8",
      "parents": [
        "3394e1607eaf870ebba37d303fbd590a4c569908"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:37:39 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:37:39 2008 -0500"
      },
      "message": "Btrfs: Add backrefs and forward refs for subvols and snapshots\n\nSubvols and snapshots can now be referenced from any point in the directory\ntree.  We need to maintain back refs for them so we can find lost\nsubvols.\n\nForward refs are added so that we know all of the subvols and\nsnapshots referenced anywhere in the directory tree of a single subvol.  This\ncan be used to do recursive snapshotting (but they aren\u0027t yet) and it is\nalso used to detect and prevent directory loops when creating new snapshots.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3394e1607eaf870ebba37d303fbd590a4c569908",
      "tree": "7833927ae6137122bea670544147be6a69f804ad",
      "parents": [
        "3de4586c5278a28107030c336956381f69ff7a9d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:42:26 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 20:42:26 2008 -0500"
      },
      "message": "Btrfs: Give each subvol and snapshot their own anonymous devid\n\nEach subvolume has its own private inode number space, and so we need\nto fill in different device numbers for each subvolume to avoid confusing\napplications.\n\nThis commit puts a struct super_block into struct btrfs_root so it can\ncall set_anon_super() and get a different device number generated for\neach root.\n\nbtrfs_rename is changed to prevent renames across subvols.\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": "4ce4cb526f67775c1cce3e3fa01c292672ba874e",
      "tree": "5aa9758857e1fef5eb2b8559c3d075f60f7075b0",
      "parents": [
        "e3e469f86eebb1b3364c118add362d00c6cff956"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Mon Nov 17 21:12:00 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:12:00 2008 -0500"
      },
      "message": "Btrfs: Add some debugging around the ENOSPC bugs\n\nSome people are still reporting problems with early enospc.  This\nwill help narrown down the cause.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "e3e469f86eebb1b3364c118add362d00c6cff956",
      "tree": "b94e978d4249fea7aed066f2046daaf3f3202307",
      "parents": [
        "7cbd8a839118eede2393f0926b8e15027162bcd6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Mon Nov 17 21:11:49 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:11:49 2008 -0500"
      },
      "message": "Btrfs: fix free space leak\n\nIn my batch delete/update/insert patch I introduced a free space leak.  The\nextent that we do the original search on in free_extents is never pinned, so we\nalways update the block saying that it has free space, but the free space never\nactually gets added to the free space tree, since op-\u003edel will always be 0 and\nit\u0027s never actually added to the pinned extents tree.\n\nThis patch fixes this problem by making sure we call pin_down_bytes on the\npending extent op and set op-\u003edel to the return value of pin_down_bytes so\nupdate_block_group is called with the right value.  This seems to fix the case\nwhere we were getting ENOSPC when there was plenty of space available.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\n"
    },
    {
      "commit": "7cbd8a839118eede2393f0926b8e15027162bcd6",
      "tree": "82370fed427f1433edfe93342e3b70c724ba8a3b",
      "parents": [
        "0df49b911db2b22ea808b596070b1cc65c23d148"
      ],
      "author": {
        "name": "yanhai zhu",
        "email": "zhu.yanhai@gmail.com",
        "time": "Wed Nov 12 14:38:54 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:38:54 2008 -0500"
      },
      "message": "Btrfs: Add a missing return pointer check\n\nAdd a missing kzalloc() return pointer check in add_missing_dev().\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "0df49b911db2b22ea808b596070b1cc65c23d148",
      "tree": "0750dd5ad6cfccff98f3c44c7ef120378cf42eb6",
      "parents": [
        "c36047d729a3fa080dd194b20b684cc9fe73e90c"
      ],
      "author": {
        "name": "yanhai zhu",
        "email": "zhu.yanhai@gmail.com",
        "time": "Wed Nov 12 14:36:58 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:36:58 2008 -0500"
      },
      "message": "Btrfs: Check kthread_should_stop() before schedule() in worker_loop\n\nIn worker_loop(), the func should check whether it has been requested to stop\nbefore it decides to schedule out.\n\nOtherwise if the stop request(also the last wake_up()) sent by\nbtrfs_stop_workers() happens when worker_loop() running after the \"while\"\njudgement and before schedule(), woker_loop() will schedule away and never be\nwoken up, which will also cause btrfs_stop_workers() wait forever.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "c36047d729a3fa080dd194b20b684cc9fe73e90c",
      "tree": "ac1ac2a3a5e3b9ecb1caf29fde32c00959006ec3",
      "parents": [
        "2b82032c34ec40515d3c45c36cd1961f37977de8"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Nov 12 14:19:50 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:19:50 2008 -0500"
      },
      "message": "Btrfs: Fix race in btrfs_mark_extent_written\n\nWhen extent needs to be split, btrfs_mark_extent_written truncates the extent\nfirst, then inserts a new extent and increases the reference count.\n\nThe race happens if someone else deletes the old extent before the new extent\nis inserted. The fix here is increase the reference count in advance. This race\nis similar to the race in btrfs_drop_extents that was recently fixed.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "2b82032c34ec40515d3c45c36cd1961f37977de8",
      "tree": "fbdfe7b13dd51983dfca4aeb75983b37ee186ff9",
      "parents": [
        "c146afad2c7fea6a366d4945c1bab9b03880f526"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Nov 17 21:11:30 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 17 21:11:30 2008 -0500"
      },
      "message": "Btrfs: Seed device support\n\nSeed device is a special btrfs with SEEDING super flag\nset and can only be mounted in read-only mode. Seed\ndevices allow people to create new btrfs on top of it.\n\nThe new FS contains the same contents as the seed device,\nbut it can be mounted in read-write mode.\n\nThis patch does the following:\n\n1) split code in btrfs_alloc_chunk into two parts. The first part does makes\nthe newly allocated chunk usable, but does not do any operation that modifies\nthe chunk tree. The second part does the the chunk tree modifications. This\ndivision is for the bootstrap step of adding storage to the seed device.\n\n2) Update device management code to handle seed device.\nThe basic idea is: For an FS grown from seed devices, its\nseed devices are put into a list. Seed devices are\nopened on demand at mounting time. If any seed device is\nmissing or has been changed, btrfs kernel module will\nrefuse to mount the FS.\n\n3) make btrfs_find_block_group not return NULL when all\nblock groups are read-only.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "c146afad2c7fea6a366d4945c1bab9b03880f526",
      "tree": "dd217139525a521895125843ca31f61cfbb49dca",
      "parents": [
        "f3465ca44e2a51fd647c167045768a8ab5a96603"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Wed Nov 12 14:34:12 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:34:12 2008 -0500"
      },
      "message": "Btrfs: mount ro and remount support\n\nThis patch adds mount ro and remount support. The main\nchanges in patch are: adding btrfs_remount and related\nhelper function; splitting the transaction related code\nout of close_ctree into btrfs_commit_super; updating\nallocator to properly handle read only block group.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "f3465ca44e2a51fd647c167045768a8ab5a96603",
      "tree": "3d08ed21a29374321469d4f43391fec7f34d8214",
      "parents": [
        "c5c9cd4d1b827fe545ed2a945e91e3a6909f3886"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Nov 12 14:19:50 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Nov 12 14:19:50 2008 -0500"
      },
      "message": "Btrfs: batch extent inserts/updates/deletions on the extent root\n\nWhile profiling the allocator I noticed a good amount of time was being spent in\nfinish_current_insert and del_pending_extents, and as the filesystem filled up\nmore and more time was being spent in those functions.  This patch aims to try\nand reduce that problem.  This happens two ways\n\n1) track if we tried to delete an extent that we are going to update or insert.\nOnce we get into finish_current_insert we discard any of the extents that were\nmarked for deletion.  This saves us from doing unnecessary work almost every\ntime finish_current_insert runs.\n\n2) Batch insertion/updates/deletions.  Instead of doing a btrfs_search_slot for\neach individual extent and doing the needed operation, we instead keep the leaf\naround and see if there is anything else we can do on that leaf.  On the insert\ncase I introduced a btrfs_insert_some_items, which will take an array of keys\nwith an array of data_sizes and try and squeeze in as many of those keys as\npossible, and then return how many keys it was able to insert.  In the update\ncase we search for an extent ref, update the ref and then loop through the leaf\nto see if any of the other refs we are looking to update are on that leaf, and\nthen once we are done we release the path and search for the next ref we need to\nupdate.  And finally for the deletion we try and delete the extent+ref in pairs,\nso we will try to find extent+ref pairs next to the extent we are trying to free\nand free them in bulk if possible.\n\nThis along with the other cluster fix that Chris pushed out a bit ago helps make\nthe allocator preform more uniformly as it fills up the disk.  There is still a\nslight drop as we fill up the disk since we start having to stick new blocks in\nodd places which results in more COW\u0027s than on a empty fs, but the drop is not\nnearly as severe as it was before.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\n\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": "2ed6d66408527be0d1c6131d44cec7e86008ba26",
      "tree": "2bed676124963bee4fce1d61c42c2ff8df0f953c",
      "parents": [
        "6f3577bdc768e6dae3c4d419e89b5a904f470728"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 13 09:59:33 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 13 09:59:33 2008 -0500"
      },
      "message": "Btrfs: Fix handling of space info full during allocations\n\nWhen we fail to allocate a new block group, we should still do the\nchecks to make sure allocations try again with the minimum requested\nallocation size.\n\nThis also fixes a deadlock that come from a missed down_read in\nthe chunk allocation failure handling.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "6f3577bdc768e6dae3c4d419e89b5a904f470728",
      "tree": "69d0df75fe55f7c4e9b2f1a1651478e37a3d2920",
      "parents": [
        "5b050f04c8ce911c5b6831305a24d70eab95e732"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 13 09:59:36 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Thu Nov 13 09:59:36 2008 -0500"
      },
      "message": "Btrfs: Improve metadata read latencies\n\nThis fixes latency problems on metadata reads by making sure they\ndon\u0027t go through the async submit queue, and by tuning down the amount\nof readahead done during btree searches.\n\nAlso, the btrfs bdi congestion function is tuned to ignore the\nnumber of pending async bios and checksums pending.  There is additional\ncode that throttles new async bios now and the congestion function\ndoesn\u0027t need to worry about it anymore.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5b050f04c8ce911c5b6831305a24d70eab95e732",
      "tree": "ebc7be1f9526a75a8d7ac7a7984c20d728ca96d1",
      "parents": [
        "8247b41ac980d125de8aeba6f33f381056ac0ecb"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 11 09:34:41 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 11 09:34:41 2008 -0500"
      },
      "message": "Btrfs: Fix compile warnings on 32 bit machines\n\nSimple casting here and there to fix things up.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "8247b41ac980d125de8aeba6f33f381056ac0ecb",
      "tree": "40b8ddab6be8ec6766007b22db9a6b898ff1a960",
      "parents": [
        "8a1413a296d38b54ded651e76ef16c033d38fd5d"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Tue Nov 11 09:33:29 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Nov 11 09:33:29 2008 -0500"
      },
      "message": "Btrfs: Fix starting search offset inside btrfs_drop_extents\n\nbtrfs_drop_extents will drop paths and search again when it needs to\nforce COW of higher nodes.  It was using the key it found during the last\nsearch as the offset for the next search.\n\nBut, this wasn\u0027t always correct.  The key could be from before our desired\nrange, and because we\u0027re dropping the path, it is possible for file\u0027s items\nto change while we do the search again.\n\nThe fix here is to make sure we don\u0027t search for something smaller than\nthe offset btrfs_drop_extents was called with.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n\n"
    },
    {
      "commit": "8a1413a296d38b54ded651e76ef16c033d38fd5d",
      "tree": "846016af5294059bf967c4c30fa2895557ba28c9",
      "parents": [
        "240d5d482b69415b92ffce4b8dfca10799c9890b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 16:13:54 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 16:13:54 2008 -0500"
      },
      "message": "Btrfs: empty_size allocation fixes again\n\nThe allocator wasn\u0027t catching all of the cases where it needed to do\nextra loops because the check to enforce them wasn\u0027t happening early\nenough.\n\nWhen the allocator decided to increase the size of the allocation\nfor metadata clustering, it wasn\u0027t always setting the empty_size to\ninclude the extra (optional) bytes.  This also fixes the empty_size field\nto be correct.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "240d5d482b69415b92ffce4b8dfca10799c9890b",
      "tree": "16320929e2220a7859d187bf4eda3810d2886bf2",
      "parents": [
        "b47eda8690a10f4fc01eb7b795078fa3fa57149f"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 13:08:31 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 13:08:31 2008 -0500"
      },
      "message": "Btrfs: tune btrfs unplug functions for a small number of devices\n\nWhen btrfs unplugs, it tries to find the correct device to unplug\nvia search through the extent_map tree.  This avoids unplugging\na device that doesn\u0027t need it, but is a waste of time for filesystems\nwith a small number of devices.\n\nThis patch checks the total number of devices before doing the\nsearch.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b47eda8690a10f4fc01eb7b795078fa3fa57149f",
      "tree": "ddfef53690e1f92ef4c38be0308c19e85f94fbe4",
      "parents": [
        "445a69449994a37615cd47e47bcab2e42a070adf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 12:34:40 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 12:34:40 2008 -0500"
      },
      "message": "Btrfs: Turn off extent state leak debugging\n\nThe extent_io.c code has a #define to find and cleanup extent state leaks\non module unmount.  This adds a very highly contended spinlock to a\nhot path for most FS operations.\n\nTurn it off by default.  A later changeset will add a .config option\nfor it.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "445a69449994a37615cd47e47bcab2e42a070adf",
      "tree": "eb41f8246fe64bd32c1bb9ee544b1b27866ec79b",
      "parents": [
        "39be25cd89450940b0e5f8a6aad71d1ec99b17bf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:53:33 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:53:33 2008 -0500"
      },
      "message": "Btrfs: Fix usage of struct extent_map-\u003eorig_start\n\nThis makes sure the orig_start field in struct extent_map gets set\neverywhere the extent_map structs are created or modified.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "39be25cd89450940b0e5f8a6aad71d1ec99b17bf",
      "tree": "ecd9732a647df1af7439e1f859ac3b00e68cb430",
      "parents": [
        "f5a31e166772a7b9fff6725b697eb8b57633671e"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:50:50 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:50:50 2008 -0500"
      },
      "message": "Btrfs: Use invalidatepage when writepage finds a page outside of i_size\n\nWith all the recent fixes to the delalloc locking, it is now safe\nagain to use invalidatepage inside the writepage code for\npages outside of i_size.  This used to deadlock against some of the\ncode to write locked ranges of pages, but all of that has been fixed.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f5a31e166772a7b9fff6725b697eb8b57633671e",
      "tree": "16cbd822a7b56a0314d791902704754f06de233f",
      "parents": [
        "e04ca626baee684bea9d6239e4e1119b696101b2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:47:09 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:47:09 2008 -0500"
      },
      "message": "Btrfs: Try harder while searching for free space\n\nThe loop searching for free space would exit out too soon when\nmetadata clustering was trying to allocate a large extent.  This makes\nsure a full scan of the free space is done searching for only the\nminimum extent size requested by the higher layers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "e04ca626baee684bea9d6239e4e1119b696101b2",
      "tree": "f5327eae3e8393f19ef9f40426efb8b3488f36f6",
      "parents": [
        "ff5b7ee33d82414bf4baf299c21fb703bcc89629"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:44:58 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 11:44:58 2008 -0500"
      },
      "message": "Btrfs: Fix use after free during compressed reads\n\nYan\u0027s fix to use the correct file offset during compressed reads used the\nextent_map struct pointer after it had been freed.  This saves the\nfields we want for later use instead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "ff5b7ee33d82414bf4baf299c21fb703bcc89629",
      "tree": "926786cf57b375e5ef1f865427c910c3d4bdfc7a",
      "parents": [
        "f2b1c41cf94d7f839fe9ede5f3ead92698a93fb3"
      ],
      "author": {
        "name": "Yan Zheng",
        "email": "zheng.yan@oracle.com",
        "time": "Mon Nov 10 07:34:43 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 07:34:43 2008 -0500"
      },
      "message": "Btrfs: Fix csum error for compressed data\n\nThe decompress code doesn\u0027t take the logical offset in extent\npointer into account. If the logical offset isn\u0027t zero, data\nwill be decompressed into wrong pages.\n\nThe solution used here is to record the starting offset of the extent\nin the file separately from the logical start of the extent_map struct.\nThis allows us to avoid problems inserting overlapping extents.\n\nSigned-off-by: Yan Zheng \u003czheng.yan@oracle.com\u003e\n\n"
    },
    {
      "commit": "f2b1c41cf94d7f839fe9ede5f3ead92698a93fb3",
      "tree": "dbde0effe5d2e147dd74af96b29ece862b94960d",
      "parents": [
        "5b7c3fcc46b5deb8a368d5319cf87c78c2df65fe"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 07:31:30 2008 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Nov 10 07:31:30 2008 -0500"
      },
      "message": "Btrfs: Make sure pages are dirty before doing delalloc for them\n\nThis adds a PageDirty check to the writeback path that locks pages\nfor delalloc.  If a page wasn\u0027t dirty at this point, it is in the\nprocess of being truncated away.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    }
  ],
  "next": "5b7c3fcc46b5deb8a368d5319cf87c78c2df65fe"
}
