On 09/18/2012 04:23 PM, Peter Krempa wrote: > On 09/18/12 15:52, Martin Kletzander wrote: >> 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 an added parameter "ignore_error" for the same >> function, which basically means "Ignore any errors from the commands >> that will be run". This parameter, when true, doesn't suppress any >> libvirt errors, just the exit value of commands ran. >> --- >> src/network/bridge_driver.c | 4 ++-- >> src/util/virnetdevbandwidth.c | 15 ++++++++++----- >> src/util/virnetdevbandwidth.h | 6 +++--- >> 3 files changed, 15 insertions(+), 10 deletions(-) >> >> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c >> index 0e38016..f153cdd 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, true); >> >> 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, true); >> >> if (network->radvdPid > 0) { >> char *radvdpidbase; >> diff --git a/src/util/virnetdevbandwidth.c >> b/src/util/virnetdevbandwidth.c >> index b23ccd3..98f6b68 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, true); >> > > All 3 of the call paths for this function call it with ignore_error set > to true. I think that it's not necessary to have the feature to turn on > errors now, if nobody actually uses it. > > >> if (bandwidth->in) { >> if (virAsprintf(&average, "%llukbps", >> bandwidth->in->average) < 0) >> @@ -163,15 +163,19 @@ cleanup: >> * Return 0 on success, -1 otherwise. >> */ >> int >> -virNetDevBandwidthClear(const char *ifname) >> +virNetDevBandwidthClear(const char *ifname, bool ignore_error) >> { >> int ret = 0; >> + int exitstatus, *es = NULL; >> virCommandPtr cmd = NULL; >> >> + if (ignore_error) >> + es = &exitstatus; >> + >> cmd = virCommandNew(TC); >> virCommandAddArgList(cmd, "qdisc", "del", "dev", ifname, "root", >> NULL); >> >> - if (virCommandRun(cmd, NULL) < 0) >> + if (virCommandRun(cmd, es) < 0) >> ret = -1; >> >> virCommandFree(cmd); >> @@ -179,8 +183,9 @@ virNetDevBandwidthClear(const char *ifname) >> cmd = virCommandNew(TC); >> virCommandAddArgList(cmd, "qdisc", "del", "dev", ifname, >> "ingress", NULL); >> >> - if (virCommandRun(cmd, NULL) < 0) >> + if (virCommandRun(cmd, es) < 0) >> ret = -1; >> + >> virCommandFree(cmd); >> >> return ret; >> diff --git a/src/util/virnetdevbandwidth.h >> b/src/util/virnetdevbandwidth.h >> index 18384ae..f15b489 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 >> @@ -43,8 +43,8 @@ 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; >> +int virNetDevBandwidthClear(const char *ifname, bool ignore_error) >> + ATTRIBUTE_NONNULL(1); >> int virNetDevBandwidthCopy(virNetDevBandwidthPtr *dest, const >> virNetDevBandwidthPtr src) >> ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; >> > > ACK if you leave out the ignore_error argument. > > Peter > Fixed as you requested and pushed, thanks. Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list