Skip to contentSkip to conversation

net: fix vhost-user mingw compilation

PATCH In review Nikolay Nikolaev 2 participants 6 messages Jun 18, 2014 – Jun 19, 2014 Networking

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 net: fix vhost-user mingw compilation

Make net.o linkage expect net_init_vhost_user only when CONFIG_VHOST_NET is defined.

---
 net/net.c |    4 ++++
 1 file changed, 4 insertions(+)
net/net.c +4 -0
index de76e30..0c30414 100644
@@ -803,7 +803,9 @@ static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND_MAX])(
         [NET_CLIENT_OPTIONS_KIND_BRIDGE]    = net_init_bridge,
 #endif
         [NET_CLIENT_OPTIONS_KIND_HUBPORT]   = net_init_hubport,
+#ifdef CONFIG_VHOST_NET
         [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
+#endif
 };
 
 
@@ -837,7 +839,9 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp)
         case NET_CLIENT_OPTIONS_KIND_BRIDGE:
 #endif
         case NET_CLIENT_OPTIONS_KIND_HUBPORT:
+#ifdef CONFIG_VHOST_NET
         case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
+#endif
             break;
 
         default:
#1 lore raw

Hello,

Quoted 33 lines · Nikolay Nikolaev

Make net.o linkage expect net_init_vhost_user only when CONFIG_VHOST_NET is defined.

---
 net/net.c |    4 ++++
 1 file changed, 4 insertions(+)
net/net.c +0 -0
index de76e30..0c30414 100644
@@ -803,7 +803,9 @@ static int (* const

net_client_init_fun[NET_CLIENT_OPTIONS_KIND_MAX])(
[NET_CLIENT_OPTIONS_KIND_BRIDGE] = net_init_bridge,
#endif
[NET_CLIENT_OPTIONS_KIND_HUBPORT] = net_init_hubport,

net/net.c +4 -0
+#ifdef CONFIG_VHOST_NET
         [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
+#endif
 };
@@ -837,7 +839,9 @@ static int net_client_init1(const void *object, int
 is_netdev, Error **errp)
         case NET_CLIENT_OPTIONS_KIND_BRIDGE:
 #endif
         case NET_CLIENT_OPTIONS_KIND_HUBPORT:
+#ifdef CONFIG_VHOST_NET
         case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
+#endif
             break;
 
Quoted 3 lines

default:

It turns out that configure puts CONFIG_VHOST_NET in the "wrong" place - config-target.h

echo "CONFIG_VHOST_NET=y" >> $config_target_mak

while for example:

echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak

And net.c includes config-host.h, so we end up with vhost-user never enabled in net.c.
Will it be a problem if CONFIG_VHOST_NET is added to config_host_mak instead?

regards,
Nikolay Nikolaev

#2 lore raw
Quoted 46 lines · Nikolay Nikolaev

Hello,

On Wed, Jun 18, 2014 at 11:45 PM, Nikolay Nikolaev < [email protected]> wrote:

    Make net.o linkage expect net_init_vhost_user only when
    CONFIG_VHOST_NET is defined.

    Signed-off-by: Nikolay Nikolaev <[email protected]>
    ---
     net/net.c |    4 ++++
     1 file changed, 4 insertions(+)

    diff --git a/net/net.c b/net/net.c
    index de76e30..0c30414 100644
    --- a/net/net.c
    +++ b/net/net.c
    @@ -803,7 +803,9 @@ static int (* const net_client_init_fun
    [NET_CLIENT_OPTIONS_KIND_MAX])(
             [NET_CLIENT_OPTIONS_KIND_BRIDGE]    = net_init_bridge,
     #endif
             [NET_CLIENT_OPTIONS_KIND_HUBPORT]   = net_init_hubport,
    +#ifdef CONFIG_VHOST_NET
             [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
    +#endif
     };


    @@ -837,7 +839,9 @@ static int net_client_init1(const void *object, int
    is_netdev, Error **errp)
             case NET_CLIENT_OPTIONS_KIND_BRIDGE:
     #endif
             case NET_CLIENT_OPTIONS_KIND_HUBPORT:
    +#ifdef CONFIG_VHOST_NET
             case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
    +#endif
                 break;

             default:

It turns out that configure puts CONFIG_VHOST_NET in the "wrong" place - config-target.h

Quoted 8 lines

echo "CONFIG_VHOST_NET=y" >> $config_target_mak

while for example:

echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak

And net.c includes config-host.h, so we end up with vhost-user never enabled in net.c.

Not good.

Quoted 5 lines

Will it be a problem if CONFIG_VHOST_NET is added to config_host_mak instead?

regards,
Nikolay Nikolaev

Try it :)
It likely won't work for linux-user, right?

Signature · 1 line
MST
#3 lore raw

Hello,

Quoted 64 lines · Michael S. Tsirkin
Quoted 22 lines · Nikolay Nikolaev

Hello,

On Wed, Jun 18, 2014 at 11:45 PM, Nikolay Nikolaev < [email protected]> wrote:

    Make net.o linkage expect net_init_vhost_user only when
    CONFIG_VHOST_NET is defined.

    Signed-off-by: Nikolay Nikolaev <[email protected]>
    ---
     net/net.c |    4 ++++
     1 file changed, 4 insertions(+)

    diff --git a/net/net.c b/net/net.c
    index de76e30..0c30414 100644
    --- a/net/net.c
    +++ b/net/net.c
    @@ -803,7 +803,9 @@ static int (* const net_client_init_fun
    [NET_CLIENT_OPTIONS_KIND_MAX])(
             [NET_CLIENT_OPTIONS_KIND_BRIDGE]    = net_init_bridge,
     #endif
Quoted 8 lines
             [NET_CLIENT_OPTIONS_KIND_HUBPORT]   = net_init_hubport,
    +#ifdef CONFIG_VHOST_NET
             [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
    +#endif
     };


    @@ -837,7 +839,9 @@ static int net_client_init1(const void *object,

int

Quoted 16 lines
    is_netdev, Error **errp)
             case NET_CLIENT_OPTIONS_KIND_BRIDGE:
     #endif
             case NET_CLIENT_OPTIONS_KIND_HUBPORT:
    +#ifdef CONFIG_VHOST_NET
             case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
    +#endif
                 break;

             default:

It turns out that configure puts CONFIG_VHOST_NET in the "wrong" place - config-target.h

Quoted 7 lines

echo "CONFIG_VHOST_NET=y" >> $config_target_mak

while for example:

echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak

And net.c includes config-host.h, so we end up with vhost-user never

enabled in

Quoted 1 line

net.c.

Not good.

Quoted 1 line

Will it be a problem if CONFIG_VHOST_NET is added to config_host_mak

instead?

Quoted 2 lines
Quoted 9 lines
Quoted 2 lines

regards,
Nikolay Nikolaev

Try it :)
It likely won't work for linux-user, right?

--
MST

You're right - its not working.

I ended up with this:
if test "$vhost_net" = "yes" ; then
echo "CONFIG_VHOST_NET=y" >> $config_target_mak echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak
fi

and then in net.c depend on CONFIG_VHOST_NET_USER. Is this acceptable?

I'm preparing a patchseries including the vhost-user qtest fixes, and can include this solution there if OK.

regards,
Nikolay Nikolaev

#4 lore raw
Quoted 81 lines · Nikolay Nikolaev

Hello,

On Thu, Jun 19, 2014 at 5:24 PM, Michael S. Tsirkin <[email protected]> wrote:

    On Thu, Jun 19, 2014 at 05:16:44PM +0300, Nikolay Nikolaev wrote:
    > Hello,
    >
    >
    > On Wed, Jun 18, 2014 at 11:45 PM, Nikolay Nikolaev <
    > [email protected]> wrote:
    >
    >     Make net.o linkage expect net_init_vhost_user only when
    >     CONFIG_VHOST_NET is defined.
    >
    >     Signed-off-by: Nikolay Nikolaev <[email protected]>
    >     ---
    >      net/net.c |    4 ++++
    >      1 file changed, 4 insertions(+)
    >
    >     diff --git a/net/net.c b/net/net.c
    >     index de76e30..0c30414 100644
    >     --- a/net/net.c
    >     +++ b/net/net.c
    >     @@ -803,7 +803,9 @@ static int (* const net_client_init_fun
    >     [NET_CLIENT_OPTIONS_KIND_MAX])(
    >              [NET_CLIENT_OPTIONS_KIND_BRIDGE]    = net_init_bridge,
    >      #endif
    >              [NET_CLIENT_OPTIONS_KIND_HUBPORT]   = net_init_hubport,
    >     +#ifdef CONFIG_VHOST_NET
    >              [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
    >     +#endif
    >      };
    >
    >
    >     @@ -837,7 +839,9 @@ static int net_client_init1(const void *object,
    int
    >     is_netdev, Error **errp)
    >              case NET_CLIENT_OPTIONS_KIND_BRIDGE:
    >      #endif
    >              case NET_CLIENT_OPTIONS_KIND_HUBPORT:
    >     +#ifdef CONFIG_VHOST_NET
    >              case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
    >     +#endif
    >                  break;
    >
    >              default:
    >
    >
    >
    > It turns out that configure puts CONFIG_VHOST_NET in the "wrong" place -
    > config-target.h
    >
    > echo "CONFIG_VHOST_NET=y" >> $config_target_mak
    >
    > while for example:
    >
    > echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
    >
    > And net.c includes config-host.h, so we end up with vhost-user never
    enabled in
    > net.c.

    Not good.

    > Will it be a problem if CONFIG_VHOST_NET is added to config_host_mak
    instead?
    >
    >
    > regards,
    > Nikolay Nikolaev

    Try it :)
    It likely won't work for linux-user, right?
   
    --
    MST

You're right - its not working.

Quoted 7 lines

I ended up with this:
       if test "$vhost_net" = "yes" ; then
        echo "CONFIG_VHOST_NET=y" >> $config_target_mak echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak fi

and then in net.c depend on CONFIG_VHOST_NET_USER. Is this acceptable?

OK but
1. pls rename CONFIG_VHOST_NET_USED
2. you will make it appear many times in .mak, that's ugly, pls set a variable and output once.

Quoted 6 lines

I'm preparing a patchseries including the vhost-user qtest fixes, and can include this solution there if OK.

regards,
Nikolay Nikolaev

#5 lore raw
In reply to Nikolay Nikolaev
Quoted 4 lines · Nikolay Nikolaev

Make net.o linkage expect net_init_vhost_user only when CONFIG_VHOST_NET is defined.

Pls fix this one asap as it blocks pull request. I'll have to push vhost user out to next request otherwise ...

Quoted 28 lines
---
 net/net.c |    4 ++++
 1 file changed, 4 insertions(+)
net/net.c +4 -0
index de76e30..0c30414 100644
@@ -803,7 +803,9 @@ static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND_MAX])(
         [NET_CLIENT_OPTIONS_KIND_BRIDGE]    = net_init_bridge,
 #endif
         [NET_CLIENT_OPTIONS_KIND_HUBPORT]   = net_init_hubport,
+#ifdef CONFIG_VHOST_NET
         [NET_CLIENT_OPTIONS_KIND_VHOST_USER] = net_init_vhost_user,
+#endif
 };
 
 
@@ -837,7 +839,9 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp)
         case NET_CLIENT_OPTIONS_KIND_BRIDGE:
 #endif
         case NET_CLIENT_OPTIONS_KIND_HUBPORT:
+#ifdef CONFIG_VHOST_NET
         case NET_CLIENT_OPTIONS_KIND_VHOST_USER:
+#endif
             break;
 
         default: