@@ -419,6 +419,16 @@ static inline int range_covers_byte(uint64_t offset, uint64_t len,
return offset <= byte && byte <= range_get_last(offset, len);
}
+/* Check whether a given range completely covers another. */
+static inline int range_covers_range(uint64_t first_big, uint64_t len_big,
+ uint64_t first_small, uint64_t len_small)
+{
+ uint64_t last_big = range_get_last(first_big, len_big);
+ uint64_t last_small = range_get_last(first_small, len_small);
+
+ return first_big <= first_small && last_small <= last_big;
+}
+
/* Check whether 2 given ranges overlap.
* Undefined if ranges that wrap around 0. */
static inline int ranges_overlap(uint64_t first1, uint64_t len1,