diff options
author | Martin Kletzander <mkletzan@redhat.com> | 2012-09-18 12:01:18 +0200 |
---|---|---|
committer | Martin Kletzander <mkletzan@redhat.com> | 2012-09-18 16:41:13 +0200 |
commit | 2f678bb10faccba30319488420c586b6a5436f94 (patch) | |
tree | 6210e96c595e86f6a715c0ceacec19975b8ae76f | |
parent | syntax-check: fix run.in (diff) | |
download | libvirt-2f678bb10faccba30319488420c586b6a5436f94.tar.gz libvirt-2f678bb10faccba30319488420c586b6a5436f94.tar.bz2 libvirt-2f678bb10faccba30319488420c586b6a5436f94.zip |
virNetDevBandwidthClear: Improve error handling
Two changes are introduced in this patch:
- The first change removes ATTRIBUTE_RETURN_CHECK from
virNetDevBandwidthClear, because it was called with ignore_value
always, anyway. The function is used even when it's not necessary
to call it, just for cleanup purposes.
- The second change is added ignoring of the command's exit status,
since it may report an error even when run just as "to be sure we
clean up" function. No libvirt errors are suppresed by this.
-rw-r--r-- | src/network/bridge_driver.c | 4 | ||||
-rw-r--r-- | src/util/virnetdevbandwidth.c | 10 | ||||
-rw-r--r-- | src/util/virnetdevbandwidth.h | 4 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 0e38016e2..3a800c933 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2161,7 +2161,7 @@ networkStartNetworkVirtual(struct network_driver *driver, return 0; err5: - ignore_value(virNetDevBandwidthClear(network->def->bridge)); + virNetDevBandwidthClear(network->def->bridge); err4: if (!save_err) @@ -2206,7 +2206,7 @@ networkStartNetworkVirtual(struct network_driver *driver, static int networkShutdownNetworkVirtual(struct network_driver *driver, virNetworkObjPtr network) { - ignore_value(virNetDevBandwidthClear(network->def->bridge)); + virNetDevBandwidthClear(network->def->bridge); if (network->radvdPid > 0) { char *radvdpidbase; diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c index b23ccd337..8faeae640 100644 --- a/src/util/virnetdevbandwidth.c +++ b/src/util/virnetdevbandwidth.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2011 Red Hat, Inc. + * Copyright (C) 2009-2012 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -69,7 +69,7 @@ virNetDevBandwidthSet(const char *ifname, goto cleanup; } - ignore_value(virNetDevBandwidthClear(ifname)); + virNetDevBandwidthClear(ifname); if (bandwidth->in) { if (virAsprintf(&average, "%llukbps", bandwidth->in->average) < 0) @@ -166,12 +166,13 @@ int virNetDevBandwidthClear(const char *ifname) { int ret = 0; + int dummy; /* for ignoring the exit status */ virCommandPtr cmd = NULL; cmd = virCommandNew(TC); virCommandAddArgList(cmd, "qdisc", "del", "dev", ifname, "root", NULL); - if (virCommandRun(cmd, NULL) < 0) + if (virCommandRun(cmd, &dummy) < 0) ret = -1; virCommandFree(cmd); @@ -179,8 +180,9 @@ virNetDevBandwidthClear(const char *ifname) cmd = virCommandNew(TC); virCommandAddArgList(cmd, "qdisc", "del", "dev", ifname, "ingress", NULL); - if (virCommandRun(cmd, NULL) < 0) + if (virCommandRun(cmd, &dummy) < 0) ret = -1; + virCommandFree(cmd); return ret; diff --git a/src/util/virnetdevbandwidth.h b/src/util/virnetdevbandwidth.h index 18384ae62..3fc903cfe 100644 --- a/src/util/virnetdevbandwidth.h +++ b/src/util/virnetdevbandwidth.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2011 Red Hat, Inc. + * Copyright (C) 2009-2012 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -44,7 +44,7 @@ void virNetDevBandwidthFree(virNetDevBandwidthPtr def); int virNetDevBandwidthSet(const char *ifname, virNetDevBandwidthPtr bandwidth) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; int virNetDevBandwidthClear(const char *ifname) - ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; + ATTRIBUTE_NONNULL(1); int virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest, const virNetDevBandwidthPtr src) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; |