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