From nobody Thu May 2 07:29:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1499821402876607.8846104089561; Tue, 11 Jul 2017 18:03:22 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 88DC281226; Wed, 12 Jul 2017 01:03:19 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 80AAA600CE; Wed, 12 Jul 2017 01:03:18 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 9F8DC1800C8B; Wed, 12 Jul 2017 01:03:15 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v6C13E5r027292 for ; Tue, 11 Jul 2017 21:03:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id 1577060600; Wed, 12 Jul 2017 01:03:14 +0000 (UTC) Received: from mx1.redhat.com (ext-mx10.extmail.prod.ext.phx2.redhat.com [10.5.110.39]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0E87560A98 for ; Wed, 12 Jul 2017 01:03:12 +0000 (UTC) Received: from mxhk.zte.com.cn (mxhk.zte.com.cn [63.217.80.70]) by mx1.redhat.com (Postfix) with ESMTP id 5AF7C5D686 for ; Wed, 12 Jul 2017 01:03:03 +0000 (UTC) Received: from unknown (HELO mse01.zte.com.cn) (10.30.3.20) by localhost with (AES256-SHA encrypted) SMTP; 12 Jul 2017 00:53:34 -0000 Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id v6C12rLO027333 for ; Wed, 12 Jul 2017 09:02:53 +0800 (GMT-8) (envelope-from lu.zhipeng@zte.com.cn) Received: from ceshi.localdomain ([10.74.120.130]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2017071209025655-3701000 ; Wed, 12 Jul 2017 09:02:56 +0800 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 88DC281226 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=zte.com.cn Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 88DC281226 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5AF7C5D686 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=zte.com.cn Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=lu.zhipeng@zte.com.cn DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 5AF7C5D686 X-scanvirus: By SEG_CYREN AntiVirus Engine X-scanresult: CLEAN X-MAILFROM: X-RCPTTO: X-FROMIP: 10.30.3.20 X-SEG-Scaned: 1 X-Received: unknown,10.30.3.20,20170712085334 From: ZhiPeng Lu To: libvir-list@redhat.com Date: Wed, 12 Jul 2017 09:01:40 +0800 Message-Id: <1499821300-9249-1-git-send-email-lu.zhipeng@zte.com.cn> X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-07-12 09:02:56, Serialize by Router on notes_smtp/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2017-07-12 09:02:45, Serialize complete at 2017-07-12 09:02:45 X-MAIL: mse01.zte.com.cn v6C12rLO027333 X-HQIP: 127.0.0.1 X-Greylist: Sender passed SPF test, Sender IP whitelisted by DNSRBL, ACL 203 matched, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Wed, 12 Jul 2017 01:03:04 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Wed, 12 Jul 2017 01:03:04 +0000 (UTC) for IP:'63.217.80.70' DOMAIN:'mxhk.zte.com.cn' HELO:'mxhk.zte.com.cn' FROM:'lu.zhipeng@zte.com.cn' RCPT:'' X-RedHat-Spam-Score: -1.502 (BAYES_50, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, SPF_PASS) 63.217.80.70 mxhk.zte.com.cn 63.217.80.70 mxhk.zte.com.cn X-Scanned-By: MIMEDefang 2.78 on 10.5.110.39 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Cc: ZhiPeng Lu Subject: [libvirt] [PATCH v2] network: allow to specify buffer size for netlink socket X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Wed, 12 Jul 2017 01:03:20 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" This patchs allow to set the buffer size for netlink socket in the libvirtd configuration file. The default buffer size remain as before at 128k. Signed-off-by: Zhipeng Lu --- daemon/libvirtd-config.c | 6 ++++++ daemon/libvirtd-config.h | 2 ++ daemon/libvirtd.aug | 1 + daemon/libvirtd.c | 12 ++++++++++++ daemon/libvirtd.conf | 3 +++ daemon/test_libvirtd.aug.in | 1 + src/libvirt_private.syms | 1 + src/util/virnetlink.c | 19 ++++++++++++++++++- src/util/virnetlink.h | 7 ++++++- 9 files changed, 50 insertions(+), 2 deletions(-) diff --git a/daemon/libvirtd-config.c b/daemon/libvirtd-config.c index 6c0f00e..b2bda28 100644 --- a/daemon/libvirtd-config.c +++ b/daemon/libvirtd-config.c @@ -33,6 +33,7 @@ #include "remote/remote_protocol.h" #include "remote/remote_driver.h" #include "util/virnetdevopenvswitch.h" +#include "util/virnetlink.h" #include "virstring.h" #include "virutil.h" =20 @@ -172,6 +173,8 @@ daemonConfigNew(bool privileged ATTRIBUTE_UNUSED) data->admin_keepalive_count =3D 5; =20 data->ovs_timeout =3D VIR_NETDEV_OVS_DEFAULT_TIMEOUT; + =20 + data->netlink_sock_buffer_size =3D VIRT_NETLINK_SOCK_BUFFER_SIZE; =20 localhost =3D virGetHostname(); if (localhost =3D=3D NULL) { @@ -394,6 +397,9 @@ daemonConfigLoadOptions(struct daemonConfig *data, if (virConfGetValueUInt(conf, "ovs_timeout", &data->ovs_timeout) < 0) goto error; =20 + if (virConfGetValueUInt(conf, "netlink_sock_buffer_size", &data->netli= nk_sock_buffer_size) < 0) + goto error; + return 0; =20 error: diff --git a/daemon/libvirtd-config.h b/daemon/libvirtd-config.h index 1edf5fa..22befd1 100644 --- a/daemon/libvirtd-config.h +++ b/daemon/libvirtd-config.h @@ -94,6 +94,8 @@ struct daemonConfig { unsigned int admin_keepalive_count; =20 unsigned int ovs_timeout; + =20 + unsigned int netlink_sock_buffer_size; }; =20 =20 diff --git a/daemon/libvirtd.aug b/daemon/libvirtd.aug index 24fdf44..84ea00a 100644 --- a/daemon/libvirtd.aug +++ b/daemon/libvirtd.aug @@ -89,6 +89,7 @@ module Libvirtd =3D let misc_entry =3D str_entry "host_uuid" | str_entry "host_uuid_source" | int_entry "ovs_timeout" + | int_entry "netlink_sock_buffer_size" =20 (* Each enty in the config is one of the following three ... *) let entry =3D network_entry diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c index a558458..34db23a 100644 --- a/daemon/libvirtd.c +++ b/daemon/libvirtd.c @@ -648,6 +648,16 @@ daemonSetupNetDevOpenvswitch(struct daemonConfig *conf= ig) =20 =20 /* + * Set up the netlink socket buffer size + */ +static void +daemonSetupNetLink(struct daemonConfig *config) +{ + virNetLinkSetBufferSize(config->netlink_sock_buffer_size); +} + + +/* * Set up the logging environment * By default if daemonized all errors go to the logfile libvirtd.log, * but if verbose or error debugging is asked for then also output @@ -1257,6 +1267,8 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } =20 + daemonSetupNetLink(config); + daemonSetupNetDevOpenvswitch(config); =20 if (daemonSetupAccessManager(config) < 0) { diff --git a/daemon/libvirtd.conf b/daemon/libvirtd.conf index e83e9a1..b174767 100644 --- a/daemon/libvirtd.conf +++ b/daemon/libvirtd.conf @@ -476,3 +476,6 @@ # potential infinite waits blocking libvirt. # #ovs_timeout =3D 5 + +# This allow to specify buffer size for netlink socket. +#netlink_sock_buffer_size =3D 131072 diff --git a/daemon/test_libvirtd.aug.in b/daemon/test_libvirtd.aug.in index 1200952..0a1207f 100644 --- a/daemon/test_libvirtd.aug.in +++ b/daemon/test_libvirtd.aug.in @@ -64,3 +64,4 @@ module Test_libvirtd =3D { "admin_keepalive_interval" =3D "5" } { "admin_keepalive_count" =3D "5" } { "ovs_timeout" =3D "5" } + { "netlink_sock_buffer_size" =3D "131072" } diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 888412a..83be39d 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2248,6 +2248,7 @@ virNetlinkEventServiceStart; virNetlinkEventServiceStop; virNetlinkEventServiceStopAll; virNetlinkGetErrorCode; +virNetLinkSetBufferSize; virNetlinkShutdown; virNetlinkStartup; =20 diff --git a/src/util/virnetlink.c b/src/util/virnetlink.c index d732fe8..0a549b7 100644 --- a/src/util/virnetlink.c +++ b/src/util/virnetlink.c @@ -49,6 +49,7 @@ VIR_LOG_INIT("util.netlink"); =20 #define NETLINK_ACK_TIMEOUT_S (2*1000) =20 + #if defined(__linux__) && defined(HAVE_LIBNL) /* State for a single netlink event handle */ struct virNetlinkEventHandle { @@ -104,6 +105,22 @@ static int nextWatch =3D 1; static virNetlinkEventSrvPrivatePtr server[MAX_LINKS] =3D {NULL}; static virNetlinkHandle *placeholder_nlhandle; =20 +/* + * Set netlink default buffer size + */ +static unsigned int virNetLinkBufferSize =3D VIRT_NETLINK_SOCK_BUFFER_SIZE= ;=20 + +/** + * virNetLinkSetBufferSize: + * @size: the buffer size + * + * Set netlink socket buffer size + */ +void +virNetLinkSetBufferSize(unsigned int size) +{ + virNetLinkBufferSize =3D size; +} /* Function definitions */ =20 /** @@ -189,7 +206,7 @@ virNetlinkCreateSocket(int protocol) goto error; } =20 - if (virNetlinkSetBufferSize(nlhandle, 131702, 0) < 0) { + if (virNetlinkSetBufferSize(nlhandle, virNetLinkBufferSize, 0) < 0) { virReportSystemError(errno, "%s", _("cannot set netlink socket buffer " "size to 128k")); diff --git a/src/util/virnetlink.h b/src/util/virnetlink.h index 088b013..2d6e762 100644 --- a/src/util/virnetlink.h +++ b/src/util/virnetlink.h @@ -22,7 +22,6 @@ =20 # include "internal.h" # include "virmacaddr.h" - # if defined(__linux__) && defined(HAVE_LIBNL) =20 /* Work around a bug where older libnl-1 headers expected older gcc @@ -44,6 +43,8 @@ struct nlmsghdr; =20 # endif /* __linux__ */ =20 +#define VIRT_NETLINK_SOCK_BUFFER_SIZE (131072) + int virNetlinkStartup(void); void virNetlinkShutdown(void); =20 @@ -120,5 +121,9 @@ int virNetlinkEventAddClient(virNetlinkEventHandleCallb= ack handleCB, */ int virNetlinkEventRemoveClient(int watch, const virMacAddr *macaddr, unsigned int protocol); +/** + *virNetLinkSetBufferSize: set netlink socket buffer size + */ +void virNetLinkSetBufferSize(unsigned int size); =20 #endif /* __VIR_NETLINK_H__ */ --=20 1.8.3.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list