Hello community, here is the log from the commit of package quota for openSUSE:Factory checked in at 2018-08-18 00:02:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/quota (Old) and /work/SRC/openSUSE:Factory/.quota.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "quota" Sat Aug 18 00:02:31 2018 rev:53 rq:629380 version:4.04 Changes: -------- --- /work/SRC/openSUSE:Factory/quota/quota.changes 2018-03-13 10:24:03.041744283 +0100 +++ /work/SRC/openSUSE:Factory/.quota.new/quota.changes 2018-08-18 00:02:58.278872537 +0200 @@ -1,0 +2,6 @@ +Wed Aug 15 10:57:33 UTC 2018 - tchva...@suse.com + +- Add patch to fix high cpu load bsc#1104898: + * quota-4.04-Listen-on-a-TCP-socket.patch + +------------------------------------------------------------------- New: ---- quota-4.04-Listen-on-a-TCP-socket.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ quota.spec ++++++ --- /var/tmp/diff_new_pack.uDatGq/_old 2018-08-18 00:02:58.966874592 +0200 +++ /var/tmp/diff_new_pack.uDatGq/_new 2018-08-18 00:02:58.986874652 +0200 @@ -31,6 +31,7 @@ Source1: sysconfig.nfs-quota Source2: quotad.service Source3: quotad_env.sh +Patch1: quota-4.04-Listen-on-a-TCP-socket.patch Patch2: %{name}-4.01-warnquota.patch BuildRequires: e2fsprogs-devel BuildRequires: openldap2-devel @@ -65,6 +66,7 @@ %prep %setup -q +%patch1 -p1 %patch2 %build ++++++ quota-4.04-Listen-on-a-TCP-socket.patch ++++++ >From 31ecd29b3b3f51145fd78f63087c10e9fcadf999 Mon Sep 17 00:00:00 2001 From: Steve Dickson <ste...@redhat.com> Date: Tue, 22 May 2018 12:41:59 +0200 Subject: [PATCH] Listen on a TCP socket MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rpc.rquotad spins in libtirpc's rendezvous_request() on accepting TCP connections because the polled TCP socket is not listening: poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 4, -1) = 2 ([{fd=5, revents=POLLHUP}, {fd=7, revents=POLLHUP}]) accept(5, 0x7ffe61698700, [128]) = -1 EINVAL (Invalid argument) accept(7, 0x7ffe61698700, [128]) = -1 EINVAL (Invalid argument) The polled descriptors are: rpc.rquot 21981 root 4u IPv4 80449159 0t0 UDP *:rquotad rpc.rquot 21981 root 5u sock 0,9 0t0 80449162 protocol: TCP rpc.rquot 21981 root 6u IPv6 80449165 0t0 UDP *:rquotad rpc.rquot 21981 root 7u sock 0,9 0t0 80449168 protocol: TCPv6 That results into a high CPU usage just after staring rpc.rquotad process. This patch adds a listen() call to svc_create_sock() routine which is needed with libtirpc version of svc_tli_create() as well as a needed IPv6 setsockopt(). Signed-off-by: Petr Písař <ppi...@redhat.com> --- svc_socket.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/svc_socket.c b/svc_socket.c index 8a44604..d2e3abf 100644 --- a/svc_socket.c +++ b/svc_socket.c @@ -118,6 +118,15 @@ static int svc_create_sock(struct addrinfo *ai) return -1; } + if (ai->ai_family == AF_INET6) { + if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, + &optval, sizeof(optval)) < 0) { + errstr(_("Cannot set IPv6 socket options: %s\n"), strerror(errno)); + close(fd); + return -1; + } + } + if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) < 0) { errstr(_("Cannot set socket options: %s\n"), strerror(errno)); close(fd); @@ -129,6 +138,15 @@ static int svc_create_sock(struct addrinfo *ai) close(fd); return -1; } + + if (ai->ai_protocol == IPPROTO_TCP) { + if (listen(fd, SOMAXCONN) < 0) { + errstr(_("Cannot listen to address: %s\n"), strerror(errno)); + close(fd); + return -1; + } + } + return fd; } -- 2.14.3