diff mbox

net: fix vhost-user mingw compilation

Message ID 20140618204530.16806.54996.stgit@3820
State New
Headers show

Commit Message

Nikolay Nikolaev June 18, 2014, 8:45 p.m. UTC
Make net.o linkage expect net_init_vhost_user only when
CONFIG_VHOST_NET is defined.

Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
---
 net/net.c |    4 ++++
 1 file changed, 4 insertions(+)

Comments

Nikolay Nikolaev June 19, 2014, 2:16 p.m. UTC | #1
Hello,


On Wed, Jun 18, 2014 at 11:45 PM, Nikolay Nikolaev <
n.nikolaev@virtualopensystems.com> wrote:

> Make net.o linkage expect net_init_vhost_user only when
> CONFIG_VHOST_NET is defined.
>
> Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
> ---
>  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.
Will it be a problem if CONFIG_VHOST_NET is added to config_host_mak
instead?


regards,
Nikolay Nikolaev
Michael S. Tsirkin June 19, 2014, 2:24 p.m. UTC | #2
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 <
> n.nikolaev@virtualopensystems.com> wrote:
> 
>     Make net.o linkage expect net_init_vhost_user only when
>     CONFIG_VHOST_NET is defined.
> 
>     Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
>     ---
>      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?
Nikolay Nikolaev June 19, 2014, 2:33 p.m. UTC | #3
Hello,


On Thu, Jun 19, 2014 at 5:24 PM, Michael S. Tsirkin <mst@redhat.com> 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 <
> > n.nikolaev@virtualopensystems.com> wrote:
> >
> >     Make net.o linkage expect net_init_vhost_user only when
> >     CONFIG_VHOST_NET is defined.
> >
> >     Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
> >     ---
> >      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.

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
Michael S. Tsirkin June 19, 2014, 2:47 p.m. UTC | #4
On Thu, Jun 19, 2014 at 05:33:02PM +0300, Nikolay Nikolaev wrote:
> Hello,
> 
> 
> On Thu, Jun 19, 2014 at 5:24 PM, Michael S. Tsirkin <mst@redhat.com> 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 <
>     > n.nikolaev@virtualopensystems.com> wrote:
>     >
>     >     Make net.o linkage expect net_init_vhost_user only when
>     >     CONFIG_VHOST_NET is defined.
>     >
>     >     Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>
>     >     ---
>     >      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.
> 
> 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.

> 
> I'm preparing a patchseries including the vhost-user qtest fixes, and can
> include this solution there if OK.
> 
> regards,
> Nikolay Nikolaev
Michael S. Tsirkin June 19, 2014, 2:54 p.m. UTC | #5
On Wed, Jun 18, 2014 at 11:45:45PM +0300, Nikolay Nikolaev wrote:
> Make net.o linkage expect net_init_vhost_user only when
> CONFIG_VHOST_NET is defined.
> 
> Signed-off-by: Nikolay Nikolaev <n.nikolaev@virtualopensystems.com>

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

> ---
>  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:
diff mbox

Patch

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: