[libvirt] [PATCH] conf: Don't inline virDomainNetTypeSharesHostView()

Andrea Bolognani posted 1 patch 6 years, 5 months ago
Failed in applying to current master (apply log)
src/conf/domain_conf.c   | 35 +++++++++++++++++++++++++++++++++++
src/conf/domain_conf.h   | 36 ++----------------------------------
src/libvirt_private.syms |  1 +
3 files changed, 38 insertions(+), 34 deletions(-)
[libvirt] [PATCH] conf: Don't inline virDomainNetTypeSharesHostView()
Posted by Andrea Bolognani 6 years, 5 months ago
Introduced in d86fd2402e9d. Fails to compile on aarch64 with

  qemu/qemu_driver.c: In function 'qemuDomainSetInterfaceParameters':
  ./conf/domain_conf.h:3406:1: error: inlining failed in call to
    'virDomainNetTypeSharesHostView': call is unlikely and code size
    would grow [-Werror=inline]
   virDomainNetTypeSharesHostView(const virDomainNetDef *net)
   ^
  qemu/qemu_driver.c:11240:66: error: called from here [-Werror=inline]
          !virDomainNetTypeSharesHostView(net)) < 0 ||
                                         ^

Solve the issue by turning it into a regular function.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 src/conf/domain_conf.c   | 35 +++++++++++++++++++++++++++++++++++
 src/conf/domain_conf.h   | 36 ++----------------------------------
 src/libvirt_private.syms |  1 +
 3 files changed, 38 insertions(+), 34 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index f9ae05769..2b06250df 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -28091,3 +28091,38 @@ virDomainGenerateMachineName(const char *drivername,
     virBufferCheckError(&buf);
     return virBufferContentAndReset(&buf);
 }
+
+/**
+ * virDomainNetTypeSharesHostView:
+ * @net: interface
+ *
+ * Some types of interfaces "share" the host view. For instance,
+ * for macvtap interface, every domain RX is the host RX too. And
+ * every domain TX is host TX too. IOW, for some types of
+ * interfaces guest and host are on the same side of RX/TX
+ * barrier. This is important so that we set up QoS correctly and
+ * report proper stats.
+ */
+bool
+virDomainNetTypeSharesHostView(const virDomainNetDef *net)
+{
+    virDomainNetType actualType = virDomainNetGetActualType(net);
+    switch (actualType) {
+    case VIR_DOMAIN_NET_TYPE_DIRECT:
+    case VIR_DOMAIN_NET_TYPE_ETHERNET:
+        return true;
+    case VIR_DOMAIN_NET_TYPE_USER:
+    case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
+    case VIR_DOMAIN_NET_TYPE_SERVER:
+    case VIR_DOMAIN_NET_TYPE_CLIENT:
+    case VIR_DOMAIN_NET_TYPE_MCAST:
+    case VIR_DOMAIN_NET_TYPE_NETWORK:
+    case VIR_DOMAIN_NET_TYPE_BRIDGE:
+    case VIR_DOMAIN_NET_TYPE_INTERNAL:
+    case VIR_DOMAIN_NET_TYPE_HOSTDEV:
+    case VIR_DOMAIN_NET_TYPE_UDP:
+    case VIR_DOMAIN_NET_TYPE_LAST:
+        break;
+    }
+    return false;
+}
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 0def905b2..7f21f9871 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -3391,40 +3391,8 @@ virDomainGenerateMachineName(const char *drivername,
                              int id,
                              const char *name,
                              bool privileged);
-/**
- * virDomainNetTypeSharesHostView:
- * @net: interface
- *
- * Some types of interfaces "share" the host view. For instance,
- * for macvtap interface, every domain RX is the host RX too. And
- * every domain TX is host TX too. IOW, for some types of
- * interfaces guest and host are on the same side of RX/TX
- * barrier. This is important so that we set up QoS correctly and
- * report proper stats.
- */
-static inline bool
-virDomainNetTypeSharesHostView(const virDomainNetDef *net)
-{
-    virDomainNetType actualType = virDomainNetGetActualType(net);
-    switch (actualType) {
-    case VIR_DOMAIN_NET_TYPE_DIRECT:
-    case VIR_DOMAIN_NET_TYPE_ETHERNET:
-        return true;
-    case VIR_DOMAIN_NET_TYPE_USER:
-    case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
-    case VIR_DOMAIN_NET_TYPE_SERVER:
-    case VIR_DOMAIN_NET_TYPE_CLIENT:
-    case VIR_DOMAIN_NET_TYPE_MCAST:
-    case VIR_DOMAIN_NET_TYPE_NETWORK:
-    case VIR_DOMAIN_NET_TYPE_BRIDGE:
-    case VIR_DOMAIN_NET_TYPE_INTERNAL:
-    case VIR_DOMAIN_NET_TYPE_HOSTDEV:
-    case VIR_DOMAIN_NET_TYPE_UDP:
-    case VIR_DOMAIN_NET_TYPE_LAST:
-        break;
-    }
-    return false;
-}
+
+bool virDomainNetTypeSharesHostView(const virDomainNetDef *net);
 
 bool
 virDomainDefLifecycleActionAllowed(virDomainLifecycle type,
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 2e67366b7..36cd5b55b 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -446,6 +446,7 @@ virDomainNetInsert;
 virDomainNetRemove;
 virDomainNetRemoveHostdev;
 virDomainNetTypeFromString;
+virDomainNetTypeSharesHostView;
 virDomainNetTypeToString;
 virDomainNostateReasonTypeFromString;
 virDomainNostateReasonTypeToString;
-- 
2.13.6

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] conf: Don't inline virDomainNetTypeSharesHostView()
Posted by Ján Tomko 6 years, 5 months ago
On Mon, Nov 06, 2017 at 02:11:30PM +0100, Andrea Bolognani wrote:
>Introduced in d86fd2402e9d. Fails to compile on aarch64 with
>
>  qemu/qemu_driver.c: In function 'qemuDomainSetInterfaceParameters':
>  ./conf/domain_conf.h:3406:1: error: inlining failed in call to
>    'virDomainNetTypeSharesHostView': call is unlikely and code size
>    would grow [-Werror=inline]
>   virDomainNetTypeSharesHostView(const virDomainNetDef *net)
>   ^
>  qemu/qemu_driver.c:11240:66: error: called from here [-Werror=inline]
>          !virDomainNetTypeSharesHostView(net)) < 0 ||
>                                         ^
>
>Solve the issue by turning it into a regular function.
>
>Signed-off-by: Andrea Bolognani <abologna@redhat.com>
>---
> src/conf/domain_conf.c   | 35 +++++++++++++++++++++++++++++++++++
> src/conf/domain_conf.h   | 36 ++----------------------------------
> src/libvirt_private.syms |  1 +
> 3 files changed, 38 insertions(+), 34 deletions(-)
>

NACK, this version disrupts the serenity of whitespace.

https://www.redhat.com/archives/libvir-list/2017-November/msg00076.html

Jan
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] conf: Don't inline virDomainNetTypeSharesHostView()
Posted by Jiri Denemark 6 years, 5 months ago
On Mon, Nov 06, 2017 at 14:11:30 +0100, Andrea Bolognani wrote:
> Introduced in d86fd2402e9d. Fails to compile on aarch64 with
> 
>   qemu/qemu_driver.c: In function 'qemuDomainSetInterfaceParameters':
>   ./conf/domain_conf.h:3406:1: error: inlining failed in call to
>     'virDomainNetTypeSharesHostView': call is unlikely and code size
>     would grow [-Werror=inline]
>    virDomainNetTypeSharesHostView(const virDomainNetDef *net)
>    ^
>   qemu/qemu_driver.c:11240:66: error: called from here [-Werror=inline]
>           !virDomainNetTypeSharesHostView(net)) < 0 ||
>                                          ^
> 
> Solve the issue by turning it into a regular function.

Already pushed as

commit bce925dadaf8fe4693abee88fb68aa7ede9d209e
Refs: [master], {origin/master}, {origin/HEAD}, v3.9.0-39-gbce925dad
Author:     Jiri Denemark <jdenemar@redhat.com>
AuthorDate: Thu Nov 2 19:58:00 2017 +0100
Commit:     Jiri Denemark <jdenemar@redhat.com>
CommitDate: Mon Nov 6 10:58:46 2017 +0100

    conf: Don't inline virDomainNetTypeSharesHostView

    When coverage build is enabled, gcc complains about it:

    In file included from qemu/qemu_agent.h:29:0,
                     from qemu/qemu_driver.c:47:
    qemu/qemu_driver.c: In function 'qemuDomainSetInterfaceParameters':
    ./conf/domain_conf.h:3397:1: error: inlining failed in call to
    'virDomainNetTypeSharesHostView': call is unlikely and code size would
    grow [-Werror=inline]
     virDomainNetTypeSharesHostView(const virDomainNetDef *net)
     ^

    Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

Jirka

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list