Displaying 20 results from an estimated 39 matches for "extents2".
Did you mean:
extents
2019 Apr 23
0
[nbdkit PATCH 2/4] filters: Utilize CLEANUP_EXTENTS_FREE
...quot;cleanup.h"
+
#define THREAD_MODEL NBDKIT_THREAD_MODEL_PARALLEL
static int64_t offset = 0, range = -1;
@@ -138,7 +140,7 @@ offset_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
struct nbdkit_extents *extents, int *err)
{
size_t i;
- struct nbdkit_extents *extents2;
+ CLEANUP_EXTENTS_FREE struct nbdkit_extents *extents2 = NULL;
struct nbdkit_extent e;
int64_t real_size = next_ops->get_size (nxdata);
@@ -149,20 +151,15 @@ offset_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
}
if (next_ops->extents (nxdata, count, offs + offset,...
2019 Aug 28
1
[nbdkit PATCH] offset, partition: Fix .extents with non-zero offset
...it a/docs/nbdkit-filter.pod b/docs/nbdkit-filter.pod
index 6e2bea61..cfd664eb 100644
--- a/docs/nbdkit-filter.pod
+++ b/docs/nbdkit-filter.pod
@@ -560,7 +560,7 @@ from the layer below. Without error checking it would look like this:
int64_t size;
size = next_ops->get_size (nxdata);
- extents2 = nbdkit_extents_new (offset + shift, size - shift);
+ extents2 = nbdkit_extents_new (offset + shift, size);
next_ops->extents (nxdata, count, offset + shift, flags, extents2, err);
for (i = 0; i < nbdkit_extents_count (extents2); ++i) {
e = nbdkit_get_extent (extents2, i);
di...
2019 Mar 29
2
Re: [PATCH nbdkit v5 FINAL 12/19] truncate: Implement extents for beyond end of truncated region.
On 3/28/19 11:18 AM, Richard W.M. Jones wrote:
> ---
> filters/truncate/truncate.c | 55 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 55 insertions(+)
>
> + extents2 = nbdkit_extents_new (0, real_size_copy);
> + if (offset + count <= real_size_copy)
> + n = count;
> + else
> + n = real_size_copy - offset;
> + if (next_ops->extents (nxdata, n, offset, flags, extents2, err) == -1) {
> + nbdkit_extents_free (extents2);
> +...
2019 Apr 23
1
Re: [nbdkit PATCH 2/4] filters: Utilize CLEANUP_EXTENTS_FREE
...5 ++++-
> 6 files changed, 25 insertions(+), 27 deletions(-)
>
> @@ -322,20 +323,15 @@ truncate_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
> n = count;
> else
> n = real_size_copy - offset;
> - if (next_ops->extents (nxdata, n, offset, flags, extents2, err) == -1) {
> - nbdkit_extents_free (extents2);
> + if (next_ops->extents (nxdata, n, offset, flags, extents2, err) == -1)
> return -1;
> - }
>
> for (i = 0; i < nbdkit_extents_count (extents2); ++i) {
> struct nbdkit_extent e = nbdkit_get_extent (ex...
2019 Apr 23
1
Re: [PATCH nbdkit v5 FINAL 10/19] offset: Implement mapping of extents.
On 3/28/19 11:18 AM, Richard W.M. Jones wrote:
> Allows you to safely use nbdkit-offset-filter on top of a plugin
> supporting extents.
> ---
> filters/offset/offset.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> +
> + extents2 = nbdkit_extents_new (offs + offset, real_size - offset);
> + if (extents2 == NULL) {
> + *err = errno;
> + return -1;
> + }
Here, we are careful to set *err.
> + if (next_ops->extents (nxdata, count, offs + offset,
> + flags, extents2, err) =...
2019 Mar 20
0
[PATCH nbdkit 4/8] offset: Implement mapping of extents.
...+ offset, flags, err);
}
+/* Extents. */
+static int
+offset_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
+ void *handle, uint32_t count, uint64_t offs, uint32_t flags,
+ struct nbdkit_extents *extents, int *err)
+{
+ size_t i;
+ struct nbdkit_extents *extents2;
+ struct nbdkit_extent e;
+
+ extents2 = nbdkit_extents_new (offs + offset);
+ if (extents2 == NULL) {
+ *err = errno;
+ return -1;
+ }
+ if (next_ops->extents (nxdata, count, offs + offset,
+ flags, extents2, err) == -1)
+ goto error;
+
+ for (i = 0; i &l...
2019 Mar 20
0
[PATCH nbdkit 5/8] partition: Implement mapping of extents.
.... */
+static int
+partition_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
+ void *handle, uint32_t count, uint64_t offs, uint32_t flags,
+ struct nbdkit_extents *extents, int *err)
+{
+ struct handle *h = handle;
+ size_t i;
+ struct nbdkit_extents *extents2;
+ struct nbdkit_extent e;
+
+ extents2 = nbdkit_extents_new (offs + h->offset);
+ if (extents2 == NULL) {
+ *err = errno;
+ return -1;
+ }
+ if (next_ops->extents (nxdata, count, offs + h->offset,
+ flags, extents2, err) == -1)
+ goto error;
+
+ for...
2019 Mar 28
0
[PATCH nbdkit v5 FINAL 12/19] truncate: Implement extents for beyond end of truncated region.
...s. */
+static int
+truncate_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
+ void *handle, uint32_t count, uint64_t offset,
+ uint32_t flags, struct nbdkit_extents *extents, int *err)
+{
+ uint32_t n;
+ uint64_t real_size_copy;
+ struct nbdkit_extents *extents2;
+ size_t i;
+
+ pthread_mutex_lock (&lock);
+ real_size_copy = real_size;
+ pthread_mutex_unlock (&lock);
+
+ /* If the entire request is beyond the end of the underlying plugin
+ * then this is the easy case: return a hole.
+ */
+ if (offset >= real_size_copy)
+ return nbd...
2019 Mar 28
0
[PATCH nbdkit v5 FINAL 11/19] partition: Implement mapping of extents.
.... */
+static int
+partition_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
+ void *handle, uint32_t count, uint64_t offs, uint32_t flags,
+ struct nbdkit_extents *extents, int *err)
+{
+ struct handle *h = handle;
+ size_t i;
+ struct nbdkit_extents *extents2;
+ struct nbdkit_extent e;
+ int64_t real_size = next_ops->get_size (nxdata);
+
+ extents2 = nbdkit_extents_new (offs + h->offset, real_size - h->offset);
+ if (extents2 == NULL) {
+ *err = errno;
+ return -1;
+ }
+ if (next_ops->extents (nxdata, count, offs + h->offset,...
2019 Mar 28
0
[PATCH nbdkit v5 FINAL 10/19] offset: Implement mapping of extents.
...+ offset, flags, err);
}
+/* Extents. */
+static int
+offset_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
+ void *handle, uint32_t count, uint64_t offs, uint32_t flags,
+ struct nbdkit_extents *extents, int *err)
+{
+ size_t i;
+ struct nbdkit_extents *extents2;
+ struct nbdkit_extent e;
+ int64_t real_size = next_ops->get_size (nxdata);
+
+ extents2 = nbdkit_extents_new (offs + offset, real_size - offset);
+ if (extents2 == NULL) {
+ *err = errno;
+ return -1;
+ }
+ if (next_ops->extents (nxdata, count, offs + offset,
+...
2019 Apr 24
0
[PATCH nbdkit 2/2] filters: Be careful to set *err if nbdkit_add_extent or nbdkit_extents_new fail.
..., 3 deletions(-)
diff --git a/filters/offset/offset.c b/filters/offset/offset.c
index 24ccb4c..633a1c7 100644
--- a/filters/offset/offset.c
+++ b/filters/offset/offset.c
@@ -156,8 +156,10 @@ offset_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
for (i = 0; i < nbdkit_extents_count (extents2); ++i) {
e = nbdkit_get_extent (extents2, i);
e.offset -= offset;
- if (nbdkit_add_extent (extents, e.offset, e.length, e.type) == -1)
+ if (nbdkit_add_extent (extents, e.offset, e.length, e.type) == -1) {
+ *err = errno;
return -1;
+ }
}
return 0;
}
diff --git...
2019 Apr 01
1
Re: [PATCH nbdkit v5 FINAL 11/19] partition: Implement mapping of extents.
...ion_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
>+ void *handle, uint32_t count, uint64_t offs, uint32_t flags,
>+ struct nbdkit_extents *extents, int *err)
>+{
>+ struct handle *h = handle;
>+ size_t i;
>+ struct nbdkit_extents *extents2;
>+ struct nbdkit_extent e;
>+ int64_t real_size = next_ops->get_size (nxdata);
>+
>+ extents2 = nbdkit_extents_new (offs + h->offset, real_size - h->offset);
>+ if (extents2 == NULL) {
>+ *err = errno;
>+ return -1;
>+ }
>+ if (next_ops->extents (...
2019 Apr 24
4
[PATCH nbdkit 2/2] filters: Be careful to set *err if nbdkit_add_extent or nbdkit_extents_new fail.
This fix isn't exhaustive but it fixes some obvious problems in the
filters.
Rich.
2019 Apr 23
8
[nbdkit PATCH 0/4] Start using cleanup macros in filters/plugins
There's more that can be done (in particular, use of CLEANUP_FREE),
but this is enough to at least see if I'm on the right track.
I couldn't figure out an obvious difference between common/include and
common/utils, but it looks like the former is for things that are
inlineable via .h only, while the latter is when you need to link in
a convenience library, so this landed in the
2019 Mar 29
0
Re: [PATCH nbdkit v5 FINAL 12/19] truncate: Implement extents for beyond end of truncated region.
On Thu, Mar 28, 2019 at 09:39:23PM -0500, Eric Blake wrote:
> On 3/28/19 11:18 AM, Richard W.M. Jones wrote:
> > ---
> > filters/truncate/truncate.c | 55 +++++++++++++++++++++++++++++++++++++
> > 1 file changed, 55 insertions(+)
> >
>
> > + extents2 = nbdkit_extents_new (0, real_size_copy);
> > + if (offset + count <= real_size_copy)
> > + n = count;
> > + else
> > + n = real_size_copy - offset;
> > + if (next_ops->extents (nxdata, n, offset, flags, extents2, err) == -1) {
> > + nbdkit_exte...
2019 Mar 23
1
Re: [PATCH nbdkit 4/8] offset: Implement mapping of extents.
...ents. */
> +static int
> +offset_extents (struct nbdkit_next_ops *next_ops, void *nxdata,
> + void *handle, uint32_t count, uint64_t offs, uint32_t flags,
> + struct nbdkit_extents *extents, int *err)
> +{
> + size_t i;
> + struct nbdkit_extents *extents2;
> + struct nbdkit_extent e;
> +
> + extents2 = nbdkit_extents_new (offs + offset);
> + if (extents2 == NULL) {
> + *err = errno;
> + return -1;
> + }
Ouch - nbdkit_extents_new() returns NULL for 'start >= INT64_MAX'
without setting errno. Of course, that...
2020 Jul 07
0
[nbdkit PATCH 2/3] extents: Add nbdkit_extents_aligned()
...ts_remove (&exts->extents, 1);
+ }
+ else {
+ /* The plugin needs a fresh extents object each time, but
+ * with care, we can merge it into the callers' extents.
+ */
+ extents tmp;
+ CLEANUP_EXTENTS_FREE struct nbdkit_extents *extents2 = NULL;
+
+ extents2 = nbdkit_extents_new (e.offset + e.length, offset + align);
+ if (next_ops->extents (nxdata, offset + align - e.length,
+ e.offset + e.length,
+ flags & ~NBDKIT_FLAG_REQ_ONE,
+...
2019 Mar 25
0
Re: [PATCH nbdkit 1/8] server: Implement extents/can_extents calls for plugins and filters.
On Sat, Mar 23, 2019 at 11:25:06AM -0500, Eric Blake wrote:
> On 3/20/19 5:11 PM, Richard W.M. Jones wrote:
> > + myfilter_extents (...)
> > + {
> > + size_t i;
> > + struct nbdkit_extents *extents2;
> > + struct nbdkit_extent e;
> > +
> > + extents2 = nbdkit_extents_new (offset);
> > + next_ops->extents (nxdata, count, offset, flags, extents2, err);
> > + for (i = 0; i < nbdkit_extents_size (extents2); ++i) {
> > + e = nbdkit_get_extent (e...
2020 Jul 09
0
[nbdkit PATCH] blocksize: Fix .extents when plugin changes type within minblock
...as long as we're making
+ * progress.
*/
- return next_ops->extents (nxdata,
- MIN (count, maxlen),
- ROUND_DOWN (offset, minblock),
- flags, extents, err);
+ CLEANUP_EXTENTS_FREE struct nbdkit_extents *extents2 = NULL;
+ size_t i;
+ struct nbdkit_extent e;
+
+ extents2 = nbdkit_extents_new (ROUND_DOWN (offset, minblock),
+ ROUND_UP (offset + count, minblock));
+ if (extents2 == NULL) {
+ *err = errno;
+ return -1;
+ }
+
+ if (nbdkit_extents_aligned (next_ops, nx...
2020 Jul 07
6
[RFC nbdkit PATCH 0/3] aligned .extents
Ultimately, both the blocksize and swab filters want to return aligned
extents to the client. I'm posting this as a snapshot of my work in
progress on how I plan to get there (it's not quite working yet, but
I'm done for today and wanted to at least document my ideas).
I might also add a convenience function for nbdkit_extents_offset,
since we have a number of filters that repeat the