All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jorgen Hansen via Virtualization <virtualization@lists.linux-foundation.org>
To: 'Stefano Garzarella' <sgarzare@redhat.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Dexuan Cui <decui@microsoft.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"virtualization@lists.linux-foundation.org"
	<virtualization@lists.linux-foundation.org>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: RE: [PATCH net-next 3/6] vsock: add local transport support in the vsock core
Date: Thu, 21 Nov 2019 15:04:18 +0000	[thread overview]
Message-ID: <MWHPR05MB3376F4452F0CF38C1AFABA2EDA4E0__2156.52449276007$1574348676$gmane$org@MWHPR05MB3376.namprd05.prod.outlook.com> (raw)
In-Reply-To: <20191119110121.14480-4-sgarzare@redhat.com>

> From: Stefano Garzarella [mailto:sgarzare@redhat.com]
> Sent: Tuesday, November 19, 2019 12:01 PM
> To: netdev@vger.kernel.org
>
> This patch allows to register a transport able to handle
> local communication (loopback).
> 
> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
> ---
>  include/net/af_vsock.h   |  2 ++
>  net/vmw_vsock/af_vsock.c | 17 ++++++++++++++++-
>  2 files changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h
> index 4206dc6d813f..b1c717286993 100644
> --- a/include/net/af_vsock.h
> +++ b/include/net/af_vsock.h
> @@ -98,6 +98,8 @@ struct vsock_transport_send_notify_data {
>  #define VSOCK_TRANSPORT_F_G2H		0x00000002
>  /* Transport provides DGRAM communication */
>  #define VSOCK_TRANSPORT_F_DGRAM		0x00000004
> +/* Transport provides local (loopback) communication */
> +#define VSOCK_TRANSPORT_F_LOCAL		0x00000008
> 
>  struct vsock_transport {
>  	struct module *module;
> diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
> index cc8659838bf2..c9e5bad59dc1 100644
> --- a/net/vmw_vsock/af_vsock.c
> +++ b/net/vmw_vsock/af_vsock.c
> @@ -136,6 +136,8 @@ static const struct vsock_transport *transport_h2g;
>  static const struct vsock_transport *transport_g2h;
>  /* Transport used for DGRAM communication */
>  static const struct vsock_transport *transport_dgram;
> +/* Transport used for local communication */
> +static const struct vsock_transport *transport_local;
>  static DEFINE_MUTEX(vsock_register_mutex);
> 
>  /**** UTILS ****/
> @@ -2130,7 +2132,7 @@ EXPORT_SYMBOL_GPL(vsock_core_get_transport);
> 
>  int vsock_core_register(const struct vsock_transport *t, int features)
>  {
> -	const struct vsock_transport *t_h2g, *t_g2h, *t_dgram;
> +	const struct vsock_transport *t_h2g, *t_g2h, *t_dgram, *t_local;
>  	int err = mutex_lock_interruptible(&vsock_register_mutex);
> 
>  	if (err)
> @@ -2139,6 +2141,7 @@ int vsock_core_register(const struct
> vsock_transport *t, int features)
>  	t_h2g = transport_h2g;
>  	t_g2h = transport_g2h;
>  	t_dgram = transport_dgram;
> +	t_local = transport_local;
> 
>  	if (features & VSOCK_TRANSPORT_F_H2G) {
>  		if (t_h2g) {
> @@ -2164,9 +2167,18 @@ int vsock_core_register(const struct
> vsock_transport *t, int features)
>  		t_dgram = t;
>  	}
> 
> +	if (features & VSOCK_TRANSPORT_F_LOCAL) {
> +		if (t_local) {
> +			err = -EBUSY;
> +			goto err_busy;
> +		}
> +		t_local = t;
> +	}
> +
>  	transport_h2g = t_h2g;
>  	transport_g2h = t_g2h;
>  	transport_dgram = t_dgram;
> +	transport_local = t_local;
> 
>  err_busy:
>  	mutex_unlock(&vsock_register_mutex);
> @@ -2187,6 +2199,9 @@ void vsock_core_unregister(const struct
> vsock_transport *t)
>  	if (transport_dgram == t)
>  		transport_dgram = NULL;
> 
> +	if (transport_local == t)
> +		transport_local = NULL;
> +
>  	mutex_unlock(&vsock_register_mutex);
>  }
>  EXPORT_SYMBOL_GPL(vsock_core_unregister);
> --
> 2.21.0

Having loopback support as a separate transport fits nicely, but do we need to support
different variants of loopback? It could just be built in.

Thanks,
Jorgen

  parent reply	other threads:[~2019-11-21 15:04 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-19 11:01 [PATCH net-next 0/6] vsock: add local transport support Stefano Garzarella
2019-11-19 11:01 ` [PATCH net-next 1/6] vsock/virtio_transport_common: remove unused virtio header includes Stefano Garzarella
2019-11-19 11:01 ` [PATCH net-next 2/6] vsock: add VMADDR_CID_LOCAL definition Stefano Garzarella
2019-11-21 14:49   ` Jorgen Hansen via Virtualization
2019-11-21 14:49   ` Jorgen Hansen
2019-11-19 11:01 ` [PATCH net-next 3/6] vsock: add local transport support in the vsock core Stefano Garzarella
2019-11-21 15:04   ` Jorgen Hansen
2019-11-21 15:21     ` Stefano Garzarella
2019-11-21 15:21     ` Stefano Garzarella
2019-11-21 15:53       ` Jorgen Hansen
2019-11-21 16:12         ` Stefano Garzarella
2019-11-21 16:19           ` Jorgen Hansen
2019-11-21 16:19           ` Jorgen Hansen via Virtualization
2019-11-21 16:12         ` Stefano Garzarella
2019-11-21 15:53       ` Jorgen Hansen via Virtualization
2019-11-21 15:04   ` Jorgen Hansen via Virtualization [this message]
2019-11-19 11:01 ` [PATCH net-next 4/6] vsock: add vsock_loopback transport Stefano Garzarella
2019-11-20  1:15   ` David Miller
2019-11-20  9:00     ` Stefano Garzarella
2019-11-21  9:34   ` Stefan Hajnoczi
2019-11-21  9:34   ` Stefan Hajnoczi
2019-11-21  9:59     ` Stefano Garzarella
2019-11-21  9:59     ` Stefano Garzarella
2019-11-21 15:25       ` Stefano Garzarella
2019-11-22  9:25         ` Stefan Hajnoczi
2019-11-22  9:25         ` Stefan Hajnoczi
2019-11-22 10:02           ` Stefano Garzarella
2019-11-22 10:02             ` Stefano Garzarella
2019-11-21 15:25       ` Stefano Garzarella
2019-11-19 11:01 ` [PATCH net-next 5/6] vsock: use local transport when it is loaded Stefano Garzarella
2019-11-21  9:46   ` Stefan Hajnoczi
2019-11-21  9:46   ` Stefan Hajnoczi
2019-11-21 10:01     ` Stefano Garzarella
2019-11-21 10:01     ` Stefano Garzarella
2019-11-19 11:01 ` [PATCH net-next 6/6] vsock/virtio: remove loopback handling Stefano Garzarella
2019-11-21  9:46 ` [PATCH net-next 0/6] vsock: add local transport support Stefan Hajnoczi
2019-11-21 10:05   ` Stefano Garzarella
2019-11-21 10:05   ` Stefano Garzarella
2019-11-21  9:46 ` Stefan Hajnoczi
2019-11-21 14:45 ` Jorgen Hansen via Virtualization
2019-11-21 14:45 ` Jorgen Hansen
2019-11-21 15:13   ` Stefano Garzarella
2019-11-21 15:13   ` Stefano Garzarella

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='MWHPR05MB3376F4452F0CF38C1AFABA2EDA4E0__2156.52449276007$1574348676$gmane$org@MWHPR05MB3376.namprd05.prod.outlook.com' \
    --to=virtualization@lists.linux-foundation.org \
    --cc=davem@davemloft.net \
    --cc=decui@microsoft.com \
    --cc=jhansen@vmware.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=sgarzare@redhat.com \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.