)]}'
{
  "log": [
    {
      "commit": "21ca543efc12674fddb22ddf4ea4906427f4e982",
      "tree": "61cebcafbc7605800b6411ea279f634db9c9da15",
      "parents": [
        "9510dc4c62252e96dca44a94948327c76774f25b"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Nov 04 09:41:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:11:21 2011 -0500"
      },
      "message": "Btrfs: rename btrfs_bio multi -\u003e bbio for consistency\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9510dc4c62252e96dca44a94948327c76774f25b",
      "tree": "945a5a2df3c4c84cec80dee60c1c67751e5489b8",
      "parents": [
        "306c8b68c82dfe6b7c9e5b61985760ad5d089205"
      ],
      "author": {
        "name": "Ilya Dryomov",
        "email": "idryomov@gmail.com",
        "time": "Fri Nov 04 09:41:02 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:11:08 2011 -0500"
      },
      "message": "Btrfs: stop leaking btrfs_bios on readahead\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "806468f8bf76a3cb2b626dd282946a6c9c0a50f0",
      "tree": "2de54229a5623756417a9bad7f426a2e8b06cad7",
      "parents": [
        "531f4b1ae5e0fc8c9b3f03838218e5ea178f80d3",
        "5da6fcbc4eb50c0f55d520750332f5a6ab13508c"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Nov 06 03:07:10 2011 -0500"
      },
      "message": "Merge git://git.jan-o-sch.net/btrfs-unstable into integration\n\nConflicts:\n\tfs/btrfs/Makefile\n\tfs/btrfs/extent_io.c\n\tfs/btrfs/extent_io.h\n\tfs/btrfs/scrub.c\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7414a03fbf9e75fbbf2a3c16828cd862e572aa44",
      "tree": "cc5fe98478b73281055a471fbce242b40a253490",
      "parents": [
        "90519d66abbccc251d14719ac76f191f70826e40"
      ],
      "author": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Mon May 23 14:33:49 2011 +0200"
      },
      "committer": {
        "name": "Arne Jansen",
        "email": "sensille@gmx.net",
        "time": "Sun Oct 02 08:48:44 2011 +0200"
      },
      "message": "btrfs: initial readahead code and prototypes\n\nThis is the implementation for the generic read ahead framework.\n\nTo trigger a readahead, btrfs_reada_add must be called. It will start\na read ahead for the given range [start, end) on tree root. The returned\nhandle can either be used to wait on the readahead to finish\n(btrfs_reada_wait), or to send it to the background (btrfs_reada_detach).\n\nThe read ahead works as follows:\nOn btrfs_reada_add, the root of the tree is inserted into a radix_tree.\nreada_start_machine will then search for extents to prefetch and trigger\nsome reads. When a read finishes for a node, all contained node/leaf\npointers that lie in the given range will also be enqueued. The reads will\nbe triggered in sequential order, thus giving a big win over a naive\nenumeration. It will also make use of multi-device layouts. Each disk\nwill have its on read pointer and all disks will by utilized in parallel.\nAlso will no two disks read both sides of a mirror simultaneously, as this\nwould waste seeking capacity. Instead both disks will read different parts\nof the filesystem.\nAny number of readaheads can be started in parallel. The read order will be\ndetermined globally, i.e. 2 parallel readaheads will normally finish faster\nthan the 2 started one after another.\n\nChanges v2:\n - protect root-\u003enode by transaction instead of node_lock\n - fix missed branches:\n    The readahead had a too simple check to determine if a branch from\n    a node should be checked or not. It now also records the upper bound\n    of each node to see if the requested RA range lies within.\n - use KERN_CONT to debug output, to avoid line breaks\n - defer reada_start_machine to worker to avoid deadlock\n\nChanges v3:\n - protect root-\u003enode by rcu\n\nChanges v5:\n - changed EIO-semantics of reada_tree_block_flagged\n - remove spin_lock from reada_control and make elems an atomic_t\n - remove unused read_total from reada_control\n - kill reada_key_cmp, use btrfs_comp_cpu_keys instead\n - use kref-style release functions where possible\n - return struct reada_control * instead of void * from btrfs_reada_add\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n"
    }
  ]
}
