[Libguestfs] [nbdkit] About the Rust bindings

alan somers asomers at gmail.com
Sat Jun 6 13:26:45 UTC 2020


On Sat, Jun 6, 2020 at 3:39 AM Richard W.M. Jones <rjones at redhat.com> wrote:

> [To continue the conversation from
> https://github.com/libguestfs/nbdkit/issues/5]
>
> > Currently there's no way for the Rust plugin to report an error. The
> > idiomatic way to do it would be for each callback to return a Result
> > object, much like how the Go plugin currently does it.
>
> I'm sure it's not idiomatic for Rust, but I just wanted to say that
> there is a way to return an error: return -1.  But a bigger issue
> seems to be how to pass back the correct errno (assuming that Rust
> even collects this from low-level syscalls?).
>
> For historical reasons nbdkit plugins written in C set errno on error
> and nbdkit server reads the errno and may translate it into NBD errors
> on the wire (so it's generally important to get it right).
>
> However your plugin may set .errno_is_preserved = 0, then you can call
> nbdkit_set_error() whenever convenient before returning an error to
> set the errno that nbdkit will use.  In OCaml plugins we have to go
> through some hoops to convert OCaml errno (which use a different
> numbering) to system errno:
>
>
> https://github.com/libguestfs/nbdkit/blob/904c4e5fdca557d6d25a60e6fb12fa058263481e/plugins/ocaml/NBDKit.ml#L250
>
> The other issue (from golang bindings) was threads.  Does Rust use
> native system pthreads?  If it does then there shouldn't be an issue.
> golang implements its own green threads and that was a problem.
>
> Rich.
>
> --
> Richard Jones, Virtualization Group, Red Hat
> http://people.redhat.com/~rjones
> Read my programming and virtualization blog: http://rwmj.wordpress.com
> libguestfs lets you edit virtual machines.  Supports shell scripting,
> bindings from many languages.  http://libguestfs.org
>

Yes, Rust uses native threads.  Setting the errno explicitly with
nbdkit_set_error sounds good.  I have a good start on new bindings, and
should have something to show next week.
-Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20200606/00e4e494/attachment.htm>


More information about the Libguestfs mailing list