Fix compilation of netmap backend
v2 cover Fix compilation of netmap backend
This patch series adds some fixes to the netmap net backend. It contains two changes:
(1) Fix compilation issue of netmap.c introduced by the reorganization of struct NetClientOptions
(2) Address the FIXME comment that was asking to use error_setg() in place of error_report()
CHANGELOG:
- fixed commit messages to reference appropriate commits
- modify netmap_open() to return error in a local Error variable
Vincenzo Maffione (2):
net: netmap: Fix compilation issue
net: netmap: use error_setg_errno() in place of error_report()
net/clients.h | 4 ++-- net/netmap.c | 34 +++++++++++++++++----------------- 2 files changed, 19 insertions(+), 19 deletions(-)
Signature · 1 line
2.3.3
PATCH v2 1/2 net: netmap: Fix compilation issue
Reorganization of struct NetClientOptions (commit e4ba22b) caused a compilation failure of the netmap backend. This patch fixes the issue by properly accessing the union field.
--- net/netmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
net/netmap.c +1 -1
@@ -439,7 +439,7 @@ int net_init_netmap(const NetClientOptions *opts, const char *name, NetClientState *peer, Error **errp) { /* FIXME error_setg(errp, ...) on failure */ - const NetdevNetmapOptions *netmap_opts = opts->netmap; + const NetdevNetmapOptions *netmap_opts = opts->u.netmap;NetClientState *nc;NetmapPriv me;NetmapState *s;
Signature · 1 line
2.3.3
Re: [Qemu-devel] [PATCH v2 1/2] net: netmap: Fix compilation issue
Quoted 3 lines · Vincenzo Maffione
Reorganization of struct NetClientOptions (commit e4ba22b) caused a compilation failure of the netmap backend. This patch fixes the issue by properly accessing the union field.
Technically, it was 8d0bcba that missed converting net/netmap.c alongside all the other net/*, but e4ba22b that turned it into a compile error. But no need to respin for that; the commit message is good enough.
Signature · 2 lines
Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
PATCH v2 2/2 net: netmap: use error_setg_errno() in place of error_report()
In reply to Vincenzo MaffioneThis update was required to align error reporting of netmap backend initialization to the modifications introduced by commit a30ecde.
--- net/clients.h | 4 ++-- net/netmap.c | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-)
net/clients.h +2 -2
@@ -55,8 +55,8 @@ int net_init_vde(const NetClientOptions *opts, const char *name,#endif #ifdef CONFIG_NETMAP -int net_init_netmap (const NetClientOptions *opts,const char *name, -NetClientState *peer,Error **errp); +void net_init_netmap (const NetClientOptions *opts,const char *name, +NetClientState *peer,Error **errp);#endif int net_init_vhost_user(const NetClientOptions *opts, const char *name,
net/netmap.c +16 -16
@@ -90,7 +90,7 @@ pkt_copy(const void *_src, void *_dst, int l)* Open a netmap device. We assume there is only one queue * (which is the case for the VALE bridge). */ -static int netmap_open (NetmapPriv *me) +static void netmap_open (NetmapPriv *me,Error **errp) {int fd;int err;
@@ -99,9 +99,9 @@ static int netmap_open(NetmapPriv *me) me->fd = fd =open (me->fdname,O_RDWR );if (fd <0 ) { -error_report ("Unable to open netmap device '%s' (%s)" , - me->fdname,strerror (errno)); -return -1 ; +error_setg_errno (errp, errno,"Unable to open netmap device '%s'" , + me->fdname); +return ; }memset (&req,0 ,sizeof (req));pstrcpy (req.nr_name,sizeof (req.nr_name), me->ifname);
@@ -109,15 +109,14 @@ static int netmap_open(NetmapPriv *me) req.nr_version =NETMAP_API ; err =ioctl (fd,NIOCREGIF , &req);if (err) { -error_report ("Unable to register %s: %s" , me->ifname,strerror (errno)); +error_setg_errno (errp, errno,"Unable to register %s" , me->ifname); goto error; } l = me->memsize = req.nr_memsize; me->mem =mmap (0 , l,PROT_WRITE |PROT_READ ,MAP_SHARED , fd,0 );if (me->mem ==MAP_FAILED ) { -error_report ("Unable to mmap netmap shared memory: %s" , -strerror (errno)); +error_setg_errno (errp, errno,"Unable to mmap netmap shared memory" ); me->mem =NULL ; goto error; }
@@ -125,11 +124,12 @@ static int netmap_open(NetmapPriv *me) me->nifp =NETMAP_IF (me->mem, req.nr_offset); me->tx =NETMAP_TXRING (me->nifp,0 ); me->rx =NETMAP_RXRING (me->nifp,0 ); -return 0 ; + +return ; error:close (me->fd); -return -1 ; +return ; }static void netmap_send (void *opaque);
@@ -435,12 +435,12 @@ static NetClientInfo net_netmap_info = {* * ... -net netmap,ifname="..." */ -int net_init_netmap (const NetClientOptions *opts, -const char *name,NetClientState *peer,Error **errp) +void net_init_netmap (const NetClientOptions *opts, +const char *name,NetClientState *peer,Error **errp) { -/* FIXME error_setg(errp, ...) on failure */ const NetdevNetmapOptions *netmap_opts = opts->u.netmap;NetClientState *nc; +Error *err =NULL ;NetmapPriv me;NetmapState *s;
@@ -448,8 +448,10 @@ int net_init_netmap(const NetClientOptions *opts, netmap_opts->has_devname ? netmap_opts->devname : "/dev/netmap");/* Set default name for the port if not supplied. */ pstrcpy (me.ifname,sizeof (me.ifname), netmap_opts->ifname); -if (netmap_open (&me)) { -return -1 ; +netmap_open (&me, &err); +if (err) { +error_propagate (errp, err); +return ; }/* Create the object. */ nc =qemu_new_net_client (&net_netmap_info, peer,"netmap" , name);
@@ -457,7 +459,5 @@ int net_init_netmap(const NetClientOptions *opts, s->me = me; s->vnet_hdr_len =0 ;netmap_read_poll (s, true);/* Initially only poll for reads. */ - -return 0 ; }
Signature · 1 line
2.3.3
Re: [Qemu-devel] [PATCH v2 2/2] net: netmap: use error_setg_errno() in place of error_report()
Quoted 13 lines · Vincenzo Maffione
This update was required to align error reporting of netmap backend initialization to the modifications introduced by commit a30ecde.
Signed-off-by Vincenzo Maffione <[email protected]>--- net/clients.h | 4 ++-- net/netmap.c | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-)+++
b/net/netmap.c
net/netmap.c static int netmap_open(NetmapPriv *me) · line 103
Quoted 8 lines
net/netmap.c +2
-3@@ -99,9 +99,9 @@ static int netmap_open(NetmapPriv *me) me->fd = fd =open (me->fdname,O_RDWR );if (fd <0 ) { -error_report ("Unable to open netmap device '%s' (%s)" , - me->fdname,strerror (errno)); -return -1 ; +error_setg_errno (errp, errno,"Unable to open netmap device '%s'" , + me->fdname);
We have error_setg_file_open() for reporting open() failures, if consistent messages are desired.
net/netmap.c static int netmap_open(NetmapPriv *me) · line 133
Quoted 13 lines
net/netmap.c +3
-2@@ -125,11 +124,12 @@ static int netmap_open(NetmapPriv *me) me->nifp =NETMAP_IF (me->mem, req.nr_offset); me->tx =NETMAP_TXRING (me->nifp,0 ); me->rx =NETMAP_RXRING (me->nifp,0 ); -return 0 ; + +return ; error:close (me->fd); -return -1 ; +return ; }
Dead return, if you wanted to remove it.
Minor enough that I'm okay with it whether or not you make those changes:
Signature · 2 lines
Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Re: [Qemu-devel] [PATCH v2 2/2] net: netmap: use error_setg_errno() in place of error_report()
Ok, preparing them.
2015-11-06 16:35 GMT+01:00 Eric Blake <[email protected]>:
Quoted 49 lines · Vincenzo Maffione
Quoted 13 lines
This update was required to align error reporting of netmap backend initialization to the modifications introduced by commit a30ecde.
Signed-off-by Vincenzo Maffione <[email protected]>--- net/clients.h | 4 ++-- net/netmap.c | 32 ++++++++++++++++---------------- 2 files changed, 18 insertions(+), 18 deletions(-)+++
b/net/netmap.cnet/netmap.c static int netmap_open(NetmapPriv *me) · line 103
Quoted 8 lines
net/netmap.c +2
-3@@ -99,9 +99,9 @@ static int netmap_open(NetmapPriv *me) me->fd = fd =open (me->fdname,O_RDWR );if (fd <0 ) { -error_report ("Unable to open netmap device '%s' (%s)" , - me->fdname,strerror (errno)); -return -1 ; +error_setg_errno (errp, errno,"Unable to open netmap device '%s'" , + me->fdname);We have
error_setg_file_open()for reportingopen()failures, if consistent messages are desired.net/netmap.c static int netmap_open(NetmapPriv *me) · line 133
Quoted 13 lines
net/netmap.c +3
-2@@ -125,11 +124,12 @@ static int netmap_open(NetmapPriv *me) me->nifp =NETMAP_IF (me->mem, req.nr_offset); me->tx =NETMAP_TXRING (me->nifp,0 ); me->rx =NETMAP_RXRING (me->nifp,0 ); -return 0 ; + +return ; error:close (me->fd); -return -1 ; +return ; }Dead return, if you wanted to remove it.
Minor enough that I'm okay with it whether or not you make those changes:
Reviewed-by Eric Blake <[email protected]>--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
Signature · 1 line
Vincenzo Maffione