Displaying 3 results from an estimated 3 matches for "erase_ext".
2019 Mar 19
0
[PATCH nbdkit 1/9] server: Implement extents/can_extents calls for plugins and filters.
...p *map, uint64_t offset)
+{
+ if (map->nr_extents == 0 || offset < map->extents[0].offset)
+ return -1;
+
+ return find_extent_recursive (map, offset, 0, map->nr_extents-1);
+}
+
+/* Erase extents [i...i+count-1] from the array. Extents after are
+ * renumbered.
+ */
+static void
+erase_extents (struct nbdkit_extents_map *map,
+ size_t i, size_t count)
+{
+ assert (i+count <= map->nr_extents);
+
+ memmove (&map->extents[i],
+ &map->extents[i+count],
+ (map->nr_extents - (i+count)) * sizeof (struct extent));
+ map->nr_exte...
2019 Mar 20
2
Re: [PATCH nbdkit 1/9] server: Implement extents/can_extents calls for plugins and filters.
...;extents[lo].offset + map->extents[lo].length)
> + goto erase_middle_extents;
> +
> + /* A.1 or A.2 */
> + if (offset == map->extents[lo].offset) {
> + if (map->extents[lo].offset + map->extents[lo].length <= offset + length) {
> + /* A.1 */
> + erase_extents (map, lo, 1);
> + }
> + else {
> + /* A.2 */
> + uint64_t end = map->extents[lo].offset + map->extents[lo].length;
> + map->extents[lo].offset = offset + length;
> + map->extents[lo].length = end - map->extents[lo].offset;
> + }
&...
2019 Mar 19
15
[PATCH nbdkit 0/9] [mainly for discussion and early review] Implement extents.
I want to post this but mainly for discussion and early review. It's
not safe for these patches to all go upstream yet (because not all
filters have been checked/adjusted), but if any patches were to go
upstream then probably 1 & 2 only are safe.
File, VDDK, memory and data plugins all work, although I have only
done minimal testing on them.
The current tests, such as they are, all