)]}'
{
  "log": [
    {
      "commit": "e410e34fad913dd568ec28d2a9949694324c14db",
      "tree": "c44bcb7e4a1844a17ad960fc7bfdcb73ff8485c5",
      "parents": [
        "e1c0ebad3f77387c6684f8b7e86a4bbaca7577ac"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Fri Jan 29 08:19:37 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Fri Jan 29 08:19:37 2016 -0800"
      },
      "message": "Revert \"btrfs: synchronize incompat feature bits with sysfs files\"\n\nThis reverts commit 14e46e04958df740c6c6a94849f176159a333f13.\n\nThis ends up doing sysfs operations from deep in balance (where we\nshould be GFP_NOFS) and under heavy balance load, we\u0027re making races\nagainst sysfs internals.\n\nRevert it for now while we figure things out.\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "e1c0ebad3f77387c6684f8b7e86a4bbaca7577ac",
      "tree": "8fb769c0025d0c144a3bf204ed064f1274963849",
      "parents": [
        "d32a4e34348869a273a01139112a13fc6870f003"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 27 06:38:45 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 27 07:05:49 2016 -0800"
      },
      "message": "btrfs: don\u0027t use GFP_HIGHMEM for free-space-tree bitmap kzalloc\n\nThis was copied incorrectly from the __vmalloc call.\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "d32a4e34348869a273a01139112a13fc6870f003",
      "tree": "507adf3bf14d2cafb38502c27ea8cc82b28cf11a",
      "parents": [
        "bf6092066f80840410e3401cd962b23d54a95713",
        "3e4c5efbb3ac7c9c4fb5f33b659fa98afe568ab1"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 27 05:48:23 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 27 05:48:23 2016 -0800"
      },
      "message": "Merge branch \u0027dev/fst-followup\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n"
    },
    {
      "commit": "bf6092066f80840410e3401cd962b23d54a95713",
      "tree": "0d2e6c360d15afc0ec04b488b682e9d8c99c7d17",
      "parents": [
        "80ad623edd2d0ccb47d85357ee31c97e6c684e82"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Wed Jan 27 14:06:29 2016 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 27 05:40:10 2016 -0800"
      },
      "message": "btrfs: sysfs: check initialization state before updating features\n\nIf the mount phase is not finished, we can\u0027t update the sysfs files.\n\nReported-by: Chris Mason \u003cclm@fb.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "80ad623edd2d0ccb47d85357ee31c97e6c684e82",
      "tree": "8dae64001c3420b6cac86ae2388b547444f45aad",
      "parents": [
        "0a95b851370b84a4b9d92ee6d1fa0926901d0454"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Jan 25 11:02:06 2016 +0100"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 25 16:50:27 2016 -0800"
      },
      "message": "Revert \"btrfs: clear PF_NOFREEZE in cleaner_kthread()\"\n\nThis reverts commit 696249132158014d594896df3a81390616069c5c. The\ncleaner thread can block freezing when there\u0027s a snapshot cleaning in\nprogress and the other threads get suspended first. From the logs\nprovided by Martin we\u0027re waiting for reading extent pages:\n\nkernel: PM: Syncing filesystems ... done.\nkernel: Freezing user space processes ... (elapsed 0.015 seconds) done.\nkernel: Freezing remaining freezable tasks ...\nkernel: Freezing of tasks failed after 20.003 seconds (1 tasks refusing to freeze, wq_busy\u003d0):\nkernel: btrfs-cleaner   D ffff88033dd13bc0     0   152      2 0x00000000\nkernel: ffff88032ebc2e00 ffff88032e750000 ffff88032e74fa50 7fffffffffffffff\nkernel: ffffffff814a58df 0000000000000002 ffffea000934d580 ffffffff814a5451\nkernel: 7fffffffffffffff ffffffff814a6e8f 0000000000000000 0000000000000020\nkernel: Call Trace:\nkernel: [\u003cffffffff814a58df\u003e] ? bit_wait+0x2c/0x2c\nkernel: [\u003cffffffff814a5451\u003e] ? schedule+0x6f/0x7c\nkernel: [\u003cffffffff814a6e8f\u003e] ? schedule_timeout+0x2f/0xd8\nkernel: [\u003cffffffff81076f94\u003e] ? timekeeping_get_ns+0xa/0x2e\nkernel: [\u003cffffffff81077603\u003e] ? ktime_get+0x36/0x44\nkernel: [\u003cffffffff814a4f6c\u003e] ? io_schedule_timeout+0x94/0xf2\nkernel: [\u003cffffffff814a4f6c\u003e] ? io_schedule_timeout+0x94/0xf2\nkernel: [\u003cffffffff814a590b\u003e] ? bit_wait_io+0x2c/0x30\nkernel: [\u003cffffffff814a5694\u003e] ? __wait_on_bit+0x41/0x73\nkernel: [\u003cffffffff8109eba8\u003e] ? wait_on_page_bit+0x6d/0x72\nkernel: [\u003cffffffff8105d718\u003e] ? autoremove_wake_function+0x2a/0x2a\nkernel: [\u003cffffffff811a02d7\u003e] ? read_extent_buffer_pages+0x1bd/0x203\nkernel: [\u003cffffffff8117d9e9\u003e] ? free_root_pointers+0x4c/0x4c\nkernel: [\u003cffffffff8117e831\u003e] ? btree_read_extent_buffer_pages.constprop.57+0x5a/0xe9\nkernel: [\u003cffffffff8117f4f3\u003e] ? read_tree_block+0x2d/0x45\nkernel: [\u003cffffffff8116782a\u003e] ? read_block_for_search.isra.34+0x22a/0x26b\nkernel: [\u003cffffffff811656c3\u003e] ? btrfs_set_path_blocking+0x1e/0x4a\nkernel: [\u003cffffffff8116919b\u003e] ? btrfs_search_slot+0x648/0x736\nkernel: [\u003cffffffff81170559\u003e] ? btrfs_lookup_extent_info+0xb7/0x2c7\nkernel: [\u003cffffffff81170ee5\u003e] ? walk_down_proc+0x9c/0x1ae\nkernel: [\u003cffffffff81171c9d\u003e] ? walk_down_tree+0x40/0xa4\nkernel: [\u003cffffffff8117375f\u003e] ? btrfs_drop_snapshot+0x2da/0x664\nkernel: [\u003cffffffff8104ff21\u003e] ? finish_task_switch+0x126/0x167\nkernel: [\u003cffffffff811850f8\u003e] ? btrfs_clean_one_deleted_snapshot+0xa6/0xb0\nkernel: [\u003cffffffff8117eaba\u003e] ? cleaner_kthread+0x13e/0x17b\nkernel: [\u003cffffffff8117e97c\u003e] ? btrfs_item_end+0x33/0x33\nkernel: [\u003cffffffff8104d256\u003e] ? kthread+0x95/0x9d\nkernel: [\u003cffffffff8104d1c1\u003e] ? kthread_parkme+0x16/0x16\nkernel: [\u003cffffffff814a7b5f\u003e] ? ret_from_fork+0x3f/0x70\nkernel: [\u003cffffffff8104d1c1\u003e] ? kthread_parkme+0x16/0x16\n\nAs this affects a released kernel (4.4) we need a minimal fix for\nstable kernels.\n\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d108361\nReported-by: Martin Ziegler \u003cziegler@uni-freiburg.de\u003e\nCC: stable@vger.kernel.org # 4.4\nCC: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "0a95b851370b84a4b9d92ee6d1fa0926901d0454",
      "tree": "961bebab8ad070e86c3e5600e3617d28104a16b5",
      "parents": [
        "de0ee0edb21fbab4c7afa3e94573ecfebfb0244e"
      ],
      "author": {
        "name": "Qu Wenruo",
        "email": "quwenruo@cn.fujitsu.com",
        "time": "Fri Jan 22 09:28:38 2016 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 25 16:50:26 2016 -0800"
      },
      "message": "btrfs: async-thread: Fix a use-after-free error for trace\n\nParameter of trace_btrfs_work_queued() can be freed in its workqueue.\nSo no one use use that pointer after queue_work().\n\nFix the user-after-free bug by move the trace line before queue_work().\n\nReported-by: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\nSigned-off-by: Qu Wenruo \u003cquwenruo@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "de0ee0edb21fbab4c7afa3e94573ecfebfb0244e",
      "tree": "52b0a9db694a7810bed41f04fa5be2b843352484",
      "parents": [
        "6b5aa88c861cf0e4156e490009e2018d4fc81109"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Jan 21 10:17:54 2016 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 25 16:50:26 2016 -0800"
      },
      "message": "Btrfs: fix race between fsync and lockless direct IO writes\n\nAn fsync, using the fast path, can race with a concurrent lockless direct\nIO write and end up logging a file extent item that points to an extent\nthat wasn\u0027t written to yet. This is because the fast fsync path collects\nordered extents into a local list and then collects all the new extent\nmaps to log file extent items based on them, while the direct IO write\npath creates the new extent map before it creates the corresponding\nordered extent (and submitting the respective bio(s)).\n\nSo fix this by making the direct IO write path create ordered extents\nbefore the extent maps and make the fast fsync path collect any new\nordered extents after it collects the extent maps.\nNote that making the fsync handler call inode_dio_wait() (after acquiring\nthe inode\u0027s i_mutex) would not work and lead to a deadlock when doing\nAIO, as through AIO we end up in a path where the fsync handler is called\n(through dio_aio_complete_work() -\u003e dio_complete() -\u003e vfs_fsync_range())\nbefore the inode\u0027s dio counter is decremented (inode_dio_wait() waits\nfor this counter to have a value of zero).\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "6b5aa88c861cf0e4156e490009e2018d4fc81109",
      "tree": "5a8735c21895edc590517bce47ae1645341cdbfa",
      "parents": [
        "a6111d11b8b5364d02ea2e881c81ce39d004eb32",
        "14e46e04958df740c6c6a94849f176159a333f13"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 25 16:43:13 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 25 16:43:13 2016 -0800"
      },
      "message": "Merge branch \u0027fix/fst-sysfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "3e4c5efbb3ac7c9c4fb5f33b659fa98afe568ab1",
      "tree": "c6a67f25ec28ac61709dd92eaba37512a139240e",
      "parents": [
        "6b20e0ad2e39b77b7d4a48cc06c4de39768c7bb8"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Jan 25 16:47:10 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Jan 25 16:48:07 2016 +0100"
      },
      "message": "btrfs: add free space tree to the cow-only list\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "6b20e0ad2e39b77b7d4a48cc06c4de39768c7bb8",
      "tree": "892915061b5715805eadc8589b4ad86e139485c6",
      "parents": [
        "79b134a22b6fc45f48bcc1c27d6bf05b3ede5e06"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Jan 25 16:30:22 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Jan 25 16:48:06 2016 +0100"
      },
      "message": "btrfs: add free space tree to lockdep classes\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "79b134a22b6fc45f48bcc1c27d6bf05b3ede5e06",
      "tree": "c33a0062db4e89f50d41f7ace7bde14864e5fb76",
      "parents": [
        "8cce83ba5062a301a09e0920df813bbbdd3e9dbf"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 22 17:16:18 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 22 17:16:18 2016 +0100"
      },
      "message": "btrfs: tweak free space tree bitmap allocation\n\nThe requested bitmap size varies, observed numbers were \u003c 4K up to 16K.\nUsing vmalloc unconditionally would be too heavy, we\u0027ll try contiguous\nallocations first and fall back to vmalloc if there\u0027s no contig memory.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "8cce83ba5062a301a09e0920df813bbbdd3e9dbf",
      "tree": "6ecc80f16135644a15f11704081c847d76b1ad4f",
      "parents": [
        "988f1f576d4f7531cb2175ee1b7cb7afd6d95d22"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 22 10:28:24 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 22 10:28:24 2016 +0100"
      },
      "message": "btrfs: tests: switch to GFP_KERNEL\n\nThere\u0027s no reason to do GFP_NOFS in tests, it\u0027s not data-heavy and\nmemory allocation failures would affect only developers or testers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "14e46e04958df740c6c6a94849f176159a333f13",
      "tree": "79a2d0a4255c3555175ca3803fb9c9a6b6c8ea1a",
      "parents": [
        "444e75169872f668eb890f19ec1f32dfc632e704"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 21 18:54:41 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 21 18:54:41 2016 +0100"
      },
      "message": "btrfs: synchronize incompat feature bits with sysfs files\n\nThe files under /sys/fs/UUID/features get out of sync with the actual\nincompat bits set for the filesystem if they change after mount (eg. the\nLZO compression).\n\nSynchronize the feature bits with the sysfs files representing them\nright after we set/clear them.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "444e75169872f668eb890f19ec1f32dfc632e704",
      "tree": "fcc120a9b3ec12c3398908b9bb4491ef6cb3f603",
      "parents": [
        "3b5bb73bd88d1d90163c91e7cad50b12725dbb1c"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 21 18:50:40 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 21 18:50:40 2016 +0100"
      },
      "message": "btrfs: sysfs: introduce helper for syncing bits with sysfs files\n\nThe files under /sys/fs/UUID/features get out of sync with the actual\nincompat bits set for the filesystem if they change after mount. We\u0027re\ngoing to sync them and need a helper to do that.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "3b5bb73bd88d1d90163c91e7cad50b12725dbb1c",
      "tree": "e3d4396d213e2d769cf8c809f1d044ae494a1259",
      "parents": [
        "ba2d084055fd3f67af120070f5620173efd867c8"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 21 18:36:46 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 21 18:36:46 2016 +0100"
      },
      "message": "btrfs: sysfs: add free-space-tree bit attribute\n\nThe incompat bit representing the newly added free space tree feature is\nmissing. Right now it will be listed only among features supported by\nthe module, not per-fs.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "ba2d084055fd3f67af120070f5620173efd867c8",
      "tree": "fcf72721956631f2b47b3e8a91523bfdca5c0948",
      "parents": [
        "988f1f576d4f7531cb2175ee1b7cb7afd6d95d22"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Wed Jan 20 19:07:04 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Wed Jan 20 19:07:04 2016 +0100"
      },
      "message": "btrfs: sysfs: fix typo in compat_ro attribute definition\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "a6111d11b8b5364d02ea2e881c81ce39d004eb32",
      "tree": "0a0aa9c0ee14665dbe0f3d436aaeedb90f6d198a",
      "parents": [
        "748f4ef4c6708e733da077a1980923b9d19db78a"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Jan 12 17:52:13 2016 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:18 2016 -0800"
      },
      "message": "btrfs: raid56: Use raid_write_end_io for scrub\n\nNo need to create additional end_io function for scrub, it increased\ncode size and introduced some un-unified lines, as:\nraid_write_parity_end_io():\n        int err \u003d bio-\u003ebi_error;\n        if (bio-\u003ebi_error)\nraid_write_end_io():\n        int err \u003d bio-\u003ebi_error;\n        if (err)\n\nThis patch combines them.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "748f4ef4c6708e733da077a1980923b9d19db78a",
      "tree": "8578804c8c108ebab60398b81b854ccd1684f32b",
      "parents": [
        "915e22903cb34619c1a1462ca4248add96fa41d7"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Jan 12 17:22:13 2016 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:17 2016 -0800"
      },
      "message": "btrfs: Remove unnecessary ClearPageUptodate for raid56\n\nPageUptodate flag already initialized to 0 for new page,\nno need to set it again.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "915e22903cb34619c1a1462ca4248add96fa41d7",
      "tree": "493ff35e90bf36d273c1eb87a3eca92ff02d3a5f",
      "parents": [
        "b7178a5f0372a51260cf6e74d828e315e43dfc86"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Mar 03 20:42:48 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:16 2016 -0800"
      },
      "message": "btrfs: use rbio-\u003enr_pages to reduce calculation\n\nWe can use rbio-\u003estripe_npages to reduce unnecessary calculation in\nmany code place.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "b7178a5f0372a51260cf6e74d828e315e43dfc86",
      "tree": "2791d81ab923fd046de7b8f944714b7079c72d97",
      "parents": [
        "bfca9a6d4b1322ba36235e8a652f05a9668ef59b"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Mar 03 20:38:46 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:16 2016 -0800"
      },
      "message": "btrfs: Use unified stripe_page\u0027s index calculation\n\nWe are using different index calculation method for stripe_page in\ncurrent code:\n1: (rbio-\u003estripe_len / PAGE_CACHE_SIZE) * stripe_index + page_index\n2: DIV_ROUND_UP(rbio-\u003estripe_len, PAGE_CACHE_SIZE) * stripe_index + page_index\n3: DIV_ROUND_UP(rbio-\u003estripe_len * stripe_index, PAGE_CACHE_SIZE) + page_index\n...\n\nThey can get same result when stripe_len align to PAGE_CACHE_SIZE,\nthis is why current code can work, intruduce and use a common function\nfor calculation is a better choose.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "bfca9a6d4b1322ba36235e8a652f05a9668ef59b",
      "tree": "863e7cad45616ddc8a5417919d696ced884ddd2e",
      "parents": [
        "e1746e8381cd2af421f75557b5cae3604fc18b35"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Mon Dec 08 19:55:57 2014 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:15 2016 -0800"
      },
      "message": "btrfs: Fix calculation of rbio-\u003edbitmap\u0027s size calculation\n\nCurrent code is trying to calculate rbio-\u003edbitmap\u0027s size to make it\nalign to sizeof(long), but implement haven\u0027t achived this object,\nit is align to sizeof(char) instead.\nThis patch fixed above calculation, and use sizeof(long) instead of\nfixed \"8\" to increate compatibility.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "e1746e8381cd2af421f75557b5cae3604fc18b35",
      "tree": "fb140445ed587ff5c0bbdbea6e06fa659b106c92",
      "parents": [
        "0bc19f9031e0c59770286f82b8561c1d35064a65"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Dec 01 18:39:40 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:14 2016 -0800"
      },
      "message": "btrfs: Fix no_space in write and rm loop\n\nI see no_space in v4.4-rc1 again in xfstests generic/102.\nIt happened randomly in some node only.\n(one of 4 phy-node, and a kvm with non-virtio block driver)\n\nBy bisect, we can found the first-bad is:\n commit bdced438acd8 (\"block: setup bi_phys_segments after splitting\")\u0027\nBut above patch only triggered the bug by making bio operation\nfaster(or slower).\n\nMain reason is in our space_allocating code, we need to commit\npage writeback before wait it complish, this patch fixed above\nbug.\n\nBTW, there is another reason for generic/102 fail, caused by\ndisable default mixed-blockgroup, I\u0027ll fix it in xfstests.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "0bc19f9031e0c59770286f82b8561c1d35064a65",
      "tree": "2469a01dbf180d1e95d6aebd5f61271dd877ea0a",
      "parents": [
        "ee22f0c4ec428e7f16d3c5fa1d55fd7860cb304a"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Wed Jan 06 18:56:36 2016 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:13 2016 -0800"
      },
      "message": "btrfs: merge functions for wait snapshot creation\n\nwait_for_snapshot_creation() is in same group with oher two:\n btrfs_start_write_no_snapshoting()\n btrfs_end_write_no_snapshoting()\n\nRename wait_for_snapshot_creation() and move it into same place\nwith other two.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "ee22f0c4ec428e7f16d3c5fa1d55fd7860cb304a",
      "tree": "fbcda1a25e198bb6a18f4e0f001334bfe8f6af0f",
      "parents": [
        "ad1ba2a0c453db255f04b17101db6d05c44d8467"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Wed Jan 06 18:47:31 2016 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Jan 20 07:22:13 2016 -0800"
      },
      "message": "btrfs: delete unused argument in btrfs_copy_from_user\n\nsize_t write_bytes is not necessary for btrfs_copy_from_user(),\ndelete it.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "ad1ba2a0c453db255f04b17101db6d05c44d8467",
      "tree": "76b4b001d9c01a6bd8376fd851266bad6256f250",
      "parents": [
        "94a97dfeb61e32a213ca5519b063076c5201c5b2"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Tue Dec 15 18:18:09 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:43:45 2016 -0800"
      },
      "message": "btrfs: Use direct way to determine raid56 write/recover mode\n\nOld code used bbio-\u003eraid_map to determine whether in raid56\nwrite/recover operation, because we didn\u0027t\u0027t have bbio-\u003emap_type.\n\nNow we have direct way for this condition, rid of using\nthe function-relative data, and make the code more readable.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "94a97dfeb61e32a213ca5519b063076c5201c5b2",
      "tree": "4a2e88f9eceb7c8f0e3277629a227d84b31c72af",
      "parents": [
        "f04b772bfc17f502703794f4d100d12155c1a1a9"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Wed Dec 09 21:03:49 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:43:40 2016 -0800"
      },
      "message": "btrfs: Small cleanup for get index_srcdev loop\n\n1: Adjust condition in loop to make less TAB\n2: Move btrfs_put_bbio()\u0027s line for combine, and makes logic clean.\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "f04b772bfc17f502703794f4d100d12155c1a1a9",
      "tree": "f69d161dd9d146284d0e0870fcfce492ea210a6a",
      "parents": [
        "319e4d0661e5323c9f9945f0f8fb5905e5fe74c3"
      ],
      "author": {
        "name": "Qu Wenruo",
        "email": "quwenruo@cn.fujitsu.com",
        "time": "Tue Dec 15 09:14:37 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:41 2016 -0800"
      },
      "message": "btrfs: Enhance chunk validation check\n\nEnhance chunk validation:\n1) Num_stripes\n   We already have such check but it\u0027s only in super block sys chunk\n   array.\n   Now check all on-disk chunks.\n\n2) Chunk logical\n   It should be aligned to sector size.\n   This behavior should be *DOUBLE CHECKED* for 64K sector size like\n   PPC64 or AArch64.\n   Maybe we can found some hidden bugs.\n\n3) Chunk length\n   Same as chunk logical, should be aligned to sector size.\n\n4) Stripe length\n   It should be power of 2.\n\n5) Chunk type\n   Any bit out of TYPE_MAS | PROFILE_MASK is invalid.\n\nWith all these much restrict rules, several fuzzed image reported in\nmail list should no longer cause kernel panic.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Qu Wenruo \u003cquwenruo@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "319e4d0661e5323c9f9945f0f8fb5905e5fe74c3",
      "tree": "8930cb9cd248db15d0443bc93e046be23633921c",
      "parents": [
        "c2d6cb1636d235257086f939a8194ef0bf93af6e"
      ],
      "author": {
        "name": "Qu Wenruo",
        "email": "quwenruo@cn.fujitsu.com",
        "time": "Tue Dec 15 09:14:36 2015 +0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:41 2016 -0800"
      },
      "message": "btrfs: Enhance super validation check\n\nEnhance btrfs_check_super_valid() function by the following points:\n1) Restrict sector/node size check\n   Not the old max/min valid check, but also check if it\u0027s a power of 2.\n   So some bogus number like 12K node size won\u0027t pass now.\n\n2) Super flag check\n   For now, there is still some inconsistency between kernel and\n   btrfs-progs super flags.\n   And considering btrfs-progs may add new flags for super block, this\n   check will only output warning.\n\n3) Better root alignment check\n   Now root bytenr is checked against sector size.\n\n4) Move some check into btrfs_check_super_valid().\n   Like node size vs leaf size check, and PAGESIZE vs sectorsize check.\n   And magic number check.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Qu Wenruo \u003cquwenruo@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "c2d6cb1636d235257086f939a8194ef0bf93af6e",
      "tree": "c7163ec6901ca752096b9741e86e43b313471901",
      "parents": [
        "fedc00455ccc1f928066528da87b0c7b143de647"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Fri Jan 15 11:05:12 2016 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:41 2016 -0800"
      },
      "message": "Btrfs: fix deadlock running delayed iputs at transaction commit time\n\nWhile running a stress test I ran into a deadlock when running the delayed\niputs at transaction time, which produced the following report and trace:\n\n[  886.399989] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[  886.400871] [ INFO: possible recursive locking detected ]\n[  886.401663] 4.4.0-rc6-btrfs-next-18+ #1 Not tainted\n[  886.402384] ---------------------------------------------\n[  886.403182] fio/8277 is trying to acquire lock:\n[  886.403568]  (\u0026fs_info-\u003edelayed_iput_sem){++++..}, at: [\u003cffffffffa0538823\u003e] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]\n[  886.403568]\n[  886.403568] but task is already holding lock:\n[  886.403568]  (\u0026fs_info-\u003edelayed_iput_sem){++++..}, at: [\u003cffffffffa0538823\u003e] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]\n[  886.403568]\n[  886.403568] other info that might help us debug this:\n[  886.403568]  Possible unsafe locking scenario:\n[  886.403568]\n[  886.403568]        CPU0\n[  886.403568]        ----\n[  886.403568]   lock(\u0026fs_info-\u003edelayed_iput_sem);\n[  886.403568]   lock(\u0026fs_info-\u003edelayed_iput_sem);\n[  886.403568]\n[  886.403568]  *** DEADLOCK ***\n[  886.403568]\n[  886.403568]  May be due to missing lock nesting notation\n[  886.403568]\n[  886.403568] 3 locks held by fio/8277:\n[  886.403568]  #0:  (sb_writers#11){.+.+.+}, at: [\u003cffffffff81174c4c\u003e] __sb_start_write+0x5f/0xb0\n[  886.403568]  #1:  (\u0026sb-\u003es_type-\u003ei_mutex_key#15){+.+.+.}, at: [\u003cffffffffa054620d\u003e] btrfs_file_write_iter+0x73/0x408 [btrfs]\n[  886.403568]  #2:  (\u0026fs_info-\u003edelayed_iput_sem){++++..}, at: [\u003cffffffffa0538823\u003e] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]\n[  886.403568]\n[  886.403568] stack backtrace:\n[  886.403568] CPU: 6 PID: 8277 Comm: fio Not tainted 4.4.0-rc6-btrfs-next-18+ #1\n[  886.403568] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014\n[  886.403568]  0000000000000000 ffff88009f80f770 ffffffff8125d4fd ffffffff82af1fc0\n[  886.403568]  ffff88009f80f830 ffffffff8108e5f9 0000000200000000 ffff88009fd92290\n[  886.403568]  0000000000000000 ffffffff82af1fc0 ffffffff829cfb01 00042b216d008804\n[  886.403568] Call Trace:\n[  886.403568]  [\u003cffffffff8125d4fd\u003e] dump_stack+0x4e/0x79\n[  886.403568]  [\u003cffffffff8108e5f9\u003e] __lock_acquire+0xd42/0xf0b\n[  886.403568]  [\u003cffffffff810c22db\u003e] ? __module_address+0xdf/0x108\n[  886.403568]  [\u003cffffffff8108eb77\u003e] lock_acquire+0x10d/0x194\n[  886.403568]  [\u003cffffffff8108eb77\u003e] ? lock_acquire+0x10d/0x194\n[  886.403568]  [\u003cffffffffa0538823\u003e] ? btrfs_run_delayed_iputs+0x36/0xbf [btrfs]\n[  886.489542]  [\u003cffffffff8148556b\u003e] down_read+0x3e/0x4d\n[  886.489542]  [\u003cffffffffa0538823\u003e] ? btrfs_run_delayed_iputs+0x36/0xbf [btrfs]\n[  886.489542]  [\u003cffffffffa0538823\u003e] btrfs_run_delayed_iputs+0x36/0xbf [btrfs]\n[  886.489542]  [\u003cffffffffa0533953\u003e] btrfs_commit_transaction+0x8f5/0x96e [btrfs]\n[  886.489542]  [\u003cffffffffa0521d7a\u003e] flush_space+0x435/0x44a [btrfs]\n[  886.489542]  [\u003cffffffffa052218b\u003e] ? reserve_metadata_bytes+0x26a/0x384 [btrfs]\n[  886.489542]  [\u003cffffffffa05221ae\u003e] reserve_metadata_bytes+0x28d/0x384 [btrfs]\n[  886.489542]  [\u003cffffffffa052256c\u003e] ? btrfs_block_rsv_refill+0x58/0x96 [btrfs]\n[  886.489542]  [\u003cffffffffa0522584\u003e] btrfs_block_rsv_refill+0x70/0x96 [btrfs]\n[  886.489542]  [\u003cffffffffa053d747\u003e] btrfs_evict_inode+0x394/0x55a [btrfs]\n[  886.489542]  [\u003cffffffff81188e31\u003e] evict+0xa7/0x15c\n[  886.489542]  [\u003cffffffff81189878\u003e] iput+0x1d3/0x266\n[  886.489542]  [\u003cffffffffa053887c\u003e] btrfs_run_delayed_iputs+0x8f/0xbf [btrfs]\n[  886.489542]  [\u003cffffffffa0533953\u003e] btrfs_commit_transaction+0x8f5/0x96e [btrfs]\n[  886.489542]  [\u003cffffffff81085096\u003e] ? signal_pending_state+0x31/0x31\n[  886.489542]  [\u003cffffffffa0521191\u003e] btrfs_alloc_data_chunk_ondemand+0x1d7/0x288 [btrfs]\n[  886.489542]  [\u003cffffffffa0521282\u003e] btrfs_check_data_free_space+0x40/0x59 [btrfs]\n[  886.489542]  [\u003cffffffffa05228f5\u003e] btrfs_delalloc_reserve_space+0x1e/0x4e [btrfs]\n[  886.489542]  [\u003cffffffffa053620a\u003e] btrfs_direct_IO+0x10c/0x27e [btrfs]\n[  886.489542]  [\u003cffffffff8111d9a1\u003e] generic_file_direct_write+0xb3/0x128\n[  886.489542]  [\u003cffffffffa05463c3\u003e] btrfs_file_write_iter+0x229/0x408 [btrfs]\n[  886.489542]  [\u003cffffffff8108ae38\u003e] ? __lock_is_held+0x38/0x50\n[  886.489542]  [\u003cffffffff8117279e\u003e] __vfs_write+0x7c/0xa5\n[  886.489542]  [\u003cffffffff81172cda\u003e] vfs_write+0xa0/0xe4\n[  886.489542]  [\u003cffffffff811734cc\u003e] SyS_write+0x50/0x7e\n[  886.489542]  [\u003cffffffff814872d7\u003e] entry_SYSCALL_64_fastpath+0x12/0x6f\n[ 1081.852335] INFO: task fio:8244 blocked for more than 120 seconds.\n[ 1081.854348]       Not tainted 4.4.0-rc6-btrfs-next-18+ #1\n[ 1081.857560] \"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\n[ 1081.863227] fio        D ffff880213f9bb28     0  8244   8240 0x00000000\n[ 1081.868719]  ffff880213f9bb28 00ffffff810fc6b0 ffffffff0000000a ffff88023ed55240\n[ 1081.872499]  ffff880206b5d400 ffff880213f9c000 ffff88020a4d5318 ffff880206b5d400\n[ 1081.876834]  ffffffff00000001 ffff880206b5d400 ffff880213f9bb40 ffffffff81482ba4\n[ 1081.880782] Call Trace:\n[ 1081.881793]  [\u003cffffffff81482ba4\u003e] schedule+0x7f/0x97\n[ 1081.883340]  [\u003cffffffff81485eb5\u003e] rwsem_down_write_failed+0x2d5/0x325\n[ 1081.895525]  [\u003cffffffff8108d48d\u003e] ? trace_hardirqs_on_caller+0x16/0x1ab\n[ 1081.897419]  [\u003cffffffff81269723\u003e] call_rwsem_down_write_failed+0x13/0x20\n[ 1081.899251]  [\u003cffffffff81269723\u003e] ? call_rwsem_down_write_failed+0x13/0x20\n[ 1081.901063]  [\u003cffffffff81089fae\u003e] ? __down_write_nested.isra.0+0x1f/0x21\n[ 1081.902365]  [\u003cffffffff814855bd\u003e] down_write+0x43/0x57\n[ 1081.903846]  [\u003cffffffffa05211b0\u003e] ? btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]\n[ 1081.906078]  [\u003cffffffffa05211b0\u003e] btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]\n[ 1081.908846]  [\u003cffffffff8108d461\u003e] ? mark_held_locks+0x56/0x6c\n[ 1081.910409]  [\u003cffffffffa0521282\u003e] btrfs_check_data_free_space+0x40/0x59 [btrfs]\n[ 1081.912482]  [\u003cffffffffa05228f5\u003e] btrfs_delalloc_reserve_space+0x1e/0x4e [btrfs]\n[ 1081.914597]  [\u003cffffffffa053620a\u003e] btrfs_direct_IO+0x10c/0x27e [btrfs]\n[ 1081.919037]  [\u003cffffffff8111d9a1\u003e] generic_file_direct_write+0xb3/0x128\n[ 1081.920754]  [\u003cffffffffa05463c3\u003e] btrfs_file_write_iter+0x229/0x408 [btrfs]\n[ 1081.922496]  [\u003cffffffff8108ae38\u003e] ? __lock_is_held+0x38/0x50\n[ 1081.923922]  [\u003cffffffff8117279e\u003e] __vfs_write+0x7c/0xa5\n[ 1081.925275]  [\u003cffffffff81172cda\u003e] vfs_write+0xa0/0xe4\n[ 1081.926584]  [\u003cffffffff811734cc\u003e] SyS_write+0x50/0x7e\n[ 1081.927968]  [\u003cffffffff814872d7\u003e] entry_SYSCALL_64_fastpath+0x12/0x6f\n[ 1081.985293] INFO: lockdep is turned off.\n[ 1081.986132] INFO: task fio:8249 blocked for more than 120 seconds.\n[ 1081.987434]       Not tainted 4.4.0-rc6-btrfs-next-18+ #1\n[ 1081.988534] \"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\n[ 1081.990147] fio        D ffff880218febbb8     0  8249   8240 0x00000000\n[ 1081.991626]  ffff880218febbb8 00ffffff81486b8e ffff88020000000b ffff88023ed75240\n[ 1081.993258]  ffff8802120a9a00 ffff880218fec000 ffff88020a4d5318 ffff8802120a9a00\n[ 1081.994850]  ffffffff00000001 ffff8802120a9a00 ffff880218febbd0 ffffffff81482ba4\n[ 1081.996485] Call Trace:\n[ 1081.997037]  [\u003cffffffff81482ba4\u003e] schedule+0x7f/0x97\n[ 1081.998017]  [\u003cffffffff81485eb5\u003e] rwsem_down_write_failed+0x2d5/0x325\n[ 1081.999241]  [\u003cffffffff810852a5\u003e] ? finish_wait+0x6d/0x76\n[ 1082.000306]  [\u003cffffffff81269723\u003e] call_rwsem_down_write_failed+0x13/0x20\n[ 1082.001533]  [\u003cffffffff81269723\u003e] ? call_rwsem_down_write_failed+0x13/0x20\n[ 1082.002776]  [\u003cffffffff81089fae\u003e] ? __down_write_nested.isra.0+0x1f/0x21\n[ 1082.003995]  [\u003cffffffff814855bd\u003e] down_write+0x43/0x57\n[ 1082.005000]  [\u003cffffffffa05211b0\u003e] ? btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]\n[ 1082.007403]  [\u003cffffffffa05211b0\u003e] btrfs_alloc_data_chunk_ondemand+0x1f6/0x288 [btrfs]\n[ 1082.008988]  [\u003cffffffffa0545064\u003e] btrfs_fallocate+0x7c1/0xc2f [btrfs]\n[ 1082.010193]  [\u003cffffffff8108a1ba\u003e] ? percpu_down_read+0x4e/0x77\n[ 1082.011280]  [\u003cffffffff81174c4c\u003e] ? __sb_start_write+0x5f/0xb0\n[ 1082.012265]  [\u003cffffffff81174c4c\u003e] ? __sb_start_write+0x5f/0xb0\n[ 1082.013021]  [\u003cffffffff811712e4\u003e] vfs_fallocate+0x170/0x1ff\n[ 1082.013738]  [\u003cffffffff81181ebb\u003e] ioctl_preallocate+0x89/0x9b\n[ 1082.014778]  [\u003cffffffff811822d7\u003e] do_vfs_ioctl+0x40a/0x4ea\n[ 1082.015778]  [\u003cffffffff81176ea7\u003e] ? SYSC_newfstat+0x25/0x2e\n[ 1082.016806]  [\u003cffffffff8118b4de\u003e] ? __fget_light+0x4d/0x71\n[ 1082.017789]  [\u003cffffffff8118240e\u003e] SyS_ioctl+0x57/0x79\n[ 1082.018706]  [\u003cffffffff814872d7\u003e] entry_SYSCALL_64_fastpath+0x12/0x6f\n\nThis happens because we can recursively acquire the semaphore\nfs_info-\u003edelayed_iput_sem when attempting to allocate space to satisfy\na file write request as shown in the first trace above - when committing\na transaction we acquire (down_read) the semaphore before running the\ndelayed iputs, and when running a delayed iput() we can end up calling\nan inode\u0027s eviction handler, which in turn commits another transaction\nand attempts to acquire (down_read) again the semaphore to run more\ndelayed iput operations.\nThis results in a deadlock because if a task acquires multiple times a\nsemaphore it should invoke down_read_nested() with a different lockdep\nclass for each level of recursion.\n\nFix this by simplifying the implementation and use a mutex instead that\nis acquired by the cleaner kthread before it runs the delayed iputs\ninstead of always acquiring a semaphore before delayed references are\nrun from anywhere.\n\nFixes: d7c151717a1e (btrfs: Fix NO_SPACE bug caused by delayed-iput)\nCc: stable@vger.kernel.org   # 4.1+\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "fedc00455ccc1f928066528da87b0c7b143de647",
      "tree": "0a33f5ffa2ad0df2813d31661a9edf3630e467b7",
      "parents": [
        "326f784281fbbdcd91bb401b2a3e32132c0f5c72"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Fri Jan 15 10:56:15 2016 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:40 2016 -0800"
      },
      "message": "Btrfs: fix typo in log message when starting a balance\n\nThe recent change titled \"Btrfs: Check metadata redundancy on balance\"\n(already in linux-next) left a typo in a message for users:\nmetatdata -\u003e metadata.\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "326f784281fbbdcd91bb401b2a3e32132c0f5c72",
      "tree": "ebee8e2cf51dd901d8c31b88e1a93b1655e6abf4",
      "parents": [
        "acc308556c812485462b6b43843c3f64530dd843",
        "546bed631203344611f42b2af1d224d2eedb4e6b"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:30 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:30 2016 -0800"
      },
      "message": "Merge branch \u0027misc-for-4.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n"
    },
    {
      "commit": "acc308556c812485462b6b43843c3f64530dd843",
      "tree": "fa26745572077d32d446e5fc444eb253812577d1",
      "parents": [
        "988f1f576d4f7531cb2175ee1b7cb7afd6d95d22",
        "fb75d857a31d600cc0c37b8c7d914014f7fa3f9a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:00 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Tue Jan 19 18:21:00 2016 -0800"
      },
      "message": "Merge branch \u0027misc-cleanups-4.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n"
    },
    {
      "commit": "fb75d857a31d600cc0c37b8c7d914014f7fa3f9a",
      "tree": "b202bfa822bdf23687613ccb454762b89465a502",
      "parents": [
        "0dc924c5f2a3c4d999e12feaccee5f970cea1315"
      ],
      "author": {
        "name": "Colin Ian King",
        "email": "colin.king@canonical.com",
        "time": "Tue Jan 19 00:05:28 2016 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Tue Jan 19 10:33:56 2016 +0100"
      },
      "message": "btrfs: remove duplicate const specifier\n\nduplicate const is redundant so remove it\n\nSigned-off-by: Colin Ian King \u003ccolin.king@canonical.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "546bed631203344611f42b2af1d224d2eedb4e6b",
      "tree": "545bad08e026899889863a2482e09a9de3a6f326",
      "parents": [
        "b7c47bbb2d1856330f71ba04c8eb03b39aca87cd"
      ],
      "author": {
        "name": "Sebastian Andrzej Siewior",
        "email": "bigeasy@linutronix.de",
        "time": "Fri Jan 15 14:37:15 2016 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 15 19:28:43 2016 +0100"
      },
      "message": "btrfs: initialize the seq counter in struct btrfs_device\n\nI managed to trigger this:\n| INFO: trying to register non-static key.\n| the code is fine but needs lockdep annotation.\n| turning off the locking correctness validator.\n| CPU: 1 PID: 781 Comm: systemd-gpt-aut Not tainted 4.4.0-rt2+ #14\n| Hardware name: ARM-Versatile Express\n| [\u003c80307cec\u003e] (dump_stack)\n| [\u003c80070e98\u003e] (__lock_acquire)\n| [\u003c8007184c\u003e] (lock_acquire)\n| [\u003c80287800\u003e] (btrfs_ioctl)\n| [\u003c8012a8d4\u003e] (do_vfs_ioctl)\n| [\u003c8012ac14\u003e] (SyS_ioctl)\n\nso I think that btrfs_device_data_ordered_init() is not invoked behind\na macro somewhere.\n\nFixes: 7cc8e58d53cd (\"Btrfs: fix unprotected device\u0027s variants on 32bits machine\")\nSigned-off-by: Sebastian Andrzej Siewior \u003cbigeasy@linutronix.de\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "0dc924c5f2a3c4d999e12feaccee5f970cea1315",
      "tree": "f8bbd1998deb74a0c3253c24b7bd1286b2afe6d9",
      "parents": [
        "8e217858eea0d63de9d818f52fa98b5f9e502e5a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Jan 13 15:21:17 2016 +0300"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 15 19:27:28 2016 +0100"
      },
      "message": "Btrfs: clean up an error code in btrfs_init_space_info()\n\nIf we return 1 here, then the caller treats it as an error and returns\n-EINVAL.  It causes a static checker warning to treat positive returns\nas an error.\n\nFixes: 1aba86d67f34 (\u0027Btrfs: fix easily get into ENOSPC in mixed case\u0027)\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "8e217858eea0d63de9d818f52fa98b5f9e502e5a",
      "tree": "f4ca90c0db88a119e42c8ee4a703c6bef07c448d",
      "parents": [
        "95617d69326ce386c95e33db7aeb832b45ee9f8f"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Wed Jan 13 22:08:01 2016 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 15 19:27:18 2016 +0100"
      },
      "message": "btrfs: fix iterator with update error in backref.c\n\nFix the following error:\n\nfs/btrfs/backref.c:565:1-20: iterator with update on line 577\n\nFixes: a7ca422(\u0027btrfs: use list_for_each_entry* in backref.c\u0027)\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "b7c47bbb2d1856330f71ba04c8eb03b39aca87cd",
      "tree": "511803ab4a7175e6d14d5b57c5f7c158178c7327",
      "parents": [
        "f32e48e925964c4f8ab917850788a87e1cef3bad"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Jan 06 17:03:40 2016 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 15 19:25:36 2016 +0100"
      },
      "message": "Btrfs: fix output of compression message in btrfs_parse_options()\n\nThe compression message might not be correctly output.\nFix it.\n\n[[before fix]]\n\n# mount -o compress /dev/sdb3 /test3\n[  996.874264] BTRFS info (device sdb3): disk space caching is enabled\n[  996.874268] BTRFS: has skinny extents\n# mount | grep /test3\n/dev/sdb3 on /test3 type btrfs (rw,relatime,compress\u003dzlib,space_cache,subvolid\u003d5,subvol\u003d/)\n\n# mount -o remount,compress-force /dev/sdb3 /test3\n[ 1035.075017] BTRFS info (device sdb3): force zlib compression\n[ 1035.075021] BTRFS info (device sdb3): disk space caching is enabled\n# mount | grep /test3\n/dev/sdb3 on /test3 type btrfs (rw,relatime,compress-force\u003dzlib,space_cache,subvolid\u003d5,subvol\u003d/)\n\n# mount -o remount,compress /dev/sdb3 /test3\n[ 1053.679092] BTRFS info (device sdb3): disk space caching is enabled\n# mount | grep /test3\n/dev/sdb3 on /test3 type btrfs (rw,relatime,compress\u003dzlib,space_cache,subvolid\u003d5,subvol\u003d/)\n\n[[after fix]]\n\n# mount -o compress /dev/sdb3 /test3\n[  401.021753] BTRFS info (device sdb3): use zlib compression\n[  401.021758] BTRFS info (device sdb3): disk space caching is enabled\n[  401.021760] BTRFS: has skinny extents\n# mount | grep /test3\n/dev/sdb3 on /test3 type btrfs (rw,relatime,compress\u003dzlib,space_cache,subvolid\u003d5,subvol\u003d/)\n\n# mount -o remount,compress-force /dev/sdb3 /test3\n[  439.824624] BTRFS info (device sdb3): force zlib compression\n[  439.824629] BTRFS info (device sdb3): disk space caching is enabled\n# mount | grep /test3\n/dev/sdb3 on /test3 type btrfs (rw,relatime,compress-force\u003dzlib,space_cache,subvolid\u003d5,subvol\u003d/)\n\n# mount -o remount,compress /dev/sdb3 /test3\n[  459.918430] BTRFS info (device sdb3): use zlib compression\n[  459.918434] BTRFS info (device sdb3): disk space caching is enabled\n# mount | grep /test3\n/dev/sdb3 on /test3 type btrfs (rw,relatime,compress\u003dzlib,space_cache,subvolid\u003d5,subvol\u003d/)\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "f32e48e925964c4f8ab917850788a87e1cef3bad",
      "tree": "da8e08efa26678bc8978a28a572315de65d68bb7",
      "parents": [
        "ee592d07716139ef7c3ea8049936cbc3aafbc533"
      ],
      "author": {
        "name": "Chandan Rajendra",
        "email": "chandan@linux.vnet.ibm.com",
        "time": "Thu Jan 07 18:56:59 2016 +0530"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 15 19:25:02 2016 +0100"
      },
      "message": "Btrfs: Initialize btrfs_root-\u003ehighest_objectid when loading tree root and subvolume roots\n\nThe following call trace is seen when btrfs/031 test is executed in a loop,\n\n[  158.661848] ------------[ cut here ]------------\n[  158.662634] WARNING: CPU: 2 PID: 890 at /home/chandan/repos/linux/fs/btrfs/ioctl.c:558 create_subvol+0x3d1/0x6ea()\n[  158.664102] BTRFS: Transaction aborted (error -2)\n[  158.664774] Modules linked in:\n[  158.665266] CPU: 2 PID: 890 Comm: btrfs Not tainted 4.4.0-rc6-g511711a #2\n[  158.666251] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011\n[  158.667392]  ffffffff81c0a6b0 ffff8806c7c4f8e8 ffffffff81431fc8 ffff8806c7c4f930\n[  158.668515]  ffff8806c7c4f920 ffffffff81051aa1 ffff880c85aff000 ffff8800bb44d000\n[  158.669647]  ffff8808863b5c98 0000000000000000 00000000fffffffe ffff8806c7c4f980\n[  158.670769] Call Trace:\n[  158.671153]  [\u003cffffffff81431fc8\u003e] dump_stack+0x44/0x5c\n[  158.671884]  [\u003cffffffff81051aa1\u003e] warn_slowpath_common+0x81/0xc0\n[  158.672769]  [\u003cffffffff81051b27\u003e] warn_slowpath_fmt+0x47/0x50\n[  158.673620]  [\u003cffffffff813bc98d\u003e] create_subvol+0x3d1/0x6ea\n[  158.674440]  [\u003cffffffff813777c9\u003e] btrfs_mksubvol.isra.30+0x369/0x520\n[  158.675376]  [\u003cffffffff8108a4aa\u003e] ? percpu_down_read+0x1a/0x50\n[  158.676235]  [\u003cffffffff81377a81\u003e] btrfs_ioctl_snap_create_transid+0x101/0x180\n[  158.677268]  [\u003cffffffff81377b52\u003e] btrfs_ioctl_snap_create+0x52/0x70\n[  158.678183]  [\u003cffffffff8137afb4\u003e] btrfs_ioctl+0x474/0x2f90\n[  158.678975]  [\u003cffffffff81144b8e\u003e] ? vma_merge+0xee/0x300\n[  158.679751]  [\u003cffffffff8115be31\u003e] ? alloc_pages_vma+0x91/0x170\n[  158.680599]  [\u003cffffffff81123f62\u003e] ? lru_cache_add_active_or_unevictable+0x22/0x70\n[  158.681686]  [\u003cffffffff813d99cf\u003e] ? selinux_file_ioctl+0xff/0x1d0\n[  158.682581]  [\u003cffffffff8117b791\u003e] do_vfs_ioctl+0x2c1/0x490\n[  158.683399]  [\u003cffffffff813d3cde\u003e] ? security_file_ioctl+0x3e/0x60\n[  158.684297]  [\u003cffffffff8117b9d4\u003e] SyS_ioctl+0x74/0x80\n[  158.685051]  [\u003cffffffff819b2bd7\u003e] entry_SYSCALL_64_fastpath+0x12/0x6a\n[  158.685958] ---[ end trace 4b63312de5a2cb76 ]---\n[  158.686647] BTRFS: error (device loop0) in create_subvol:558: errno\u003d-2 No such entry\n[  158.709508] BTRFS info (device loop0): forced readonly\n[  158.737113] BTRFS info (device loop0): disk space caching is enabled\n[  158.738096] BTRFS error (device loop0): Remounting read-write after error is not allowed\n[  158.851303] BTRFS error (device loop0): cleaner transaction attach returned -30\n\nThis occurs because,\n\nMount filesystem\nCreate subvol with ID 257\nUnmount filesystem\nMount filesystem\nDelete subvol with ID 257\n  btrfs_drop_snapshot()\n    Add root corresponding to subvol 257 into\n    btrfs_transaction-\u003edropped_roots list\nCreate new subvol (i.e. create_subvol())\n  257 is returned as the next free objectid\n  btrfs_read_fs_root_no_name()\n    Finds the btrfs_root instance corresponding to the old subvol with ID 257\n    in btrfs_fs_info-\u003efs_roots_radix.\n    Returns error since btrfs_root_item-\u003erefs has the value of 0.\n\nTo fix the issue the commit initializes tree root\u0027s and subvolume root\u0027s\nhighest_objectid when loading the roots from disk.\n\nSigned-off-by: Chandan Rajendra \u003cchandan@linux.vnet.ibm.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "95617d69326ce386c95e33db7aeb832b45ee9f8f",
      "tree": "58b636c69bee4179da9b70fe66d448cf3605c1f0",
      "parents": [
        "a7ca42256d9fad572fb7f2c471514d7d3572b1db"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Wed Jun 03 10:55:48 2015 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Jan 15 19:22:28 2016 +0100"
      },
      "message": "btrfs: cleanup, stop casting for extent_map-\u003elookup everywhere\n\nOverloading extent_map-\u003ebdev to struct map_lookup * might have started out\nas a means to an end, but it\u0027s a pattern that\u0027s used all over the place\nnow. Let\u0027s get rid of the casting and just add a union instead.\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "988f1f576d4f7531cb2175ee1b7cb7afd6d95d22",
      "tree": "bd7d676abc4b13b749d3ad6cb41e7872a6fdfb2f",
      "parents": [
        "b28cf57246d5b797ba725bb033110c247f2c301f",
        "8cdc7c5b00d945a3c823fc4277af304abb9cb43d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 11 08:39:28 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 11 08:39:28 2016 -0800"
      },
      "message": "Merge branch \u0027for-chris-4.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/fdmanana/linux into for-linus-4.5\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "b28cf57246d5b797ba725bb033110c247f2c301f",
      "tree": "33dbe2cfcafa6e7f5b3047a669e454739839f3c7",
      "parents": [
        "a3058101c17d2825f34a0ab5c37d93ead0f4d9dc",
        "a7ca42256d9fad572fb7f2c471514d7d3572b1db"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 11 06:08:37 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 11 06:08:37 2016 -0800"
      },
      "message": "Merge branch \u0027misc-cleanups-4.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "a3058101c17d2825f34a0ab5c37d93ead0f4d9dc",
      "tree": "193417b02c4fa79b582b435e154761b91a501884",
      "parents": [
        "511711af91f21d80b27f18b569352d6896562828",
        "ee592d07716139ef7c3ea8049936cbc3aafbc533"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 11 05:59:32 2016 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Mon Jan 11 05:59:32 2016 -0800"
      },
      "message": "Merge branch \u0027misc-for-4.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n"
    },
    {
      "commit": "8cdc7c5b00d945a3c823fc4277af304abb9cb43d",
      "tree": "b5e0728e93d7cdd756cc942b2671593266d16fa8",
      "parents": [
        "271dba4521aed0c37c063548f876b49f5cd64b2e"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Wed Jan 06 22:42:35 2016 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Jan 07 21:16:03 2016 +0000"
      },
      "message": "Btrfs: fix fitrim discarding device area reserved for boot loader\u0027s use\n\nAs of the 4.3 kernel release, the fitrim ioctl can now discard any region\nof a disk that is not allocated to any chunk/block group, including the\nfirst megabyte which is used for our primary superblock and by the boot\nloader (grub for example).\n\nFix this by not allowing to trim/discard any region in the device starting\nwith an offset not greater than min(alloc_start_mount_option, 1Mb), just\nas it was not possible before 4.3.\n\nA reproducer test case for xfstests follows.\n\n  seq\u003d`basename $0`\n  seqres\u003d$RESULT_DIR/$seq\n  echo \"QA output created by $seq\"\n  tmp\u003d/tmp/$$\n  status\u003d1\t# failure is the default!\n  trap \"_cleanup; exit \\$status\" 0 1 2 3 15\n\n  _cleanup()\n  {\n      cd /\n      rm -f $tmp.*\n  }\n\n  # get standard environment, filters and checks\n  . ./common/rc\n  . ./common/filter\n\n  # real QA test starts here\n  _need_to_be_root\n  _supported_fs btrfs\n  _supported_os Linux\n  _require_scratch\n\n  rm -f $seqres.full\n\n  _scratch_mkfs \u003e\u003e$seqres.full 2\u003e\u00261\n\n  # Write to the [0, 64Kb[ and [68Kb, 1Mb[ ranges of the device. These ranges are\n  # reserved for a boot loader to use (GRUB for example) and btrfs should never\n  # use them - neither for allocating metadata/data nor should trim/discard them.\n  # The range [64Kb, 68Kb[ is used for the primary superblock of the filesystem.\n  $XFS_IO_PROG -c \"pwrite -S 0xfd 0 64K\" $SCRATCH_DEV | _filter_xfs_io\n  $XFS_IO_PROG -c \"pwrite -S 0xfd 68K 956K\" $SCRATCH_DEV | _filter_xfs_io\n\n  # Now mount the filesystem and perform a fitrim against it.\n  _scratch_mount\n  _require_batched_discard $SCRATCH_MNT\n  $FSTRIM_PROG $SCRATCH_MNT\n\n  # Now unmount the filesystem and verify the content of the ranges was not\n  # modified (no trim/discard happened on them).\n  _scratch_unmount\n  echo \"Content of the ranges [0, 64Kb] and [68Kb, 1Mb[ after fitrim:\"\n  od -t x1 -N $((64 * 1024)) $SCRATCH_DEV\n  od -t x1 -j $((68 * 1024)) -N $((956 * 1024)) $SCRATCH_DEV\n\n  status\u003d0\n  exit\n\nReported-by: Vincent Petry  \u003cPVince81@yahoo.fr\u003e\nReported-by: Andrei Borzenkov \u003carvidjaar@gmail.com\u003e\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d109341\nFixes: 499f377f49f0 (btrfs: iterate over unused chunk space in FITRIM)\nCc: stable@vger.kernel.org # 4.3+\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\n"
    },
    {
      "commit": "ee592d07716139ef7c3ea8049936cbc3aafbc533",
      "tree": "5189f3283edad9305b999ce6806871a0f6d5fba6",
      "parents": [
        "ca8a51b3a979d57b082b14eda38602b7f52d81d1"
      ],
      "author": {
        "name": "Sam Tygier",
        "email": "samtygier@yahoo.co.uk",
        "time": "Wed Jan 06 08:46:12 2016 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:20:56 2016 +0100"
      },
      "message": "Btrfs: Check metadata redundancy on balance\n\nWhen converting a filesystem via balance check that metadata mode\nis at least as redundant as the data mode. For example give warning\nwhen:\n-dconvert\u003draid1 -mconvert\u003dsingle\n\nSigned-off-by: Sam Tygier \u003csamtygier@yahoo.co.uk\u003e\n[ minor message reformatting ]\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "ca8a51b3a979d57b082b14eda38602b7f52d81d1",
      "tree": "af4996eef9554daebf44cb75c25485d17c0d7c50",
      "parents": [
        "8546b570511f428838129c00e701eda481cd7c13"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Sat Oct 10 17:59:53 2015 +0200"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:20:55 2016 +0100"
      },
      "message": "btrfs: statfs: report zero available if metadata are exhausted\n\nThere is one ENOSPC case that\u0027s very confusing. There\u0027s Available\ngreater than zero but no file operation succeds (besides removing\nfiles). This happens when the metadata are exhausted and there\u0027s no\npossibility to allocate another chunk.\n\nIn this scenario it\u0027s normal that there\u0027s still some space in the data\nchunk and the calculation in df reflects that in the Avail value.\n\nTo at least give some clue about the ENOSPC situation, let statfs report\nzero value in Avail, even if there\u0027s still data space available.\n\nCurrent:\n  /dev/sdb1             4.0G  3.3G  719M  83% /mnt/test\n\nNew:\n  /dev/sdb1             4.0G  3.3G     0 100% /mnt/test\n\nWe calculate the remaining metadata space minus global reserve. If this\nis (supposedly) smaller than zero, there\u0027s no space. But this does not\nhold in practice, the exhausted state happens where\u0027s still some\npositive delta. So we apply some guesswork and compare the delta to a 4M\nthreshold. (Practically observed delta was 2M.)\n\nWe probably cannot calculate the exact threshold value because this\ndepends on the internal reservations requested by various operations, so\nsome operations that consume a few metadata will succeed even if the\nAvail is zero. But this is better than the other way around.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "8546b570511f428838129c00e701eda481cd7c13",
      "tree": "bf8087d889e778e484afb12af3ee82edd5220e28",
      "parents": [
        "b0c0ea6338d5018e02d27c5315084fb1a5d099f6"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Tue Nov 10 18:54:03 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:20:55 2016 +0100"
      },
      "message": "btrfs: preallocate path for snapshot creation at ioctl time\n\nWe can also preallocate btrfs_path that\u0027s used during pending snapshot\ncreation and avoid another late ENOMEM failure.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "b0c0ea6338d5018e02d27c5315084fb1a5d099f6",
      "tree": "bf2aa288dd2d98143b12ea1753739491c7eda54d",
      "parents": [
        "a1ee736268448d74af25737568e383acb84c3c18"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Tue Nov 10 18:54:00 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:20:54 2016 +0100"
      },
      "message": "btrfs: allocate root item at snapshot ioctl time\n\nThe actual snapshot creation is delayed until transaction commit. If we\ncannot get enough memory for the root item there, we have to fail the\nwhole transaction commit which is bad. So we\u0027ll allocate the memory at\nthe ioctl call and pass it along with the pending_snapshot struct. The\npotential ENOMEM will be returned to the caller of snapshot ioctl.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "a1ee736268448d74af25737568e383acb84c3c18",
      "tree": "2216e2f064209ade5011543d89da9f3dfbb075c8",
      "parents": [
        "4fb72bf2e913ca3798afd9e226e2416918936e49"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Tue Nov 10 18:53:56 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:20:54 2016 +0100"
      },
      "message": "btrfs: do an allocation earlier during snapshot creation\n\nWe can allocate pending_snapshot earlier and do not have to do cleanup\nin case of failure.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "4fb72bf2e913ca3798afd9e226e2416918936e49",
      "tree": "c8d2b201bf1a45b84d13f847b1325216295e3c9e",
      "parents": [
        "7853f15b2aeeb01c587168fc3f7f0ff76a3c9bfd"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Nov 27 16:31:45 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:17 2016 +0100"
      },
      "message": "btrfs: use smaller type for btrfs_path locks\n\nThe values of btrfs_path::locks are 0 to 4, fit into a u8. Let\u0027s see:\n\n* overall size of btrfs_path drops down from 136 to 112 (-24 bytes),\n* better packing in a slab page +6 objects\n* the whole structure now fits to 2 cachelines\n* slight decrease in code size:\n\n   text    data     bss     dec     hex filename\n 938731   43670   23144 1005545   f57e9 fs/btrfs/btrfs.ko.before\n 938203   43670   23144 1005017   f55d9 fs/btrfs/btrfs.ko.after\n\n(and the generated assembly does not change much)\n\nThe main purpose is to decrease the size of the structure without\naffecting performance. The byte access is usually well behaving accross\narches, the locks are not accessed frequently and sometimes just\ncompared to zero.\n\nNote for further size reduction attempts: the slots could be made u16\nbut this might generate worse code on some arches (non-byte and non-int\naccess). Also the range of operations on slots is wider compared to\nlocks and the potential performance drop should be evaluated first.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "7853f15b2aeeb01c587168fc3f7f0ff76a3c9bfd",
      "tree": "3812a4cf21f76e6be44153b94e6d8c640da36835",
      "parents": [
        "dccabfad20880bc6c8be21b538df4293506b99f8"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Nov 27 16:31:42 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:17 2016 +0100"
      },
      "message": "btrfs: use smaller type for btrfs_path lowest_level\n\nThe level is 0..7, we can use smaller type. The size of btrfs_path is now\n136 bytes from 144, which is +2 objects that fit into a 4k slab.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "dccabfad20880bc6c8be21b538df4293506b99f8",
      "tree": "92d0b950407d3dd3915b3635247048a4b9b17bd2",
      "parents": [
        "e4058b54d1e442b6b3eca949f0d63d49ba2b020d"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Nov 27 16:31:38 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:16 2016 +0100"
      },
      "message": "btrfs: use smaller type for btrfs_path reada\n\nThe possible values for reada are all positive and bounded, we can later\nsave some bytes by storing it in u8.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "e4058b54d1e442b6b3eca949f0d63d49ba2b020d",
      "tree": "dead11c1b6c35da853a74f133f45f55ffd107e4f",
      "parents": [
        "4d4ab6d6bc05ba65169de9a5391e6ccbe09d8719"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Fri Nov 27 16:31:35 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:15 2016 +0100"
      },
      "message": "btrfs: cleanup, use enum values for btrfs_path reada\n\nReplace the integers by enums for better readability. The value 2 does\nnot have any meaning since a717531942f488209dded30f6bc648167bcefa72\n\"Btrfs: do less aggressive btree readahead\" (2009-01-22).\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "4d4ab6d6bc05ba65169de9a5391e6ccbe09d8719",
      "tree": "b4402e0388ee13df3bbd6d7f78108436e0dbea6b",
      "parents": [
        "20e5506baf3fd651e245bc970d8c11a734ee1b8a"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Nov 19 11:42:31 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:15 2016 +0100"
      },
      "message": "btrfs: constify static arrays\n\nThere are a few statically initialized arrays that can be made const.\nThe remaining (like file_system_type, sysfs attributes or prop handlers)\ndo not allow that due to type mismatch when passed to the APIs or\nbecause the structures are modified through other members.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "20e5506baf3fd651e245bc970d8c11a734ee1b8a",
      "tree": "429cae426bb8b1cb38b261d485e0ebecc093e439",
      "parents": [
        "28f0779a3fd6ef015303780f0b9a92b24728bc4b"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Nov 19 11:42:28 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:14 2016 +0100"
      },
      "message": "btrfs: constify remaining structs with function pointers\n\n* struct extent_io_ops\n* struct btrfs_free_space_op\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "28f0779a3fd6ef015303780f0b9a92b24728bc4b",
      "tree": "456ff448bdefa0d7bc31cf460221b8858131ab30",
      "parents": [
        "100d57025cce6bf568a10660c0d884bcc64c580e"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Nov 19 11:42:24 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 15:01:14 2016 +0100"
      },
      "message": "btrfs tests: replace whole ops structure for free space tests\n\nPreparatory work for making btrfs_free_space_op constant. In\ntest_steal_space_from_bitmap_to_extent, we substitute use_bitmap with\nown version thus preventing constification. We can rework it so we\nreplace the whole structure with the correct function pointers.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "a7ca42256d9fad572fb7f2c471514d7d3572b1db",
      "tree": "71f23fc115664b87d48ecaa9b239737797060352",
      "parents": [
        "7ae1681e126919e7119cebebde1d42df8d7a49b9"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Mon Dec 21 23:50:23 2015 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:42:46 2016 +0100"
      },
      "message": "btrfs: use list_for_each_entry* in backref.c\n\nUse list_for_each_entry*() to simplify the code.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "7ae1681e126919e7119cebebde1d42df8d7a49b9",
      "tree": "516c422276938efc71092e0b193ba3b8ed8791f7",
      "parents": [
        "b69f2bef484844ccd9038a850cdcf562afff9d08"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Fri Dec 18 22:17:00 2015 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:39:09 2016 +0100"
      },
      "message": "btrfs: use list_for_each_entry_safe in free-space-cache.c\n\nUse list_for_each_entry_safe() instead of list_for_each_safe() to\nsimplify the code.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "b69f2bef484844ccd9038a850cdcf562afff9d08",
      "tree": "3e9d08480c2480142cc480df5249933f265a58bf",
      "parents": [
        "ee22184b53c823f6956314c2815d4068e3820737"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Fri Dec 18 22:16:59 2015 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:38:42 2016 +0100"
      },
      "message": "btrfs: use list_for_each_entry* in check-integrity.c\n\nUse list_for_each_entry*() instead of list_for_each*() to simplify\nthe code.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "ee22184b53c823f6956314c2815d4068e3820737",
      "tree": "3791157549663f2804529ba83b36019ee3e2cd2a",
      "parents": [
        "7928d672ffb06085d06fe3c27a93549d37e53ab3"
      ],
      "author": {
        "name": "Byongho Lee",
        "email": "bhlee.kernel@gmail.com",
        "time": "Tue Dec 15 01:42:10 2015 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:38:02 2016 +0100"
      },
      "message": "Btrfs: use linux/sizes.h to represent constants\n\nWe use many constants to represent size and offset value.  And to make\ncode readable we use \u0027256 * 1024 * 1024\u0027 instead of \u0027268435456\u0027 to\nrepresent \u0027256MB\u0027.  However we can make far more readable with \u0027SZ_256MB\u0027\nwhich is defined in the \u0027linux/sizes.h\u0027.\n\nSo this patch replaces \u0027xxx * 1024 * 1024\u0027 kind of expression with\nsingle \u0027SZ_xxxMB\u0027 if \u0027xxx\u0027 is a power of 2 then \u0027xxx * SZ_1M\u0027 if \u0027xxx\u0027 is\nnot a power of 2. And I haven\u0027t touched to \u00274096\u0027 \u0026 \u00278192\u0027 because it\u0027s\nmore intuitive than \u0027SZ_4KB\u0027 \u0026 \u0027SZ_8KB\u0027.\n\nSigned-off-by: Byongho Lee \u003cbhlee.kernel@gmail.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "7928d672ffb06085d06fe3c27a93549d37e53ab3",
      "tree": "fa29cf19282288091a65400d0a2ff0f668b9e7b2",
      "parents": [
        "352dd9c8d3b34e406584c95be45cbc4f1ec5a405"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Nov 30 11:02:31 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:30:52 2016 +0100"
      },
      "message": "btrfs: cleanup, remove stray return statements\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "352dd9c8d3b34e406584c95be45cbc4f1ec5a405",
      "tree": "223299069a55410bd104a6ebebd34502887273e8",
      "parents": [
        "575a75d6fabf6e1217204deca79aea26d6670a12"
      ],
      "author": {
        "name": "Alexandru Moise",
        "email": "00moses.alexander00@gmail.com",
        "time": "Sun Oct 25 20:15:06 2015 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:30:17 2016 +0100"
      },
      "message": "btrfs: zero out delayed node upon allocation\n\nIt\u0027s slightly cleaner to zero-out the delayed node upon allocation\nthan to do it by hand in btrfs_init_delayed_node() for a few members\n\nSigned-off-by: Alexandru Moise \u003c00moses.alexander00@gmail.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "575a75d6fabf6e1217204deca79aea26d6670a12",
      "tree": "87162b316031160bb8e304e6b543c736090e666a",
      "parents": [
        "9780c4976f5518f805b32fc00ed045b636fe8fa8"
      ],
      "author": {
        "name": "Alexandru Moise",
        "email": "00moses.alexander00@gmail.com",
        "time": "Sun Oct 25 19:35:44 2015 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:30:00 2016 +0100"
      },
      "message": "btrfs: pass proper enum type to start_transaction()\n\nSigned-off-by: Alexandru Moise \u003c00moses.alexander00@gmail.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "9780c4976f5518f805b32fc00ed045b636fe8fa8",
      "tree": "232a2d5fb2d8a162bc8f4692cc629c3da41851b1",
      "parents": [
        "e40da0e58a208940bf3d1745f9bd8cf1e27904d4"
      ],
      "author": {
        "name": "Alexandru Moise",
        "email": "00moses.alexander00@gmail.com",
        "time": "Sun Oct 18 21:35:41 2015 +0000"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:29:20 2016 +0100"
      },
      "message": "btrfs: switch __btrfs_fs_incompat return type from int to bool\n\nConform to __btrfs_fs_incompat() cast-to-bool (!!) by explicitly\nreturning boolean not int.\n\nSigned-off-by: Alexandru Moise \u003c00moses.alexander00@gmail.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "e40da0e58a208940bf3d1745f9bd8cf1e27904d4",
      "tree": "1243331e31bb3d5ebec7ddab52746239ab52f607",
      "parents": [
        "4ef7675344d687a0ef5b0d7c0cee12da005870c0"
      ],
      "author": {
        "name": "Byongho Lee",
        "email": "bhlee.kernel@gmail.com",
        "time": "Tue May 19 23:46:45 2015 +0900"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:29:02 2016 +0100"
      },
      "message": "btrfs: remove unused inode argument from uncompress_inline()\n\nThe inode argument is never used from the beginning, so remove it.\n\nSigned-off-by: Byongho Lee \u003cbhlee.kernel@gmail.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "100d57025cce6bf568a10660c0d884bcc64c580e",
      "tree": "1cee4de6fcbad6bae29d486e1b92861946a41eb8",
      "parents": [
        "0de270fa83d5a45664e3f2428d432145037ac432"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Tue Dec 08 14:39:32 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: don\u0027t use slab cache for struct btrfs_delalloc_work\n\nAlthough we prefer to use separate caches for various structs, it seems\nbetter not to do that for struct btrfs_delalloc_work. Objects of this\ntype are allocated rarely, when transaction commit calls\nbtrfs_start_delalloc_roots, requesting delayed iputs.\n\nThe objects are temporary (with some IO involved) but still allocated\nand freed within __start_delalloc_inodes. Memory allocation failure is\nhandled.\n\nThe slab cache is empty most of the time (observed on several systems),\nso if we need to allocate a new slab object, the first one has to\nallocate a full page. In a potential case of low memory conditions this\nmight fail with higher probability compared to using the generic slab\ncaches.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "0de270fa83d5a45664e3f2428d432145037ac432",
      "tree": "a0d6961d327fd71a7c52682b42ea68ea9de9e9a4",
      "parents": [
        "93a3d46780b0f207f76608078eb965cf7b83902c"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Tue Dec 01 18:09:12 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: drop duplicate prefix from scrub workqueues\n\nThe helper btrfs_alloc_workqueue will add the \"btrfs-\" prefix.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "93a3d46780b0f207f76608078eb965cf7b83902c",
      "tree": "b369bc6c1a0a8d5cf57d33b407221368df73b6ab",
      "parents": [
        "f5cdedd73fa71b74dcc42f2a11a5735d89ce7c4f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Nov 30 17:27:09 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: verbose error when we find an unexpected item in sys_array\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "f5cdedd73fa71b74dcc42f2a11a5735d89ce7c4f",
      "tree": "3a9bf57fdfb0025794081c805e3668c0a3b988bc",
      "parents": [
        "35b3ad50baa4a5fc2ae616c0513d2987bfb52a85"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Nov 30 17:27:06 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: handle invalid num_stripes in sys_array\n\nWe can handle the special case of num_stripes \u003d\u003d 0 directly inside\nbtrfs_read_sys_array. The BUG_ON in btrfs_chunk_item_size is there to\ncatch other unhandled cases where we fail to validate external data.\n\nA crafted or corrupted image crashes at mount time:\n\nBTRFS: device fsid 9006933e-2a9a-44f0-917f-514252aeec2c devid 1 transid 7 /dev/loop0\nBTRFS info (device loop0): disk space caching is enabled\nBUG: failure at fs/btrfs/ctree.h:337/btrfs_chunk_item_size()!\nKernel panic - not syncing: BUG!\nCPU: 0 PID: 313 Comm: mount Not tainted 4.2.5-00657-ge047887-dirty #25\nStack:\n 637af890 60062489 602aeb2e 604192ba\n 60387961 00000011 637af8a0 6038a835\n 637af9c0 6038776b 634ef32b 00000000\nCall Trace:\n [\u003c6001c86d\u003e] show_stack+0xfe/0x15b\n [\u003c6038a835\u003e] dump_stack+0x2a/0x2c\n [\u003c6038776b\u003e] panic+0x13e/0x2b3\n [\u003c6020f099\u003e] btrfs_read_sys_array+0x25d/0x2ff\n [\u003c601cfbbe\u003e] open_ctree+0x192d/0x27af\n [\u003c6019c2c1\u003e] btrfs_mount+0x8f5/0xb9a\n [\u003c600bc9a7\u003e] mount_fs+0x11/0xf3\n [\u003c600d5167\u003e] vfs_kern_mount+0x75/0x11a\n [\u003c6019bcb0\u003e] btrfs_mount+0x2e4/0xb9a\n [\u003c600bc9a7\u003e] mount_fs+0x11/0xf3\n [\u003c600d5167\u003e] vfs_kern_mount+0x75/0x11a\n [\u003c600d710b\u003e] do_mount+0xa35/0xbc9\n [\u003c600d7557\u003e] SyS_mount+0x95/0xc8\n [\u003c6001e884\u003e] handle_syscall+0x6b/0x8e\n\nReported-by: Jiri Slaby \u003cjslaby@suse.com\u003e\nReported-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nCC: stable@vger.kernel.org\t# 3.19+\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "35b3ad50baa4a5fc2ae616c0513d2987bfb52a85",
      "tree": "94400b470771eef5e41f663b722d67aa0bb8e179",
      "parents": [
        "8089fe62c6603860f6796ca80519b92391292f21"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Mon Nov 30 16:51:29 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: better packing of btrfs_delayed_extent_op\n\nbtrfs_delayed_extent_op can be packed in a better way, it\u0027s 40 bytes now\nand has 8 unused bytes. Reducing the level type to u8 makes it possible\nto squeeze it to the padding byte after key. The bitfields were switched\nto bool as there\u0027s space to store the full byte without increasing the\nwhole structure, besides that the generated assembly is smaller.\n\nstruct btrfs_delayed_extent_op {\n\tstruct btrfs_disk_key      key;                  /*     0    17 */\n\tu8                         level;                /*    17     1 */\n\tbool                       update_key;           /*    18     1 */\n\tbool                       update_flags;         /*    19     1 */\n\tbool                       is_data;              /*    20     1 */\n\n\t/* XXX 3 bytes hole, try to pack */\n\n\tu64                        flags_to_set;         /*    24     8 */\n\n\t/* size: 32, cachelines: 1, members: 6 */\n\t/* sum members: 29, holes: 1, sum holes: 3 */\n\t/* last cacheline: 32 bytes */\n};\n\nThe final size is 32 bytes which gives +26 object per slab page.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n 938811\t  43670\t  23144\t1005625\t  f5839\tfs/btrfs/btrfs.ko.before\n 938747\t  43670\t  23144\t1005561\t  f57f9\tfs/btrfs/btrfs.ko.after\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "8089fe62c6603860f6796ca80519b92391292f21",
      "tree": "da517c3481f00b43a364ad14c51d496d73fcdf77",
      "parents": [
        "c5ca87819d7f10625b0940b356adb8ac0f1080d7"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Nov 19 14:15:51 2015 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: put delayed item hook into inode\n\nInodes for delayed iput allocate a trivial helper structure, let\u0027s place\nthe list hook directly into the inode and save a kmalloc (killing a\n__GFP_NOFAIL as a bonus) at the cost of increasing size of btrfs_inode.\n\nThe inode can be put into the delayed_iputs list more than once and we\nhave to keep the count. This means we can\u0027t use the list_splice to\nprocess a bunch of inodes because we\u0027d lost track of the count if the\ninode is put into the delayed iputs again while it\u0027s processed.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "c5ca87819d7f10625b0940b356adb8ac0f1080d7",
      "tree": "e14e2f3e2fd286f957b41e52cce97bbd6c6acf6d",
      "parents": [
        "be7bd730841e69fe8f70120098596f648cd1f3ff"
      ],
      "author": {
        "name": "Zhao Lei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Thu Nov 19 17:26:22 2015 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "btrfs: Support convert to -d dup for btrfs-convert\n\nSince we will add support for -d dup for non-mixed filesystem,\nkernel need to support converting to this raid-type.\n\nThis patch remove limitation of above case.\n\nTested by following script:\n(combination of dup conversion with fsck):\n\nexport TEST_DEV\u003d\u0027/dev/vdc\u0027\nexport TEST_DIR\u003d\u0027/var/ltf/tester/mnt\u0027\n\ndo_dup_test()\n{\n    local m_from\u003d\"$1\"\n    local d_from\u003d\"$2\"\n    local m_to\u003d\"$3\"\n    local d_to\u003d\"$4\"\n\n    echo \"Convert from -m $m_from -d $d_from to -m $m_to -d $d_to\"\n\n    umount \"$TEST_DIR\" \u0026\u003e/dev/null\n    ./mkfs.btrfs -f -m \"$m_from\" -d \"$d_from\" \"$TEST_DEV\" \u003e/dev/null || return 1\n    mount \"$TEST_DEV\" \"$TEST_DIR\" || return 1\n\n    cp -a /sbin/* \"$TEST_DIR\"\n\n    [[ \"$m_from\" !\u003d \"$m_to\" ]] \u0026\u0026 {\n        ./btrfs balance start -f -mconvert\u003d\"$m_to\" \"$TEST_DIR\" || return 1\n    }\n\n    [[ \"$d_from\" !\u003d \"$d_to\" ]] \u0026\u0026 {\n\tlocal opt\u003d()\n\t[[ \"$d_to\" \u003d\u003d single ]] \u0026\u0026 opt+\u003d(\"-f\")\n        ./btrfs balance start \"${opt[@]}\" -dconvert\u003d\"$d_to\" \"$TEST_DIR\" || return 1\n    }\n\n    umount \"$TEST_DIR\" || return 1\n    ./btrfsck \"$TEST_DEV\" || return 1\n    echo\n\n    return 0\n}\n\ntest_all()\n{\n    for m_from in single dup; do\n    for d_from in single dup; do\n    for m_to in single dup; do\n    for d_to in single dup; do\n    do_dup_test \"$m_from\" \"$d_from\" \"$m_to\" \"$d_to\" || return 1\n    done\n    done\n    done\n    done\n}\n\ntest_all\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "be7bd730841e69fe8f70120098596f648cd1f3ff",
      "tree": "54a0a2b42e3a6ce7dfe097d0240ed27e8d50ce2a",
      "parents": [
        "b2acdddfad13c38a1e8b927d83c3cf321f63601a"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@fb.com",
        "time": "Thu Oct 22 15:05:09 2015 -0400"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:58 2016 +0100"
      },
      "message": "Btrfs: igrab inode in writepage\n\nWe hit this panic on a few of our boxes this week where we have an\nordered_extent with an NULL inode.  We do an igrab() of the inode in writepages,\nbut weren\u0027t doing it in writepage which can be called directly from the VM on\ndirty pages.  If the inode has been unlinked then we could have I_FREEING set\nwhich means igrab() would return NULL and we get this panic.  Fix this by trying\nto igrab in btrfs_writepage, and if it returns NULL then just redirty the page\nand return AOP_WRITEPAGE_ACTIVATE; so the VM knows it wasn\u0027t successful.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjbacik@fb.com\u003e\nReviewed-by: Liu Bo \u003cbo.li.liu@oracle.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "b2acdddfad13c38a1e8b927d83c3cf321f63601a",
      "tree": "30ff6c1f9a64f202b26809f98ca0314100776236",
      "parents": [
        "4ef7675344d687a0ef5b0d7c0cee12da005870c0"
      ],
      "author": {
        "name": "Anand Jain",
        "email": "anand.jain@oracle.com",
        "time": "Wed Oct 07 17:23:23 2015 +0800"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.com",
        "time": "Thu Jan 07 14:26:53 2016 +0100"
      },
      "message": "Btrfs: add missing brelse when superblock checksum fails\n\nLooks like oversight, call brelse() when checksum fails. Further down the\ncode, in the non error path, we do call brelse() and so we don\u0027t see\nbrelse() in the goto error paths.\n\nSigned-off-by: Anand Jain \u003canand.jain@oracle.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.com\u003e\nSigned-off-by: David Sterba \u003cdsterba@suse.com\u003e\n"
    },
    {
      "commit": "271dba4521aed0c37c063548f876b49f5cd64b2e",
      "tree": "016938b3f9e791e8381d6a14b16583c14eaf9ef1",
      "parents": [
        "9269d12b2d57d9e3d13036bb750762d1110d425c"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Tue Jan 05 16:24:05 2016 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Wed Jan 06 22:52:38 2016 +0000"
      },
      "message": "Btrfs: fix transaction handle leak on failure to create hard link\n\nIf we failed to create a hard link we were not always releasing the\nthe transaction handle we got before, resulting in a memory leak and\npreventing any other tasks from being able to commit the current\ntransaction.\nFix this by always releasing our transaction handle.\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\nReviewed-by: Liu Bo \u003cbo.li.liu@oracle.com\u003e\n"
    },
    {
      "commit": "9269d12b2d57d9e3d13036bb750762d1110d425c",
      "tree": "5fe57a6dab211c2aa0f98066a3f9076c9304b175",
      "parents": [
        "d50866d00fb39fcf72307001763ee9cc92625a43"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Dec 31 18:16:29 2015 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Dec 31 18:18:40 2015 +0000"
      },
      "message": "Btrfs: fix number of transaction units required to create symlink\n\nWe weren\u0027t accounting for the insertion of an inline extent item for the\nsymlink inode nor that we need to update the parent inode item (through\nthe call to btrfs_add_nondir()). So fix this by including two more\ntransaction units.\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\n"
    },
    {
      "commit": "d50866d00fb39fcf72307001763ee9cc92625a43",
      "tree": "11a1b5540a17265cd715f864ca0de57eae4de57b",
      "parents": [
        "a879719b8c90e15c9e7fa7266d5e3c0ca962f9df"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Dec 31 18:08:24 2015 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Dec 31 18:10:56 2015 +0000"
      },
      "message": "Btrfs: don\u0027t leave dangling dentry if symlink creation failed\n\nWhen we are creating a symlink we might fail with an error after we\ncreated its inode and added the corresponding directory indexes to its\nparent inode. In this case we end up never removing the directory indexes\nbecause the inode eviction handler, called for our symlink inode on the\nfinal iput(), only removes items associated with the symlink inode and\nnot with the parent inode.\n\nExample:\n\n  $ mkfs.btrfs -f /dev/sdi\n  $ mount /dev/sdi /mnt\n  $ touch /mnt/foo\n  $ ln -s /mnt/foo /mnt/bar\n  ln: failed to create symbolic link ‘bar’: Cannot allocate memory\n  $ umount /mnt\n  $ btrfsck /dev/sdi\n  Checking filesystem on /dev/sdi\n  UUID: d5acb5ba-31bd-42da-b456-89dca2e716e1\n  checking extents\n  checking free space cache\n  checking fs roots\n  root 5 inode 258 errors 2001, no inode item, link count wrong\n\tunresolved ref dir 256 index 3 namelen 3 name bar filetype 7 errors 4, no inode ref\n  found 131073 bytes used err is 1\n  total csum bytes: 0\n  total tree bytes: 131072\n  total fs tree bytes: 32768\n  total extent tree bytes: 16384\n  btree space waste bytes: 124305\n  file data blocks allocated: 262144\n   referenced 262144\n  btrfs-progs v4.2.3\n\nSo fix this by adding the directory index entries as the very last\nstep of symlink creation.\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\n"
    },
    {
      "commit": "a879719b8c90e15c9e7fa7266d5e3c0ca962f9df",
      "tree": "da6ef5e494c911f1985612a52554511fc68229b4",
      "parents": [
        "2bc0bb5fe71dee6fdaf81ff81f6e739ff9f7ff19"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Dec 31 18:07:59 2015 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Thu Dec 31 18:08:20 2015 +0000"
      },
      "message": "Btrfs: send, don\u0027t BUG_ON() when an empty symlink is found\n\nWhen a symlink is successfully created it always has an inline extent\ncontaining the source path. However if an error happens when creating\nthe symlink, we can leave in the subvolume\u0027s tree a symlink inode without\nany such inline extent item - this happens if after btrfs_symlink() calls\nbtrfs_end_transaction() and before it calls the inode eviction handler\n(through the final iput() call), the transaction gets committed and a\ncrash happens before the eviction handler gets called, or if a snapshot\nof the subvolume is made before the eviction handler gets called. Sadly\nwe can\u0027t just avoid this by making btrfs_symlink() call\nbtrfs_end_transaction() after it calls the eviction handler, because the\nlater can commit the current transaction before it removes any items from\nthe subvolume tree (if it encounters ENOSPC errors while reserving space\nfor removing all the items).\n\nSo make send fail more gracefully, with an -EIO error, and print a\nmessage to dmesg/syslog informing that there\u0027s an empty symlink inode,\nso that the user can delete the empty symlink or do something else\nabout it.\n\nReported-by: Stephen R. van den Berg \u003csrb@cuci.nl\u003e\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\n"
    },
    {
      "commit": "2bc0bb5fe71dee6fdaf81ff81f6e739ff9f7ff19",
      "tree": "51bba6927b4619818de59c91a1947f089564e1af",
      "parents": [
        "511711af91f21d80b27f18b569352d6896562828"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Wed Dec 30 02:42:30 2015 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Wed Dec 30 16:08:13 2015 +0000"
      },
      "message": "Btrfs: fix race between free space endio workers and space cache writeout\n\nWhile running a stress test I ran into the following trace/transaction\nabort:\n\n[471626.672243] ------------[ cut here ]------------\n[471626.673322] WARNING: CPU: 9 PID: 19107 at fs/btrfs/extent-tree.c:3740 btrfs_write_dirty_block_groups+0x17c/0x214 [btrfs]()\n[471626.675492] BTRFS: Transaction aborted (error -2)\n[471626.676748] Modules linked in: btrfs dm_flakey dm_mod crc32c_generic xor raid6_pq nfsd auth_rpcgss oid_registry nfs_acl nfs lockd grace fscache sunrpc loop fuse parport_pc i2c_piix\n[471626.688802] CPU: 14 PID: 19107 Comm: fsstress Tainted: G        W       4.3.0-rc5-btrfs-next-17+ #1\n[471626.690148] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.1-0-g4adadbd-20150316_085822-nilsson.home.kraxel.org 04/01/2014\n[471626.691901]  0000000000000000 ffff880016037cf0 ffffffff812566f4 ffff880016037d38\n[471626.695009]  ffff880016037d28 ffffffff8104d0a6 ffffffffa040c84e 00000000fffffffe\n[471626.697490]  ffff88011fe855f8 ffff88000c484cb0 ffff88000d195000 ffff880016037d90\n[471626.699201] Call Trace:\n[471626.699804]  [\u003cffffffff812566f4\u003e] dump_stack+0x4e/0x79\n[471626.701049]  [\u003cffffffff8104d0a6\u003e] warn_slowpath_common+0x9f/0xb8\n[471626.702542]  [\u003cffffffffa040c84e\u003e] ? btrfs_write_dirty_block_groups+0x17c/0x214 [btrfs]\n[471626.704326]  [\u003cffffffff8104d107\u003e] warn_slowpath_fmt+0x48/0x50\n[471626.705636]  [\u003cffffffffa0403717\u003e] ? write_one_cache_group.isra.32+0x77/0x82 [btrfs]\n[471626.707048]  [\u003cffffffffa040c84e\u003e] btrfs_write_dirty_block_groups+0x17c/0x214 [btrfs]\n[471626.708616]  [\u003cffffffffa048a50a\u003e] commit_cowonly_roots+0x1d7/0x25a [btrfs]\n[471626.709950]  [\u003cffffffffa041e34a\u003e] btrfs_commit_transaction+0x4c4/0x991 [btrfs]\n[471626.711286]  [\u003cffffffff81081c61\u003e] ? signal_pending_state+0x31/0x31\n[471626.712611]  [\u003cffffffffa03f6df4\u003e] btrfs_sync_fs+0x145/0x1ad [btrfs]\n[471626.715610]  [\u003cffffffff811962a2\u003e] ? SyS_tee+0x226/0x226\n[471626.716718]  [\u003cffffffff811962c2\u003e] sync_fs_one_sb+0x20/0x22\n[471626.717672]  [\u003cffffffff8116fc01\u003e] iterate_supers+0x75/0xc2\n[471626.718800]  [\u003cffffffff8119669a\u003e] sys_sync+0x52/0x80\n[471626.719990]  [\u003cffffffff8147cd97\u003e] entry_SYSCALL_64_fastpath+0x12/0x6f\n[471626.721835] ---[ end trace baf57f43d76693f4 ]---\n[471626.722954] BTRFS: error (device sdc) in btrfs_write_dirty_block_groups:3740: errno\u003d-2 No such entry\n\nThis is a very rare situation and it happened due to a race between a free\nspace endio worker and writing the space caches for dirty block groups at\na transaction\u0027s commit critical section. The steps leading to this are:\n\n1) A task calls btrfs_commit_transaction() and starts the writeout of the\n   space caches for all currently dirty block groups (i.e. it calls\n   btrfs_start_dirty_block_groups());\n\n2) The previous step starts writeback for space caches;\n\n3) When the writeback finishes it queues jobs for free space endio work\n   queue (fs_info-\u003eendio_freespace_worker) that execute\n   btrfs_finish_ordered_io();\n\n4) The task committing the transaction sets the transaction\u0027s state\n   to TRANS_STATE_COMMIT_DOING and shortly after calls\n   btrfs_write_dirty_block_groups();\n\n5) A free space endio job joins the transaction, through\n   btrfs_join_transaction_nolock(), and updates a free space inode item\n   in the root tree through btrfs_update_inode_fallback();\n\n6) Updating the free space inode item resulted in COWing one or more\n   nodes/leaves of the root tree, and that resulted in creating a new\n   metadata block group, which gets added to the transaction\u0027s list\n   of dirty block groups (this is a very rare case);\n\n7) The free space endio job has not released yet its transaction handle\n   at this point, so the new metadata block group was not yet fully\n   created (didn\u0027t go through btrfs_create_pending_block_groups() yet);\n\n8) The transaction commit task sees the new metadata block group in\n   the transaction\u0027s list of dirty block groups and processes it.\n   When it attempts to update the block group\u0027s block group item in\n   the extent tree, through write_one_cache_group(), it isn\u0027t able\n   to find it and aborts the transaction with error -ENOENT - this\n   is because the free space endio job hasn\u0027t yet released its\n   transaction handle (which calls btrfs_create_pending_block_groups())\n   and therefore the block group item was not yet added to the extent\n   tree.\n\nFix this waiting for free space endio jobs if we fail to find a block\ngroup item in the extent tree and then retry once updating the block\ngroup item.\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\n"
    },
    {
      "commit": "511711af91f21d80b27f18b569352d6896562828",
      "tree": "105c99f81073dfe5ce3b15623491f65778bf2032",
      "parents": [
        "b4570aa994b8fdb3a9c04ed80a6cac69072d4d42"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 30 07:52:35 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 30 07:52:35 2015 -0800"
      },
      "message": "btrfs: don\u0027t run delayed references while we are creating the free space tree\n\nThis is a short term solution to make sure btrfs_run_delayed_refs()\ndoesn\u0027t change the extent tree while we are scanning it to create the\nfree space tree.\n\nLonger term we need to synchronize scanning the block groups one by one,\nsimilar to what happens during a balance.\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "b4570aa994b8fdb3a9c04ed80a6cac69072d4d42",
      "tree": "a956eff0401d7d86081b18cf97e4886b6a7435e3",
      "parents": [
        "140e639f1a3ff052c3921818e2120fdfa4427681"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 30 07:37:26 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 30 07:37:26 2015 -0800"
      },
      "message": "btrfs: fix compiling with CONFIG_BTRFS_DEBUG enabled.\n\nMerging in the free space tree deleted a variable needed when\nCONFIG_BTRFS_DEBUG\u003dy\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "140e639f1a3ff052c3921818e2120fdfa4427681",
      "tree": "52856ad4e8eda3041d525b35f2a6225ffa586992",
      "parents": [
        "f0f76413d332d74446d0ee9535a29a900c4f63e4"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:30:51 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:30:51 2015 -0800"
      },
      "message": "btrfs: fix warning on uninit variable in btrfs_finish_chunk_alloc\n\nmap-\u003enum_stripes really can\u0027t be zero, but just in case.\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "f0f76413d332d74446d0ee9535a29a900c4f63e4",
      "tree": "01d631840c1b9bcdaff4977e10614b011079506f",
      "parents": [
        "a53fe2576955171449711933242d8fb1c13a7d5c",
        "f7d3d2f99eeaa9f5c111965b1516972f4fc5e449"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:29:09 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:29:09 2015 -0800"
      },
      "message": "Merge branch \u0027freespace-4.5\u0027 into for-linus-4.5\n"
    },
    {
      "commit": "a53fe2576955171449711933242d8fb1c13a7d5c",
      "tree": "6fd4a583f2e9606c6c61226b40a060e4c1b2dc60",
      "parents": [
        "bb9d687618695e8291f1e6209eb3211d231f97bb",
        "e44081ef611832b47a86abf4e36dc0ed2e950884"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:28:35 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:28:35 2015 -0800"
      },
      "message": "Merge branch \u0027for-chris-4.5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/fdmanana/linux into for-linus-4.5\n"
    },
    {
      "commit": "bb9d687618695e8291f1e6209eb3211d231f97bb",
      "tree": "a54f15066574a80231b3a2630b300f0ebc3745c2",
      "parents": [
        "13d5d15d6301f8e69a8fe8500f6ef732bfd44bd1",
        "cd716d8fea125e5531003e66aaf7ca7323277f83"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:17:42 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:17:42 2015 -0800"
      },
      "message": "Merge branch \u0027dev/simplify-set-bit\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n\nSigned-off-by: Chris Mason \u003cclm@fb.com\u003e\n"
    },
    {
      "commit": "13d5d15d6301f8e69a8fe8500f6ef732bfd44bd1",
      "tree": "8915afc4b24489d3a184a962eb83a3447ee51fdd",
      "parents": [
        "afa427cf9d6ef64e73df68882cbabde0e6a61639",
        "39a27ec1004e886f1d949bdb8f2616896d02c5c2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:11:27 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:11:27 2015 -0800"
      },
      "message": "Merge branch \u0027dev/gfp-flags\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n"
    },
    {
      "commit": "afa427cf9d6ef64e73df68882cbabde0e6a61639",
      "tree": "de7f14f859f1dd6bbb7c66adfb138f8feaf87f65",
      "parents": [
        "4ef7675344d687a0ef5b0d7c0cee12da005870c0",
        "35de6db28f260e88e9acc47305f7b3f272d76cbf"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:10:26 2015 -0800"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "clm@fb.com",
        "time": "Wed Dec 23 13:10:26 2015 -0800"
      },
      "message": "Merge branch \u0027cleanup/misc-simplify\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux into for-linus-4.5\n"
    },
    {
      "commit": "e44081ef611832b47a86abf4e36dc0ed2e950884",
      "tree": "d30d0dd196f66f9ebc56233312f41668cf875381",
      "parents": [
        "0376374a98abd533fb49c6db12967bddc2f4b4b3"
      ],
      "author": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Fri Dec 18 03:02:48 2015 +0000"
      },
      "committer": {
        "name": "Filipe Manana",
        "email": "fdmanana@suse.com",
        "time": "Mon Dec 21 17:51:22 2015 +0000"
      },
      "message": "Btrfs: fix unprotected list operations at btrfs_write_dirty_block_groups\n\nWe call btrfs_write_dirty_block_groups() in the critical section of a\ntransaction\u0027s commit, when no other tasks can join the transaction and\nadd more block groups to the transaction\u0027s list of dirty block groups,\nso we not taking the dirty block groups spinlock when checking for the\nlist\u0027s emptyness, grabbing its first element or deleting elements from\nit.\n\nHowever there\u0027s a special and rare case where we can have a concurrent\ntask adding elements to this list. We trigger writeback for space\ncaches before at btrfs_start_dirty_block_groups() and in past iterations\nof the loop at btrfs_write_dirty_block_groups(), this means that when\nthe writeback finishes (which happens asynchronously) it creates a\ntask for the endio free space work queue that executes\nbtrfs_finish_ordered_io() - this function is able to join the transaction,\nthrough btrfs_join_transaction_nolock(), and update the free space cache\u0027s\ninode item in the root tree, which can result in COWing nodes of this tree\nand therefore allocation of a new block group can happen, which gets added\nto the transaction\u0027s list of dirty block groups while the transaction\ncommit task is operating on it concurrently.\n\nSo fix this by taking the dirty block groups spinlock before doing\noperations on the dirty block groups list at\nbtrfs_write_dirty_block_groups().\n\nSigned-off-by: Filipe Manana \u003cfdmanana@suse.com\u003e\n"
    },
    {
      "commit": "4ef7675344d687a0ef5b0d7c0cee12da005870c0",
      "tree": "c2de569ded08caced7e2a6dcf01f5710378f3b14",
      "parents": [
        "9f7e43278605a0daf4edf7025c52c25e9ace6875"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 20 16:06:09 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 20 16:06:09 2015 -0800"
      },
      "message": "Linux 4.4-rc6\n"
    },
    {
      "commit": "9f7e43278605a0daf4edf7025c52c25e9ace6875",
      "tree": "91e57b00168a0a55c1cee90ccc42f0f009973461",
      "parents": [
        "69c37a92ddbf79d9672230f21a04580d7ac2f4c3",
        "77535acedc26627f16a1a39c1471f942689fe11e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 20 10:01:11 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Dec 20 10:01:11 2015 -0800"
      },
      "message": "Merge tag \u0027rtc-4.4-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux\n\nPull RTC fixes from Alexandre Belloni:\n \"Late fixes for the RTC subsystem for 4.4:\n\n  A fix for a nasty hardware bug in rk808 and an initialization\n  reordering in da9063 to fix a possible crash\"\n\n* tag \u0027rtc-4.4-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux:\n  rtc: da9063: fix access ordering error during RTC interrupt at system power on\n  rtc: rk808: Compensate for Rockchip calendar deviation on November 31st\n"
    },
    {
      "commit": "77535acedc26627f16a1a39c1471f942689fe11e",
      "tree": "e266f91bdad8c50c71d6cb78e56fdbf422935139",
      "parents": [
        "f076ef44a44d02ed91543f820c14c2c7dff53716"
      ],
      "author": {
        "name": "Steve Twiss",
        "email": "stwiss.opensource@diasemi.com",
        "time": "Tue Dec 08 16:28:39 2015 +0000"
      },
      "committer": {
        "name": "Alexandre Belloni",
        "email": "alexandre.belloni@free-electrons.com",
        "time": "Sun Dec 20 13:39:29 2015 +0100"
      },
      "message": "rtc: da9063: fix access ordering error during RTC interrupt at system power on\n\nThis fix alters the ordering of the IRQ and device registrations in the RTC\ndriver probe function. This change will apply to the RTC driver that supports\nboth DA9063 and DA9062 PMICs.\n\nA problem could occur with the existing RTC driver if:\n\nA system is started from a cold boot using the PMIC RTC IRQ to initiate a\npower on operation. For instance, if an RTC alarm is used to start a\nplatform from power off.\nThe existing driver IRQ is requested before the device has been properly\nregistered.\ni.e.\n    ret \u003d devm_request_threaded_irq()\ncomes before\n    rtc-\u003ertc_dev \u003d devm_rtc_device_register();\n\nIn this case, the interrupt can be called before the device has been\nregistered and the handler can be called immediately. The IRQ handler\nda9063_alarm_event() contains the function call\n\n    rtc_update_irq(rtc-\u003ertc_dev, 1, RTC_IRQF | RTC_AF);\n\nwhich in turn tries to access the unavailable rtc-\u003ertc_dev.\n\nThe fix is to reorder the functions inside the RTC probe. The IRQ is\nrequested after the RTC device resource has been registered so that\nget_irq_byname is the last thing to happen.\n\nSigned-off-by: Steve Twiss \u003cstwiss.opensource@diasemi.com\u003e\nSigned-off-by: Alexandre Belloni \u003calexandre.belloni@free-electrons.com\u003e\n"
    },
    {
      "commit": "f076ef44a44d02ed91543f820c14c2c7dff53716",
      "tree": "c688b67340d129d687c44d5ee274ccd412573b9e",
      "parents": [
        "3abb1ada21a4fb5b2920457a2e5c8483abb09a45"
      ],
      "author": {
        "name": "Julius Werner",
        "email": "jwerner@chromium.org",
        "time": "Tue Dec 15 15:02:49 2015 -0800"
      },
      "committer": {
        "name": "Alexandre Belloni",
        "email": "alexandre.belloni@free-electrons.com",
        "time": "Sun Dec 20 13:39:00 2015 +0100"
      },
      "message": "rtc: rk808: Compensate for Rockchip calendar deviation on November 31st\n\nIn A.D. 1582 Pope Gregory XIII found that the existing Julian calendar\ninsufficiently represented reality, and changed the rules about\ncalculating leap years to account for this. Similarly, in A.D. 2013\nRockchip hardware engineers found that the new Gregorian calendar still\ncontained flaws, and that the month of November should be counted up to\n31 days instead. Unfortunately it takes a long time for calendar changes\nto gain widespread adoption, and just like more than 300 years went by\nbefore the last Protestant nation implemented Greg\u0027s proposal, we will\nhave to wait a while until all religions and operating system kernels\nacknowledge the inherent advantages of the Rockchip system. Until then\nwe need to translate dates read from (and written to) Rockchip hardware\nback to the Gregorian format.\n\nThis patch works by defining Jan 1st, 2016 as the arbitrary anchor date\non which Rockchip and Gregorian calendars are in sync. From that we can\ntranslate arbitrary later dates back and forth by counting the number\nof November/December transitons since the anchor date to determine the\noffset between the calendars. We choose this method (rather than trying\nto regularly \"correct\" the date stored in hardware) since it\u0027s the only\nway to ensure perfect time-keeping even if the system may be shut down\nfor an unknown number of years. The drawback is that other software\nreading the same hardware (e.g. mainboard firmware) must use the same\ntranslation convention (including the same anchor date) to be able to\nread and write correct timestamps from/to the RTC.\n\nSigned-off-by: Julius Werner \u003cjwerner@chromium.org\u003e\nReviewed-by: Douglas Anderson \u003cdianders@chromium.org\u003e\nSigned-off-by: Alexandre Belloni \u003calexandre.belloni@free-electrons.com\u003e\n"
    },
    {
      "commit": "69c37a92ddbf79d9672230f21a04580d7ac2f4c3",
      "tree": "cc188e1db4843111cbf219b88136700b7f11e0a5",
      "parents": [
        "24b0d5e7384393b780c4c982930990b94634cc61",
        "9ce119f318ba1a07c29149301f1544b6c4bea52a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 17:44:19 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 17:44:19 2015 -0800"
      },
      "message": "Merge tag \u0027tty-4.4-rc6\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty\n\nPull tty/serial fixes from Greg KH:\n \"Here are some tty/serial driver fixes for 4.4-rc6 that resolve some\n  reported problems.  All of these have been in linux-next.  The details\n  are in the shortlog\"\n\n* tag \u0027tty-4.4-rc6\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:\n  tty: Fix GPF in flush_to_ldisc()\n  serial: earlycon: Add missing spinlock initialization\n  serial: sh-sci: Fix length of scatterlist\n  n_tty: Fix poll() after buffer-limited eof push read\n  serial: 8250_uniphier: fix dl_read and dl_write functions\n"
    },
    {
      "commit": "24b0d5e7384393b780c4c982930990b94634cc61",
      "tree": "277b978c490eaec2167ad125bb9f95e9c03ab4f2",
      "parents": [
        "3a87711e5842f2e7046f550b2414320f9240ff2e",
        "e50293ef9775c5f1cf3fcc093037dd6a8c5684ea"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 17:33:58 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 17:33:58 2015 -0800"
      },
      "message": "Merge tag \u0027usb-4.4-rc6\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb\n\nPull USB fixes from Greg KH:\n \"Here are some USB and PHY fixes for 4.4-rc6.  All of them resolve some\n  reported problems.  Full details in the shortlog\"\n\n* tag \u0027usb-4.4-rc6\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:\n  USB: fix invalid memory access in hub_activate()\n  USB: ipaq.c: fix a timeout loop\n  phy: core: Get a refcount to phy in devm_of_phy_get_by_index()\n  phy: cygnus: pcie: add missing of_node_put\n  phy: miphy365x: add missing of_node_put\n  phy: miphy28lp: add missing of_node_put\n  phy: rockchip-usb: add missing of_node_put\n  phy: berlin-sata: add missing of_node_put\n  phy: mt65xx-usb3: add missing of_node_put\n  phy: brcmstb-sata: add missing of_node_put\n  phy: sun9i-usb: add USB dependency\n"
    },
    {
      "commit": "3a87711e5842f2e7046f550b2414320f9240ff2e",
      "tree": "9b475f1cfb50916faa1c73de8fd6abd13423d34f",
      "parents": [
        "35b3154efbba334166a2a8e610ca9a8a0d11e8e6",
        "cb01c5496d2d9c0c862443561df16ff122db348f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 16:46:46 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 16:46:46 2015 -0800"
      },
      "message": "Merge tag \u0027md/4.4-rc5-fixes\u0027 of git://neil.brown.name/md\n\nPull md fixes from Neil Brown:\n \"Four fixes for md:\n\n   - two recently introduced regressions fixed.\n   - one older bug in RAID10 - tagged for -stable since 4.2\n   - one minor sysfs api improvement\"\n\n* tag \u0027md/4.4-rc5-fixes\u0027 of git://neil.brown.name/md:\n  Fix remove_and_add_spares removes drive added as spare in slot_store\n  md: fix bug due to nested suspend\n  MD: change journal disk role to disk 0\n  md/raid10: fix data corruption and crash during resync\n"
    },
    {
      "commit": "35b3154efbba334166a2a8e610ca9a8a0d11e8e6",
      "tree": "1ca646722fab6fb3208be7defe89779a696721e5",
      "parents": [
        "3c73a2dda9e6b4ee3d836d0b80090bf63feae3c3",
        "036592fbbe753d236402a0ae68148e7c143a0f0e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 16:40:48 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 16:40:48 2015 -0800"
      },
      "message": "Merge tag \u0027powerpc-4.4-5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux\n\nPull powerpc fixes from Michael Ellerman:\n - Partial revert of \"powerpc: Individual System V IPC system calls\"\n - pr_warn_once on unsupported OPAL_MSG type from Stewart\n - Fix deadlock in opal-irqchip introduced by \"Fix double endian\n   conversion\" from Alistair\n\n* tag \u0027powerpc-4.4-5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:\n  powerpc/opal-irqchip: Fix deadlock introduced by \"Fix double endian conversion\"\n  powerpc/powernv: pr_warn_once on unsupported OPAL_MSG type\n  Partial revert of \"powerpc: Individual System V IPC system calls\"\n"
    },
    {
      "commit": "3c73a2dda9e6b4ee3d836d0b80090bf63feae3c3",
      "tree": "e80aa215fbd665c743ecc87ff66a57be19881042",
      "parents": [
        "d525c13e9efb92c9868b90bfc637d186d0aaaccb",
        "c1f4a149406ce41962c6ba7d92047563f9e26e0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 10:10:43 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 10:10:43 2015 -0800"
      },
      "message": "Merge tag \u0027spi-fix-v4.4-rc5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi\n\nPull spi fixes from Mark Brown:\n \"A couple of reference counting bugs here, one in spidev and one with\n  holding an extra reference in the core that we never freed if we\n  removed a device, plus a driver specific fix.  Both of the refcounting\n  bugs are very old but they\u0027ve only been found by observation so\n  hopefully their impact has been low\"\n\n* tag \u0027spi-fix-v4.4-rc5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:\n  spi: fix parent-device reference leak\n  spi: spidev: Hold spi_lock over all defererences of spi in release()\n  spi-fsl-dspi: Fix CTAR Register access\n"
    },
    {
      "commit": "d525c13e9efb92c9868b90bfc637d186d0aaaccb",
      "tree": "13e14d56c5c80ad4ca8345e281c19660474bf17d",
      "parents": [
        "38beb96e7e1ffef6ca26ae3d58a338753fc20080",
        "45ad7db90b42555c8107f18ec6d6a1e9bce34860"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 10:05:00 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 10:05:00 2015 -0800"
      },
      "message": "Merge tag \u0027gpio-v4.4-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio\n\nPull GPIO fixes from Linus Walleij:\n \"Some GPIO fixes for the v4.4 series.  Most prominent: I revert the\n  error propagation from the .get() function until we can fix up all the\n  drivers properly for v4.5.\n\n   - Revert the error number propagation from the .get() vtable entry\n     temporarily, until we make the proper fixes to all drivers.\n   - Fix the clamping behaviour in the generic GPIO driver.\n   - Driver fix for the ath79 driver\"\n\n* tag \u0027gpio-v4.4-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio:\n  gpio: revert get() to non-errorprogating behaviour\n  gpio: generic: clamp values from bgpio_get_set()\n  gpio: ath79: Fix the logic to clear offset bit of AR71XX_GPIO_REG_OE register\n"
    },
    {
      "commit": "38beb96e7e1ffef6ca26ae3d58a338753fc20080",
      "tree": "a92552dba083d9639065860d605ddde89d0e7c53",
      "parents": [
        "d7d3d84194e42a357a61a50219e5c2dd6b09bc42",
        "13cbd906e89a1af42c586dcc4f42b311d23b7fd1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 10:01:03 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 10:01:03 2015 -0800"
      },
      "message": "Merge tag \u0027pinctrl-v4.4-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl\n\nPull pin control fixes from Linus Walleij:\n - Driver fixes for Freescale i.MX7D, Intel, Broadcom 2835\n - One MAINTAINERS entry\n\n* tag \u0027pinctrl-v4.4-3\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:\n  MAINTAINERS: pinctrl: Add maintainers for pinctrl-single\n  pinctrl: bcm2835: Fix initial value for direction_output\n  pinctrl: intel: fix offset calculation issue of register PAD_OWN\n  pinctrl: intel: fix bug of register offset calculation\n  pinctrl: freescale: add ZERO_OFFSET_VALID flag for vf610 pinctrl\n"
    },
    {
      "commit": "d7d3d84194e42a357a61a50219e5c2dd6b09bc42",
      "tree": "3cb5adf54600f06df92ca48d3ae56cc20e85d3ec",
      "parents": [
        "632f8577d694efa4f2968be32c44e79f7e2ed2cd",
        "b4cd08aa1f53c831e67dc5c6bc9f9acff27abcba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:52:44 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:52:44 2015 -0800"
      },
      "message": "Merge branch \u0027i2c/for-current\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux\n\nPull i2c fixes from Wolfram Sang:\n \"A set of \u0027usual\u0027 driver bugfixes for the I2C subsystem\"\n\n* \u0027i2c/for-current\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:\n  i2c: rcar: disable runtime PM correctly in slave mode\n  i2c: designware: Keep pm_runtime_enable/_disable calls in sync\n  i2c: designware: fix IO timeout issue for AMD controller\n  i2c: imx: init bus recovery info before adding i2c adapter\n  i2c: do not use 0x in front of %pa\n  i2c: davinci: Increase module clock frequency\n  i2c: mv64xxx: The n clockdiv factor is 0 based on sunxi SoCs\n  i2c: rk3x: populate correct variable for sda_falling_time\n"
    },
    {
      "commit": "632f8577d694efa4f2968be32c44e79f7e2ed2cd",
      "tree": "8ef8dc992a7c9d25e2045fc8fb3ece0b573e1800",
      "parents": [
        "1eab0e42450c6038e2bb17da438370fe639973f3",
        "478e5ed1c3f6928ece7fffd712ba728b1f92217d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:51:11 2015 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Dec 19 09:51:11 2015 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input\n\nPull input fixes from Dmitry Torokhov:\n \"Just a few assorted driver fixes\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:\n  Input: elants_i2c - fix wake-on-touch\n  Input: elan_i2c - set input device\u0027s vendor and product IDs\n  Input: sun4i-lradc-keys - fix typo in binding documentation\n  Input: atmel_mxt_ts - add maxtouch to I2C table for module autoload\n  Input: arizona-haptic - fix disabling of haptics device\n  Input: aiptek - fix crash on detecting device without endpoints\n  Input: atmel_mxt_ts - add generic platform data for Chromebooks\n  Input: parkbd - clear unused function pointers\n  Input: walkera0701 - clear unused function pointers\n  Input: turbografx - clear unused function pointers\n  Input: gamecon - clear unused function pointers\n  Input: db9 - clear unused function pointers\n"
    }
  ],
  "next": "b4cd08aa1f53c831e67dc5c6bc9f9acff27abcba"
}
