vhost: convert pre sorted vhost memory array to interval tree
authorJason Wang <jasowang@redhat.com>
Thu, 23 Jun 2016 06:04:31 +0000 (02:04 -0400)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 1 Aug 2016 23:57:31 +0000 (02:57 +0300)
commita9709d6874d55130663567577a9b05c35138cc6b
tree33319aae722be870f30402b40cf2c22ac8f6caaa
parentbfe2bc512884d0b1c5297a15350f940ca80e439b
vhost: convert pre sorted vhost memory array to interval tree

Current pre-sorted memory region array has some limitations for future
device IOTLB conversion:

1) need extra work for adding and removing a single region, and it's
   expected to be slow because of sorting or memory re-allocation.
2) need extra work of removing a large range which may intersect
   several regions with different size.
3) need trick for a replacement policy like LRU

To overcome the above shortcomings, this patch convert it to interval
tree which can easily address the above issue with almost no extra
work.

The patch could be used for:

- Extend the current API and only let the userspace to send diffs of
  memory table.
- Simplify Device IOTLB implementation.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/net.c
drivers/vhost/vhost.c
drivers/vhost/vhost.h