[Libguestfs] [PATCH nbdkit 1/2] server: extents: Set errno on error from nbdkit_add_extent.

Richard W.M. Jones rjones at redhat.com
Wed Apr 24 11:04:03 UTC 2019


errno is currently set to a suitable value if nbdkit_extents_new
returns an error, but this was not documented so I added that
documentation.

Set errno to a suitable value if nbdkit_add_extent returns an error,
and also document that.

Thanks: Eric Blake for spotting the problem.
---
 docs/nbdkit-filter.pod | 3 ++-
 docs/nbdkit-plugin.pod | 2 +-
 server/extents.c       | 2 ++
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/docs/nbdkit-filter.pod b/docs/nbdkit-filter.pod
index 9e51c68..6aeaa7b 100644
--- a/docs/nbdkit-filter.pod
+++ b/docs/nbdkit-filter.pod
@@ -571,7 +571,8 @@ the end, but for filters which adjust offsets, they should pass in the
 adjusted offset.
 
 On error this function can return C<NULL>.  In this case it calls
-C<nbdkit_error> and/or C<nbdkit_set_error> as required.
+C<nbdkit_error> and/or C<nbdkit_set_error> as required.  C<errno> will
+be set to a suitable value.
 
  void nbdkit_extents_free (struct nbdkit_extents *);
 
diff --git a/docs/nbdkit-plugin.pod b/docs/nbdkit-plugin.pod
index 272ec67..e9dc34f 100644
--- a/docs/nbdkit-plugin.pod
+++ b/docs/nbdkit-plugin.pod
@@ -812,7 +812,7 @@ guarantee that trimmed blocks read back as zeroes.
 
 C<nbdkit_extent_add> returns C<0> on success or C<-1> on failure.  On
 failure C<nbdkit_error> and/or C<nbdkit_set_error> has already been
-called.
+called.  C<errno> will be set to a suitable value.
 
 =head1 THREADS
 
diff --git a/server/extents.c b/server/extents.c
index 105c4a7..d3d1a15 100644
--- a/server/extents.c
+++ b/server/extents.c
@@ -154,6 +154,7 @@ nbdkit_add_extent (struct nbdkit_extents *exts,
     nbdkit_error ("nbdkit_add_extent: "
                   "extents must be added in ascending order and "
                   "must be contiguous");
+    errno = ERANGE;
     return -1;
   }
   exts->next = offset + length;
@@ -186,6 +187,7 @@ nbdkit_add_extent (struct nbdkit_extents *exts,
       nbdkit_error ("nbdkit_add_extent: "
                     "first extent must not be > start (%" PRIu64 ")",
                     exts->start);
+      errno = ERANGE;
       return -1;
     }
 
-- 
2.20.1




More information about the Libguestfs mailing list