Nir Soffer
2021-Dec-19 07:09 UTC
[Libguestfs] [PATCH nbdkit] plugins/python: Fix extents() count format string
The plugin used "i" (int32) instead of "I" (uint32) for the count, so when the client asks for 4294966784 bytes, the python plugin got -512. nbdkit: python.0: debug: python: extents count=4294966784 offset=0 req_one=0 ... nbdkit: python.0: debug: extents: count=-512 offset=0 flags=0 With this fix I can get extents from rhv-upload-plugin using nbdinfo. --- plugins/python/plugin.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/python/plugin.c b/plugins/python/plugin.c index f85512b4..366619f9 100644 --- a/plugins/python/plugin.c +++ b/plugins/python/plugin.c @@ -957,21 +957,21 @@ py_extents (void *handle, uint32_t count, uint64_t offset, ACQUIRE_PYTHON_GIL_FOR_CURRENT_SCOPE; struct handle *h = handle; PyObject *fn; PyObject *r; PyObject *iter, *t; size_t size; if (callback_defined ("extents", &fn)) { PyErr_Clear (); - r = PyObject_CallFunction (fn, "OiLI", h->py_h, count, offset, flags); + r = PyObject_CallFunction (fn, "OILI", h->py_h, count, offset, flags); Py_DECREF (fn); if (check_python_failure ("extents") == -1) return -1; iter = PyObject_GetIter (r); if (iter == NULL) { nbdkit_error ("extents method did not return " "something which is iterable"); Py_DECREF (r); return -1; -- 2.33.1
Richard W.M. Jones
2021-Dec-19 10:27 UTC
[Libguestfs] [PATCH nbdkit] plugins/python: Fix extents() count format string
On Sun, Dec 19, 2021 at 09:09:39AM +0200, Nir Soffer wrote:> The plugin used "i" (int32) instead of "I" (uint32) for the count, so > when the client asks for 4294966784 bytes, the python plugin got -512. > > nbdkit: python.0: debug: python: extents count=4294966784 offset=0 req_one=0 > ... > nbdkit: python.0: debug: extents: count=-512 offset=0 flags=0 > > With this fix I can get extents from rhv-upload-plugin using nbdinfo. > --- > plugins/python/plugin.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/plugins/python/plugin.c b/plugins/python/plugin.c > index f85512b4..366619f9 100644 > --- a/plugins/python/plugin.c > +++ b/plugins/python/plugin.c > @@ -957,21 +957,21 @@ py_extents (void *handle, uint32_t count, uint64_t offset, > ACQUIRE_PYTHON_GIL_FOR_CURRENT_SCOPE; > struct handle *h = handle; > PyObject *fn; > PyObject *r; > PyObject *iter, *t; > size_t size; > > if (callback_defined ("extents", &fn)) { > PyErr_Clear (); > > - r = PyObject_CallFunction (fn, "OiLI", h->py_h, count, offset, flags); > + r = PyObject_CallFunction (fn, "OILI", h->py_h, count, offset, flags); > Py_DECREF (fn); > if (check_python_failure ("extents") == -1) > return -1; > > iter = PyObject_GetIter (r); > if (iter == NULL) { > nbdkit_error ("extents method did not return " > "something which is iterable"); > Py_DECREF (r); > return -1;ACKed and pushed, thanks. I think we're going to need this one in RHEL ... 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