Re: [PATCH v3 1/9] nbd/client-connection: nbd_co_establish_connection(): fix non set errp
On Tue, Sep 07, 2021 at 12:44:53PM -0500, Eric Blake wrote: > On Mon, Sep 06, 2021 at 10:06:46PM +0300, Vladimir Sementsov-Ogievskiy wrote: > > When we don't have a connection and blocking is false, we return NULL > > but don't set errp. That's wrong. > > Oops... > > > > > We have two paths for calling nbd_co_establish_connection(): > > > > 1. nbd_open() -> nbd_do_establish_connection() -> ... > > but that will never set blocking=false > > > > 2. nbd_reconnect_attempt() -> nbd_co_do_establish_connection() -> ... > > but that uses errp=NULL > > > > So, we are safe with our wrong errp policy in > > nbd_co_establish_connection(). Still let's fix it. > > ...phew! Thus, it's not critical to backport. > > Reviewed-by: Eric Blake Queuing this one through my NBD tree. Given the discussion on 2/9, I'll leave the rest of the series for later. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
Re: [PATCH v3 1/9] nbd/client-connection: nbd_co_establish_connection(): fix non set errp
On Mon, Sep 06, 2021 at 10:06:46PM +0300, Vladimir Sementsov-Ogievskiy wrote: > When we don't have a connection and blocking is false, we return NULL > but don't set errp. That's wrong. Oops... > > We have two paths for calling nbd_co_establish_connection(): > > 1. nbd_open() -> nbd_do_establish_connection() -> ... > but that will never set blocking=false > > 2. nbd_reconnect_attempt() -> nbd_co_do_establish_connection() -> ... > but that uses errp=NULL > > So, we are safe with our wrong errp policy in > nbd_co_establish_connection(). Still let's fix it. ...phew! Thus, it's not critical to backport. Reviewed-by: Eric Blake > > Signed-off-by: Vladimir Sementsov-Ogievskiy > --- > nbd/client-connection.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/nbd/client-connection.c b/nbd/client-connection.c > index 7123b1e189..695f855754 100644 > --- a/nbd/client-connection.c > +++ b/nbd/client-connection.c > @@ -318,6 +318,7 @@ nbd_co_establish_connection(NBDClientConnection *conn, > NBDExportInfo *info, > } > > if (!blocking) { > +error_setg(errp, "No connection at the moment"); > return NULL; > } > > -- > 2.29.2 > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
[PATCH v3 1/9] nbd/client-connection: nbd_co_establish_connection(): fix non set errp
When we don't have a connection and blocking is false, we return NULL but don't set errp. That's wrong. We have two paths for calling nbd_co_establish_connection(): 1. nbd_open() -> nbd_do_establish_connection() -> ... but that will never set blocking=false 2. nbd_reconnect_attempt() -> nbd_co_do_establish_connection() -> ... but that uses errp=NULL So, we are safe with our wrong errp policy in nbd_co_establish_connection(). Still let's fix it. Signed-off-by: Vladimir Sementsov-Ogievskiy --- nbd/client-connection.c | 1 + 1 file changed, 1 insertion(+) diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 7123b1e189..695f855754 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -318,6 +318,7 @@ nbd_co_establish_connection(NBDClientConnection *conn, NBDExportInfo *info, } if (!blocking) { +error_setg(errp, "No connection at the moment"); return NULL; } -- 2.29.2