)]}'
{
  "log": [
    {
      "commit": "a290aec88a9c4747353ea7aa9b2569bd61297c3c",
      "tree": "c9d46a48b3f6f8f6986e746f54683241dc0b287c",
      "parents": [
        "bf5e0bd27f7cbaca4d52ae395bbf3715775efebd"
      ],
      "author": {
        "name": "Jason Wang",
        "email": "jasowang@redhat.com",
        "time": "Mon Nov 29 13:48:40 2010 +0800"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Dec 09 15:39:15 2010 +0200"
      },
      "message": "vhost: fix typos in comment\n\nSigned-off-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "5f05647dd81c11a6a165ccc8f0c1370b16f3bcb0",
      "tree": "7851ef1c93aa1aba7ef327ca4b75fd35e6d10f29",
      "parents": [
        "02f36038c568111ad4fc433f6fa760ff5e38fab4",
        "ec37a48d1d16c30b655ac5280209edf52a6775d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 23 11:47:02 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1699 commits)\n  bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.\n  vlan: Calling vlan_hwaccel_do_receive() is always valid.\n  tproxy: use the interface primary IP address as a default value for --on-ip\n  tproxy: added IPv6 support to the socket match\n  cxgb3: function namespace cleanup\n  tproxy: added IPv6 support to the TPROXY target\n  tproxy: added IPv6 socket lookup function to nf_tproxy_core\n  be2net: Changes to use only priority codes allowed by f/w\n  tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled\n  tproxy: added tproxy sockopt interface in the IPV6 layer\n  tproxy: added udp6_lib_lookup function\n  tproxy: added const specifiers to udp lookup functions\n  tproxy: split off ipv6 defragmentation to a separate module\n  l2tp: small cleanup\n  nf_nat: restrict ICMP translation for embedded header\n  can: mcp251x: fix generation of error frames\n  can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set\n  can-raw: add msg_flags to distinguish local traffic\n  9p: client code cleanup\n  rds: make local functions/variables static\n  ...\n\nFix up conflicts in net/core/dev.c, drivers/net/pcmcia/smc91c92_cs.c and\ndrivers/net/wireless/ath/ath9k/debug.c as per David\n"
    },
    {
      "commit": "e0e9b406470b8dd75a115cf82c4791f41615c4c3",
      "tree": "d31f3ee226e91854bc97d948a30b80c18b21fa47",
      "parents": [
        "a00eac0c459abecb539fb2a2abd3122dd7ca5d4a"
      ],
      "author": {
        "name": "Jason Wang",
        "email": "jasowang@redhat.com",
        "time": "Tue Sep 14 23:53:05 2010 +0800"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Tue Oct 05 13:33:43 2010 +0200"
      },
      "message": "vhost: max s/g to match qemu\n\nQemu supports up to UIO_MAXIOV s/g so we have to match that because guest\ndrivers may rely on this.\n\nAllocate indirect and log arrays dynamically to avoid using too much contigious\nmemory and make the length of hdr array to match the header length since each\niovec entry has a least one byte.\n\nTest with copying large files w/ and w/o migration in both linux and windows\nguests.\n\nSigned-off-by: Jason Wang \u003cjasowang@redhat.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "28457ee69c473a903e51e26c7bcd6f1e9eceb93e",
      "tree": "7f872922577ec45ce655d68770c95082ad858a45",
      "parents": [
        "65e6bf484c497f02d47a0faae69ee398cd59cfda"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@relay.de.ibm.com",
        "time": "Tue Mar 09 19:24:45 2010 +0100"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Sat Aug 21 16:27:36 2010 -0700"
      },
      "message": "vhost: add __rcu annotations\n\nAlso add rcu_dereference_protected() for code paths where locks are held.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "8dd014adfea6f173c1ef6378f7e5e7924866c923",
      "tree": "303df47f73c53cc4c919e3f8aca8245d50d76a08",
      "parents": [
        "9e3d195720d1c8b1e09013185ab8c3b749180fc2"
      ],
      "author": {
        "name": "David Stevens",
        "email": "dlstevens@us.ibm.com",
        "time": "Tue Jul 27 18:52:21 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jul 28 15:45:36 2010 +0300"
      },
      "message": "vhost-net: mergeable buffers support\n\nThis adds support for mergeable buffers in vhost-net: this is needed\nfor older guests without indirect buffer support, as well\nas for zero copy with some devices.\n\nIncludes changes by Michael S. Tsirkin to make the\npatch as low risk as possible (i.e., close to no changes\nwhen feature is disabled).\n\nSigned-off-by: David Stevens \u003cdlstevens@us.ibm.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "c23f3445e68e1db0e74099f264bc5ff5d55ebdeb",
      "tree": "0a8e22e9a10c2978777954a022d721eb02e622be",
      "parents": [
        "4cfa580e7eebb8694b875d2caff3b989ada2efac"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Jun 02 20:40:00 2010 +0200"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Wed Jul 28 15:44:53 2010 +0300"
      },
      "message": "vhost: replace vhost_workqueue with per-vhost kthread\n\nReplace vhost_workqueue with per-vhost kthread.  Other than callback\nargument change from struct work_struct * to struct vhost_work *,\nthere\u0027s no visible change to vhost_poll_*() interface.\n\nThis conversion is to make each vhost use a dedicated kthread so that\nresource control via cgroup can be applied.\n\nPartially based on Sridhar Samudrala\u0027s patch.\n\n* Updated to use sub structure vhost_work instead of directly using\n  vhost_poll at Michael\u0027s suggestion.\n\n* Added flusher wake_up() optimization at Michael\u0027s suggestion.\n\nChanges by MST:\n* Converted atomics/barrier use to a spinlock.\n* Create thread on SET_OWNER\n* Fix flushing\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nCc: Sridhar Samudrala \u003csamudrala.sridhar@gmail.com\u003e\n"
    },
    {
      "commit": "d5675bd204efd87a174eeea592de23c4c4e7f908",
      "tree": "11ec7e455d21285da68fa7db40af07ebf45f9d0e",
      "parents": [
        "38000a94a902e94ca8b5498f7871c6316de8957a"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jun 24 16:59:59 2010 +0300"
      },
      "committer": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Sun Jun 27 11:52:25 2010 +0300"
      },
      "message": "vhost: break out of polling loop on error\n\nWhen ring parsing fails, we currently handle this\nas ring empty condition. This means that we enable\nkicks and recheck ring empty: if this not empty,\nwe re-start polling which of course will fail again.\n\nInstead, let\u0027s return a negative error code and stop polling.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\n"
    },
    {
      "commit": "3a4d5c94e959359ece6d6b55045c3f046677f55c",
      "tree": "113cfe31540e3d77925837f6990c3284d425bfd1",
      "parents": [
        "5da779c34ccff5e1e617892b6c8bd8260fb1f04c"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@redhat.com",
        "time": "Thu Jan 14 06:17:27 2010 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jan 15 01:43:29 2010 -0800"
      },
      "message": "vhost_net: a kernel-level virtio server\n\nWhat it is: vhost net is a character device that can be used to reduce\nthe number of system calls involved in virtio networking.\nExisting virtio net code is used in the guest without modification.\n\nThere\u0027s similarity with vringfd, with some differences and reduced scope\n- uses eventfd for signalling\n- structures can be moved around in memory at any time (good for\n  migration, bug work-arounds in userspace)\n- write logging is supported (good for migration)\n- support memory table and not just an offset (needed for kvm)\n\ncommon virtio related code has been put in a separate file vhost.c and\ncan be made into a separate module if/when more backends appear.  I used\nRusty\u0027s lguest.c as the source for developing this part : this supplied\nme with witty comments I wouldn\u0027t be able to write myself.\n\nWhat it is not: vhost net is not a bus, and not a generic new system\ncall. No assumptions are made on how guest performs hypercalls.\nUserspace hypervisors are supported as well as kvm.\n\nHow it works: Basically, we connect virtio frontend (configured by\nuserspace) to a backend. The backend could be a network device, or a tap\ndevice.  Backend is also configured by userspace, including vlan/mac\netc.\n\nStatus: This works for me, and I haven\u0027t see any crashes.\nCompared to userspace, people reported improved latency (as I save up to\n4 system calls per packet), as well as better bandwidth and CPU\nutilization.\n\nFeatures that I plan to look at in the future:\n- mergeable buffers\n- zero copy\n- scalability tuning: figure out the best threading model to use\n\nNote on RCU usage (this is also documented in vhost.h, near\nprivate_pointer which is the value protected by this variant of RCU):\nwhat is happening is that the rcu_dereference() is being used in a\nworkqueue item.  The role of rcu_read_lock() is taken on by the start of\nexecution of the workqueue item, of rcu_read_unlock() by the end of\nexecution of the workqueue item, and of synchronize_rcu() by\nflush_workqueue()/flush_work(). In the future we might need to apply\nsome gcc attribute or sparse annotation to the function passed to\nINIT_WORK(). Paul\u0027s ack below is for this RCU usage.\n\n(Includes fixes by Alan Cox \u003calan@linux.intel.com\u003e,\nDavid L Stevens \u003cdlstevens@us.ibm.com\u003e,\nChris Wright \u003cchrisw@redhat.com\u003e)\n\nAcked-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Michael S. Tsirkin \u003cmst@redhat.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
