Markus Armbruster 6dd726a2bf range: Replace internal representation of Range
Range represents a range as follows.  Member @start is the inclusive
lower bound, member @end is the exclusive upper bound.  Zero @end is
special: if @start is also zero, the range is empty, else @end is to
be interpreted as 2^64.  No other empty ranges may occur.

The range [0,2^64-1] cannot be represented.  If you try to create it
with range_set_bounds1(), you get the empty range instead.  If you try
to create it with range_set_bounds() or range_extend(), assertions
fail.  Before range_set_bounds() existed, the open-coded creation
usually got you the empty range instead.  Open deathtrap.

Moreover, the code dealing with the janus-faced @end is too clever by
half.

Dumb this down to a more pedestrian representation: members @lob and
@upb are inclusive lower and upper bounds.  The empty range is encoded
as @lob = 1, @upb = 0.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2016-07-04 16:49:33 +03:00
..
2015-12-18 16:25:08 +00:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00
2016-06-07 18:19:23 +03:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00
2016-06-16 18:39:03 +02:00
2016-06-16 18:39:03 +02:00
2016-06-16 18:39:03 +02:00
2015-10-16 15:34:30 +02:00
2015-02-16 17:30:19 +01:00
2016-06-07 18:19:24 +03:00
2014-02-01 13:46:06 +04:00
2014-03-13 14:42:21 +01:00
2016-06-29 19:14:48 +01:00
2013-10-17 17:30:55 +02:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00
2016-02-23 12:43:05 +00:00