[libvirt] [PATCH v2] network: make openvswitch call timeout compile time configurable
Michal Privoznik
mprivozn at redhat.com
Tue Jan 24 16:20:53 UTC 2017
On 01/24/2017 04:53 PM, Boris Fiuczynski wrote:
> Since a successful completion of the calls to openvswitch is expected
> a long timeout should be chosen to account for heavily loaded systems.
> Therefore this patch increases the timeout value from 5 to 120 seconds
> as default value and also allows to set the openvswitch timeout value
> by specifying with-ovs-timeout when running configure.
>
> Signed-off-by: Boris Fiuczynski <fiuczy at linux.vnet.ibm.com>
> Reviewed-by: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
> Reviewed-by: Marc Hartmayer <mhartmay at linux.vnet.ibm.com>
> ---
> configure.ac | 3 +++
> m4/virt-ovs-timeout.m4 | 34 ++++++++++++++++++++++++++++++++++
> src/util/virnetdevopenvswitch.c | 9 +++++----
> 3 files changed, 42 insertions(+), 4 deletions(-)
> create mode 100644 m4/virt-ovs-timeout.m4
>
> diff --git a/configure.ac b/configure.ac
> index 7efaddb..e70dfdc 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -463,6 +463,7 @@ LIBVIRT_ARG_LOADER_NVRAM
> LIBVIRT_ARG_LOGIN_SHELL
> LIBVIRT_ARG_HOST_VALIDATE
> LIBVIRT_ARG_TLS_PRIORITY
> +LIBVIRT_ARG_OVS_TIMEOUT
> LIBVIRT_ARG_SYSCTL_CONFIG
>
>
> @@ -477,6 +478,7 @@ LIBVIRT_CHECK_LOADER_NVRAM
> LIBVIRT_CHECK_LOGIN_SHELL
> LIBVIRT_CHECK_HOST_VALIDATE
> LIBVIRT_CHECK_TLS_PRIORITY
> +LIBVIRT_CHECK_OVS_TIMEOUT
> LIBVIRT_CHECK_SYSCTL_CONFIG
> LIBVIRT_CHECK_NSS
>
> @@ -1012,6 +1014,7 @@ LIBVIRT_RESULT_LOADER_NVRAM
> LIBVIRT_RESULT_LOGIN_SHELL
> LIBVIRT_RESULT_HOST_VALIDATE
> LIBVIRT_RESULT_TLS_PRIORITY
> +LIBVIRT_RESULT_OVS_TIMEOUT
> AC_MSG_NOTICE([])
> AC_MSG_NOTICE([Developer Tools])
> AC_MSG_NOTICE([])
> diff --git a/m4/virt-ovs-timeout.m4 b/m4/virt-ovs-timeout.m4
> new file mode 100644
> index 0000000..a5174d5
> --- /dev/null
> +++ b/m4/virt-ovs-timeout.m4
> @@ -0,0 +1,34 @@
> +dnl The OVS timeout check
> +dnl
> +dnl Copyright (C) 2017 IBM Corporation
> +dnl
> +dnl This library is free software; you can redistribute it and/or
> +dnl modify it under the terms of the GNU Lesser General Public
> +dnl License as published by the Free Software Foundation; either
> +dnl version 2.1 of the License, or (at your option) any later version.
> +dnl
> +dnl This library is distributed in the hope that it will be useful,
> +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
> +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> +dnl Lesser General Public License for more details.
> +dnl
> +dnl You should have received a copy of the GNU Lesser General Public
> +dnl License along with this library. If not, see
> +dnl <http://www.gnu.org/licenses/>.
> +dnl
> +
> +AC_DEFUN([LIBVIRT_ARG_OVS_TIMEOUT], [
> + LIBVIRT_ARG_WITH([OVS_TIMEOUT],
> + [set the default OVS timeout],
> + 120)
Isn't 120 too much? It's 2 minutes. Such heavy loaded machine is not suitable for virtualization.
> +])
> +
> +AC_DEFUN([LIBVIRT_CHECK_OVS_TIMEOUT], [
> + AC_DEFINE_UNQUOTED([OVS_TIMEOUT], ["$with_ovs_timeout"],
> + [default OVS timeout])
> +])
> +
> +AC_DEFUN([LIBVIRT_RESULT_OVS_TIMEOUT], [
> +dnl AC_MSG_NOTICE([OVS timeout: $with_ovs_timeout])
This doesn't need to be here.
> + LIBVIRT_RESULT([ OVS timeout], [$with_ovs_timeout])
> +])
> diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c
> index e6cb096..ba44b3b 100644
> --- a/src/util/virnetdevopenvswitch.c
> +++ b/src/util/virnetdevopenvswitch.c
> @@ -35,6 +35,7 @@
> #include "virlog.h"
>
> #define VIR_FROM_THIS VIR_FROM_NONE
> +#define OVS_TIMEOUT_ARG "--timeout=" OVS_TIMEOUT
>
> VIR_LOG_INIT("util.netdevopenvswitch");
>
> @@ -89,7 +90,7 @@ int virNetDevOpenvswitchAddPort(const char *brname, const char *ifname,
>
> cmd = virCommandNew(OVSVSCTL);
>
> - virCommandAddArgList(cmd, "--timeout=5", "--", "--if-exists", "del-port",
> + virCommandAddArgList(cmd, OVS_TIMEOUT_ARG, "--", "--if-exists", "del-port",
> ifname, "--", "add-port", brname, ifname, NULL);
>
> if (virtVlan && virtVlan->nTags > 0) {
> @@ -183,7 +184,7 @@ int virNetDevOpenvswitchRemovePort(const char *brname ATTRIBUTE_UNUSED, const ch
> virCommandPtr cmd = NULL;
>
> cmd = virCommandNew(OVSVSCTL);
> - virCommandAddArgList(cmd, "--timeout=5", "--", "--if-exists", "del-port", ifname, NULL);
> + virCommandAddArgList(cmd, OVS_TIMEOUT_ARG, "--", "--if-exists", "del-port", ifname, NULL);
>
> if (virCommandRun(cmd, NULL) < 0) {
> virReportError(VIR_ERR_INTERNAL_ERROR,
> @@ -212,7 +213,7 @@ int virNetDevOpenvswitchGetMigrateData(char **migrate, const char *ifname)
> size_t len;
> int ret = -1;
>
> - cmd = virCommandNewArgList(OVSVSCTL, "--timeout=5", "--if-exists", "get", "Interface",
> + cmd = virCommandNewArgList(OVSVSCTL, OVS_TIMEOUT_ARG, "--if-exists", "get", "Interface",
> ifname, "external_ids:PortData", NULL);
>
> virCommandSetOutputBuffer(cmd, migrate);
> @@ -255,7 +256,7 @@ int virNetDevOpenvswitchSetMigrateData(char *migrate, const char *ifname)
> return 0;
> }
>
> - cmd = virCommandNewArgList(OVSVSCTL, "--timeout=5", "set",
> + cmd = virCommandNewArgList(OVSVSCTL, OVS_TIMEOUT_ARG, "set",
> "Interface", ifname, NULL);
> virCommandAddArgFormat(cmd, "external_ids:PortData=%s", migrate);
>
>
There are other occurrences of --timeout=:
src/util/virnetdevopenvswitch.c:303: cmd = virCommandNewArgList(OVSVSCTL, "--timeout=5",
src/util/virnetdevopenvswitch.c:318: cmd = virCommandNewArgList(OVSVSCTL, "--timeout=5",
src/util/virnetdevopenvswitch.c:349: cmd = virCommandNewArgList(OVSVSCTL, "--timeout=5",
src/util/virnetdevopenvswitch.c:416: cmd = virCommandNewArgList(OVSVSCTL, "--timeout=5", "get", "Interface",
No need to send another version. I can fix this before pushing. I just like to know your ideas to my points.
Michal
More information about the libvir-list
mailing list