[ovs-dev] [PATCH 1/3] Replace direct use of POLLXXX macros with OVS_POLLXXX
Anton Ivanov
anton.ivanov at cambridgegreys.com
Thu Feb 13 17:26:29 UTC 2020
On 12/02/2020 15:30, Dumitru Ceara wrote:
> On 2/12/20 4:17 PM, Anton Ivanov wrote:
>>
>>
>> On 12/02/2020 13:41, Dumitru Ceara wrote:
>>> On 2/7/20 9:40 AM, anton.ivanov at cambridgegreys.com wrote:
>>>> From: Anton Ivanov <anton.ivanov at cambridgegreys.com>
>>>>
>>>> In order to allow switching between poll and epoll we need to
>>>> switch from the direct use of POLLXXX macros to OVS_POLLXXX which
>>>> can be either POLLXXX or EPOLLXXX depending on the actual backend.
>>>>
>>>> Signed-off-by: Anton Ivanov <anton.ivanov at cambridgegreys.com>
>>>
>>> Hi Anton,
>>>
>>> Your patches break OVS. Take the following scenario which adds an OVS
>>> bridge and an internal port to it:
>>
>> Can you send me your ovs-vswitchd and ovsdb arguments lists to make
>> sure I am testing under the same conditions.
>
> On a "clean" system, without any pre-existing OVS conf.db I manually
> started OVS:
>
> ovs-ctl start --system-id=local
>
>>
>> Thanks in advance,
>>
>>>
>>> $ ovs-vsctl add-br br-test
>>> $ ovs-vsctl add-port br-test vm1 -- set interface vm1 type=internal
>>> $ ip netns add vm1
>>> $ ip link set vm1 netns vm1
>>> $ ip netns exec vm1 ip link set vm1 address 00:00:00:00:00:01
>>> $ ip netns exec vm1 ip addr add 42.42.42.2/24 dev vm1
>>>
>>> # Bring the port up which will trigger ICMPv6 neighbor/router
>>> solicitation
>>> $ ip netns exec vm1 ip link set dev vm1 up
>
> Then I ran the commands above which create a single bridge with "normal"
> action and 1 internal port that gets brought up.
>
> That's it.
Thanks, I have it diagnozed.
The epoll fds which are used to build the dpif-netlink handlers are created in one thread and used in another. As a result, they cannot be registered for persistence upon creation - they end up in the wrong poll loop.
I will sleep on it and fix it tomorrow in a way which does not compromise the performance for the other fds which can be registered at creation.
Brgds,
A.
>
> Regards,
> Dumitru
>
>>>
>>> 2020-02-12T13:28:20.026Z|00036|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 62 (NETLINK_GENERIC<->NETLINK_GENERIC) at lib/netlink-socket.c:234
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00037|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 32 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00038|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 33 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00039|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 34 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00040|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 35 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00041|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 36 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00042|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 62 (NETLINK_GENERIC<->NETLINK_GENERIC) at lib/netlink-socket.c:234
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00043|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 32 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00044|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 33 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:20.026Z|00045|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 34 (unknown anon_inode:[eventpoll]) at lib/dpif-netlink.c:2299
>>> (69% CPU usage)
>>> 2020-02-12T13:28:26.026Z|00046|poll_loop|INFO|Dropped 1530469 log
>>> messages in last 6 seconds (most recently, 0 seconds ago) due to
>>> excessive rate
>>> 2020-02-12T13:28:26.026Z|00047|poll_loop|INFO|wakeup due to [OVS_POLLIN]
>>> on fd 62 (NETLINK_GENERIC<->NETLINK_GENERIC) at lib/netlink-socket.c:234
>>> (98% CPU usage)
>>> 2020-02-12T13:28:32.026Z|00048|poll_loop|INFO|Dropped 1548848 log
>>> messages in last 6 seconds (most recently, 0 seconds ago) due to
>>> excessive rate
>>>
>>>
>>> # ovs-vswitchd stays at 100% CPU until the we bring the bridge down:
>>> $ ovs-vsctl del-br br-test
>>>
>>> Also, your patches generate build warnings:
>>> lib/poll-loop.c: In function 'poll_block':
>>> lib/poll-loop.c:383:9: error: unused variable 'counter'
>>> [-Werror=unused-variable]
>>> int counter;
>>>
>>> Regards,
>>> Dumitru
>>>
>>>> ---
>>>> include/openvswitch/poll-loop.h | 6 ++++++
>>>> lib/fatal-signal.c | 2 +-
>>>> lib/latch-unix.c | 4 ++--
>>>> lib/netdev-afxdp.c | 2 +-
>>>> lib/netdev-bsd.c | 4 ++--
>>>> lib/netdev-linux.c | 4 ++--
>>>> lib/netlink-notifier.c | 4 +++-
>>>> lib/poll-loop.c | 30 +++++++++++++++---------------
>>>> lib/process.c | 2 +-
>>>> lib/route-table-bsd.c | 2 +-
>>>> lib/rtbsd.c | 2 +-
>>>> lib/socket-util.c | 8 ++++----
>>>> lib/stream-fd.c | 6 +++---
>>>> lib/stream-ssl.c | 8 ++++----
>>>> manpages.mk | 3 ---
>>>> tests/test-netflow.c | 2 +-
>>>> tests/test-sflow.c | 2 +-
>>>> utilities/nlmon.c | 2 +-
>>>> 18 files changed, 49 insertions(+), 44 deletions(-)
>>>>
>>>> diff --git a/include/openvswitch/poll-loop.h
>>>> b/include/openvswitch/poll-loop.h
>>>> index 532640497..532d9caa6 100644
>>>> --- a/include/openvswitch/poll-loop.h
>>>> +++ b/include/openvswitch/poll-loop.h
>>>> @@ -41,6 +41,12 @@
>>>> #include <windows.h>
>>>> #endif
>>>> +#define OVS_POLLIN POLLIN
>>>> +#define OVS_POLLOUT POLLOUT
>>>> +#define OVS_POLLERR POLLERR
>>>> +#define OVS_POLLNVAL POLLNVAL
>>>> +#define OVS_POLLHUP POLLHUP
>>>> +
>>>> #ifdef __cplusplus
>>>> extern "C" {
>>>> #endif
>>>> diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c
>>>> index 09f7c6ecf..97d8d1dab 100644
>>>> --- a/lib/fatal-signal.c
>>>> +++ b/lib/fatal-signal.c
>>>> @@ -271,7 +271,7 @@ fatal_signal_wait(void)
>>>> #ifdef _WIN32
>>>> poll_wevent_wait(wevent);
>>>> #else
>>>> - poll_fd_wait(signal_fds[0], POLLIN);
>>>> + poll_fd_wait(signal_fds[0], OVS_POLLIN);
>>>> #endif
>>>> }
>>>> diff --git a/lib/latch-unix.c b/lib/latch-unix.c
>>>> index 2995076d6..fea61ab28 100644
>>>> --- a/lib/latch-unix.c
>>>> +++ b/lib/latch-unix.c
>>>> @@ -67,7 +67,7 @@ latch_is_set(const struct latch *latch)
>>>> int retval;
>>>> pfd.fd = latch->fds[0];
>>>> - pfd.events = POLLIN;
>>>> + pfd.events = POLLIN; /* This is POLL specific, it should use
>>>> POLL only macro */
>>>> do {
>>>> retval = poll(&pfd, 1, 0);
>>>> } while (retval < 0 && errno == EINTR);
>>>> @@ -83,5 +83,5 @@ latch_is_set(const struct latch *latch)
>>>> void
>>>> latch_wait_at(const struct latch *latch, const char *where)
>>>> {
>>>> - poll_fd_wait_at(latch->fds[0], POLLIN, where);
>>>> + poll_fd_wait_at(latch->fds[0], OVS_POLLIN, where);
>>>> }
>>>> diff --git a/lib/netdev-afxdp.c b/lib/netdev-afxdp.c
>>>> index 482400d8d..ef367e5ea 100644
>>>> --- a/lib/netdev-afxdp.c
>>>> +++ b/lib/netdev-afxdp.c
>>>> @@ -184,7 +184,7 @@ xsk_rx_wakeup_if_needed(struct xsk_umem_info *umem,
>>>> if (xsk_ring_prod__needs_wakeup(&umem->fq)) {
>>>> pfd.fd = fd;
>>>> - pfd.events = POLLIN;
>>>> + pfd.events = OVS_POLLIN;
>>>> ret = poll(&pfd, 1, 0);
>>>> if (OVS_UNLIKELY(ret < 0)) {
>>>> diff --git a/lib/netdev-bsd.c b/lib/netdev-bsd.c
>>>> index 7875636cc..45385b187 100644
>>>> --- a/lib/netdev-bsd.c
>>>> +++ b/lib/netdev-bsd.c
>>>> @@ -659,7 +659,7 @@ netdev_bsd_rxq_wait(struct netdev_rxq *rxq_)
>>>> {
>>>> struct netdev_rxq_bsd *rxq = netdev_rxq_bsd_cast(rxq_);
>>>> - poll_fd_wait(rxq->fd, POLLIN);
>>>> + poll_fd_wait(rxq->fd, OVS_POLLIN);
>>>> }
>>>> /* Discards all packets waiting to be received from 'rxq'. */
>>>> @@ -752,7 +752,7 @@ netdev_bsd_send_wait(struct netdev *netdev_, int
>>>> qid OVS_UNUSED)
>>>> /* TAP device always accepts packets. */
>>>> poll_immediate_wake();
>>>> } else if (dev->pcap) {
>>>> - poll_fd_wait(dev->fd, POLLOUT);
>>>> + poll_fd_wait(dev->fd, OVS_POLLOUT);
>>>> } else {
>>>> /* We haven't even tried to send a packet yet. */
>>>> poll_immediate_wake();
>>>> diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
>>>> index 6add3e2fc..d0dc00d97 100644
>>>> --- a/lib/netdev-linux.c
>>>> +++ b/lib/netdev-linux.c
>>>> @@ -808,7 +808,7 @@ netdev_linux_wait(const struct netdev_class
>>>> *netdev_class OVS_UNUSED)
>>>> }
>>>> sock = netdev_linux_notify_sock();
>>>> if (sock) {
>>>> - nl_sock_wait(sock, POLLIN);
>>>> + nl_sock_wait(sock, OVS_POLLIN);
>>>> }
>>>> }
>>>> @@ -1465,7 +1465,7 @@ static void
>>>> netdev_linux_rxq_wait(struct netdev_rxq *rxq_)
>>>> {
>>>> struct netdev_rxq_linux *rx = netdev_rxq_linux_cast(rxq_);
>>>> - poll_fd_wait(rx->fd, POLLIN);
>>>> + poll_fd_wait(rx->fd, OVS_POLLIN);
>>>> }
>>>> static int
>>>> diff --git a/lib/netlink-notifier.c b/lib/netlink-notifier.c
>>>> index dfecb9778..1747274de 100644
>>>> --- a/lib/netlink-notifier.c
>>>> +++ b/lib/netlink-notifier.c
>>>> @@ -1,4 +1,5 @@
>>>> /*
>>>> +
>>>> * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2016 Nicira, Inc.
>>>> *
>>>> * Licensed under the Apache License, Version 2.0 (the "License");
>>>> @@ -27,6 +28,7 @@
>>>> #include "netlink-socket.h"
>>>> #include "openvswitch/ofpbuf.h"
>>>> #include "openvswitch/vlog.h"
>>>> +#include "openvswitch/poll-loop.h"
>>>> VLOG_DEFINE_THIS_MODULE(netlink_notifier);
>>>> @@ -219,7 +221,7 @@ nln_wait(struct nln *nln)
>>>> {
>>>> nln->has_run = false;
>>>> if (nln->notify_sock) {
>>>> - nl_sock_wait(nln->notify_sock, POLLIN);
>>>> + nl_sock_wait(nln->notify_sock, OVS_POLLIN);
>>>> }
>>>> }
>>>> diff --git a/lib/poll-loop.c b/lib/poll-loop.c
>>>> index 4e751ff2c..3902d6c1f 100644
>>>> --- a/lib/poll-loop.c
>>>> +++ b/lib/poll-loop.c
>>>> @@ -80,7 +80,7 @@ find_poll_node(struct poll_loop *loop, int fd,
>>>> HANDLE wevent)
>>>> /* On Unix based systems:
>>>> *
>>>> * Registers 'fd' as waiting for the specified 'events' (which
>>>> should be
>>>> - * POLLIN or POLLOUT or POLLIN | POLLOUT). The following call to
>>>> + * OVS_POLLIN or OVS_POLLOUT or OVS_POLLIN | OVS_POLLOUT). The
>>>> following call to
>>>> * poll_block() will wake up when 'fd' becomes ready for one or
>>>> more of the
>>>> * requested events. The 'fd's are given to poll() function later.
>>>> *
>>>> @@ -130,8 +130,8 @@ poll_create_node(int fd, HANDLE wevent, short int
>>>> events, const char *where)
>>>> }
>>>> }
>>>> -/* Registers 'fd' as waiting for the specified 'events' (which
>>>> should be POLLIN
>>>> - * or POLLOUT or POLLIN | POLLOUT). The following call to
>>>> poll_block() will
>>>> +/* Registers 'fd' as waiting for the specified 'events' (which
>>>> should be OVS_POLLIN
>>>> + * or OVS_POLLOUT or OVS_POLLIN | OVS_POLLOUT). The following call
>>>> to poll_block() will
>>>> * wake up when 'fd' becomes ready for one or more of the requested
>>>> events.
>>>> *
>>>> * On Windows, 'fd' must be a socket.
>>>> @@ -265,20 +265,20 @@ log_wakeup(const char *where, const struct
>>>> pollfd *pollfd, int timeout)
>>>> ds_put_cstr(&s, "wakeup due to ");
>>>> if (pollfd) {
>>>> char *description = describe_fd(pollfd->fd);
>>>> - if (pollfd->revents & POLLIN) {
>>>> - ds_put_cstr(&s, "[POLLIN]");
>>>> + if (pollfd->revents & OVS_POLLIN) {
>>>> + ds_put_cstr(&s, "[OVS_POLLIN]");
>>>> }
>>>> - if (pollfd->revents & POLLOUT) {
>>>> - ds_put_cstr(&s, "[POLLOUT]");
>>>> + if (pollfd->revents & OVS_POLLOUT) {
>>>> + ds_put_cstr(&s, "[OVS_POLLOUT]");
>>>> }
>>>> - if (pollfd->revents & POLLERR) {
>>>> - ds_put_cstr(&s, "[POLLERR]");
>>>> + if (pollfd->revents & OVS_POLLERR) {
>>>> + ds_put_cstr(&s, "[OVS_POLLERR]");
>>>> }
>>>> - if (pollfd->revents & POLLHUP) {
>>>> - ds_put_cstr(&s, "[POLLHUP]");
>>>> + if (pollfd->revents & OVS_POLLHUP) {
>>>> + ds_put_cstr(&s, "[OVS_POLLHUP]");
>>>> }
>>>> - if (pollfd->revents & POLLNVAL) {
>>>> - ds_put_cstr(&s, "[POLLNVAL]");
>>>> + if (pollfd->revents & OVS_POLLNVAL) {
>>>> + ds_put_cstr(&s, "[OVS_POLLNVAL]");
>>>> }
>>>> ds_put_format(&s, " on fd %d (%s)", pollfd->fd, description);
>>>> free(description);
>>>> @@ -349,10 +349,10 @@ poll_block(void)
>>>> wevents[i] = node->wevent;
>>>> if (node->pollfd.fd && node->wevent) {
>>>> short int wsa_events = 0;
>>>> - if (node->pollfd.events & POLLIN) {
>>>> + if (node->pollfd.events & OVS_POLLIN) {
>>>> wsa_events |= FD_READ | FD_ACCEPT | FD_CLOSE;
>>>> }
>>>> - if (node->pollfd.events & POLLOUT) {
>>>> + if (node->pollfd.events & OVS_POLLOUT) {
>>>> wsa_events |= FD_WRITE | FD_CONNECT | FD_CLOSE;
>>>> }
>>>> WSAEventSelect(node->pollfd.fd, node->wevent, wsa_events);
>>>> diff --git a/lib/process.c b/lib/process.c
>>>> index 78de4b8df..7a7f182e1 100644
>>>> --- a/lib/process.c
>>>> +++ b/lib/process.c
>>>> @@ -592,7 +592,7 @@ process_wait(struct process *p)
>>>> if (p->exited) {
>>>> poll_immediate_wake();
>>>> } else {
>>>> - poll_fd_wait(fds[0], POLLIN);
>>>> + poll_fd_wait(fds[0], OVS_POLLIN);
>>>> }
>>>> #else
>>>> OVS_NOT_REACHED();
>>>> diff --git a/lib/route-table-bsd.c b/lib/route-table-bsd.c
>>>> index 34d42cfab..3dfa80c7f 100644
>>>> --- a/lib/route-table-bsd.c
>>>> +++ b/lib/route-table-bsd.c
>>>> @@ -113,7 +113,7 @@ retry:
>>>> memset(&pfd, 0, sizeof(pfd));
>>>> pfd.fd = rtsock;
>>>> - pfd.events = POLLIN;
>>>> + pfd.events = OVS_POLLIN;
>>>> /*
>>>> * The timeout value below is somehow arbitrary.
>>>> * It's to detect the lost of routing messages due to
>>>> diff --git a/lib/rtbsd.c b/lib/rtbsd.c
>>>> index 564595c3a..aa0fa0860 100644
>>>> --- a/lib/rtbsd.c
>>>> +++ b/lib/rtbsd.c
>>>> @@ -159,7 +159,7 @@ rtbsd_notifier_wait(void)
>>>> {
>>>> ovs_mutex_lock(&rtbsd_mutex);
>>>> if (notify_sock >= 0) {
>>>> - poll_fd_wait(notify_sock, POLLIN);
>>>> + poll_fd_wait(notify_sock, OVS_POLLIN);
>>>> }
>>>> ovs_mutex_unlock(&rtbsd_mutex);
>>>> }
>>>> diff --git a/lib/socket-util.c b/lib/socket-util.c
>>>> index 4f1ffecf5..d37867365 100644
>>>> --- a/lib/socket-util.c
>>>> +++ b/lib/socket-util.c
>>>> @@ -259,7 +259,7 @@ check_connection_completion(int fd)
>>>> int retval;
>>>> pfd.fd = fd;
>>>> - pfd.events = POLLOUT;
>>>> + pfd.events = OVS_POLLOUT;
>>>> #ifndef _WIN32
>>>> do {
>>>> @@ -280,17 +280,17 @@ check_connection_completion(int fd)
>>>> pfd.revents |= pfd.events;
>>>> }
>>>> if (FD_ISSET(fd, &exset)) {
>>>> - pfd.revents |= POLLERR;
>>>> + pfd.revents |= OVS_POLLERR;
>>>> }
>>>> }
>>>> #endif
>>>> if (retval == 1) {
>>>> - if (pfd.revents & (POLLERR | POLLHUP)) {
>>>> + if (pfd.revents & (OVS_POLLERR | OVS_POLLHUP)) {
>>>> ssize_t n = send(fd, "", 1, 0);
>>>> if (n < 0) {
>>>> return sock_errno();
>>>> } else {
>>>> - VLOG_ERR_RL(&rl, "poll return POLLERR but send
>>>> succeeded");
>>>> + VLOG_ERR_RL(&rl, "poll return OVS_POLLERR but send
>>>> succeeded");
>>>> return EPROTO;
>>>> }
>>>> }
>>>> diff --git a/lib/stream-fd.c b/lib/stream-fd.c
>>>> index 46ee7ae27..62f768d45 100644
>>>> --- a/lib/stream-fd.c
>>>> +++ b/lib/stream-fd.c
>>>> @@ -150,11 +150,11 @@ fd_wait(struct stream *stream, enum
>>>> stream_wait_type wait)
>>>> switch (wait) {
>>>> case STREAM_CONNECT:
>>>> case STREAM_SEND:
>>>> - poll_fd_wait(s->fd, POLLOUT);
>>>> + poll_fd_wait(s->fd, OVS_POLLOUT);
>>>> break;
>>>> case STREAM_RECV:
>>>> - poll_fd_wait(s->fd, POLLIN);
>>>> + poll_fd_wait(s->fd, OVS_POLLIN);
>>>> break;
>>>> default:
>>>> @@ -271,7 +271,7 @@ static void
>>>> pfd_wait(struct pstream *pstream)
>>>> {
>>>> struct fd_pstream *ps = fd_pstream_cast(pstream);
>>>> - poll_fd_wait(ps->fd, POLLIN);
>>>> + poll_fd_wait(ps->fd, OVS_POLLIN);
>>>> }
>>>> static const struct pstream_class fd_pstream_class = {
>>>> diff --git a/lib/stream-ssl.c b/lib/stream-ssl.c
>>>> index 078fcbc3a..3b7f9865e 100644
>>>> --- a/lib/stream-ssl.c
>>>> +++ b/lib/stream-ssl.c
>>>> @@ -210,10 +210,10 @@ want_to_poll_events(int want)
>>>> OVS_NOT_REACHED();
>>>> case SSL_READING:
>>>> - return POLLIN;
>>>> + return OVS_POLLIN;
>>>> case SSL_WRITING:
>>>> - return POLLOUT;
>>>> + return OVS_POLLOUT;
>>>> default:
>>>> OVS_NOT_REACHED();
>>>> @@ -811,7 +811,7 @@ ssl_wait(struct stream *stream, enum
>>>> stream_wait_type wait)
>>>> } else {
>>>> switch (sslv->state) {
>>>> case STATE_TCP_CONNECTING:
>>>> - poll_fd_wait(sslv->fd, POLLOUT);
>>>> + poll_fd_wait(sslv->fd, OVS_POLLOUT);
>>>> break;
>>>> case STATE_SSL_CONNECTING:
>>>> @@ -965,7 +965,7 @@ static void
>>>> pssl_wait(struct pstream *pstream)
>>>> {
>>>> struct pssl_pstream *pssl = pssl_pstream_cast(pstream);
>>>> - poll_fd_wait(pssl->fd, POLLIN);
>>>> + poll_fd_wait(pssl->fd, OVS_POLLIN);
>>>> }
>>>> const struct pstream_class pssl_pstream_class = {
>>>> diff --git a/manpages.mk b/manpages.mk
>>>> index dc201484c..54a3a82ad 100644
>>>> --- a/manpages.mk
>>>> +++ b/manpages.mk
>>>> @@ -104,7 +104,6 @@ utilities/bugtool/ovs-bugtool.8: \
>>>> utilities/bugtool/ovs-bugtool.8.in:
>>>> lib/ovs.tmac:
>>>> -
>>>> utilities/ovs-dpctl-top.8: \
>>>> utilities/ovs-dpctl-top.8.in \
>>>> lib/ovs.tmac
>>>> @@ -155,8 +154,6 @@ lib/common-syn.man:
>>>> lib/common.man:
>>>> lib/ovs.tmac:
>>>> -lib/ovs.tmac:
>>>> -
>>>> utilities/ovs-testcontroller.8: \
>>>> utilities/ovs-testcontroller.8.in \
>>>> lib/common.man \
>>>> diff --git a/tests/test-netflow.c b/tests/test-netflow.c
>>>> index d2322d450..90516d274 100644
>>>> --- a/tests/test-netflow.c
>>>> +++ b/tests/test-netflow.c
>>>> @@ -229,7 +229,7 @@ test_netflow_main(int argc, char *argv[])
>>>> break;
>>>> }
>>>> - poll_fd_wait(sock, POLLIN);
>>>> + poll_fd_wait(sock, OVS_POLLIN);
>>>> unixctl_server_wait(server);
>>>> poll_block();
>>>> }
>>>> diff --git a/tests/test-sflow.c b/tests/test-sflow.c
>>>> index 460d4d6c5..ae169e726 100644
>>>> --- a/tests/test-sflow.c
>>>> +++ b/tests/test-sflow.c
>>>> @@ -739,7 +739,7 @@ test_sflow_main(int argc, char *argv[])
>>>> break;
>>>> }
>>>> - poll_fd_wait(sock, POLLIN);
>>>> + poll_fd_wait(sock, OVS_POLLIN);
>>>> unixctl_server_wait(server);
>>>> poll_block();
>>>> }
>>>> diff --git a/utilities/nlmon.c b/utilities/nlmon.c
>>>> index 32aa948c6..e8c6bfa24 100644
>>>> --- a/utilities/nlmon.c
>>>> +++ b/utilities/nlmon.c
>>>> @@ -141,7 +141,7 @@ main(int argc OVS_UNUSED, char *argv[])
>>>> }
>>>> }
>>>> - nl_sock_wait(sock, POLLIN);
>>>> + nl_sock_wait(sock, OVS_POLLIN);
>>>> poll_block();
>>>> }
>>>> }
>>>>
>>>
>>>
>>
>
>
--
Anton R. Ivanov
Cambridgegreys Limited. Registered in England. Company Number 10273661
https://www.cambridgegreys.com/
More information about the dev
mailing list