Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp13375915pxu; Sun, 3 Jan 2021 12:18:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJzPnaoQN622JemnbvQ9d9177zN+roeMEhSyrgXhm0LFnwu4DIJp9FLmaW4opRYgHrDNlC3C X-Received: by 2002:a50:cd57:: with SMTP id d23mr68053115edj.95.1609705138483; Sun, 03 Jan 2021 12:18:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609705138; cv=none; d=google.com; s=arc-20160816; b=og4s4ONL31NzfZsY8TtHy0bBH6r3SL5mfkhasJ/9oQpAMlRJi/p+UvYTFb4R3PH6Wj vvUzXkrWnR2IpcL91Vt8oSmrflRDUjGQ3aDHfo8fjSK8UlRNg5AR67QVVfZrpLI1cCJZ l7e/FKhs8OLCpWCX8RNoUIqst86I9DDp3J++QSr3Y21I59G+1bK3joPPPgTVnohmSvuM TJ96gWFNnPuZHdusr+fmNwEPHL23FL0PubnzNIsf2ST2EQgtxn6AjlZuJcFBfLXnKSKc 2O2qt7s5usyu96464mB2jv7YDO+9mBu/nau14Df/TU3a0Q9Q8BIS9EIDqEFK9705E7aY mxRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=wyaj2NkC6p89cfaO82BPGLPhVCBSFLTGN/jpX6R+zpg=; b=VOmCrdzJzF4LejrhG2tqzu3siBf9AicPS0UHVdx7aXVsu/WM/trs4UVVbrCT+bddNz bJPToC99ly2dQ2CXtfQXTuVL14zI0TiOYlVT8VZ0anjiOe5mYNzuI33JqUPgTchnZUS/ WXUgP+DW3Rtub+L1BKA1UlBvBWocQ219zXIYT7llhiVbkbThLJZgNXLXuVpx41VwX/SF xtoixykaDFl5QW8btRsL5MliDHCb8LnAw31dyKgafyziQWsbcZPTpQTzGvozIUwHTQXq nk4dvDvEpCvRSOuMRL+9r1eOtCATUSiQrIPfwxR9meJswZNbSJDOMg0dBifT87/HBikU aLxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kaspersky.com header.s=mail header.b=V0WcAncz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=kaspersky.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ss12si27638770ejb.55.2021.01.03.12.18.35; Sun, 03 Jan 2021 12:18:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kaspersky.com header.s=mail header.b=V0WcAncz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=kaspersky.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727726AbhACT4R (ORCPT + 99 others); Sun, 3 Jan 2021 14:56:17 -0500 Received: from mx13.kaspersky-labs.com ([91.103.66.164]:13324 "EHLO mx13.kaspersky-labs.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725889AbhACT4Q (ORCPT ); Sun, 3 Jan 2021 14:56:16 -0500 Received: from relay13.kaspersky-labs.com (unknown [127.0.0.10]) by relay13.kaspersky-labs.com (Postfix) with ESMTP id 5C1E55212AD; Sun, 3 Jan 2021 22:55:32 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kaspersky.com; s=mail; t=1609703732; bh=wyaj2NkC6p89cfaO82BPGLPhVCBSFLTGN/jpX6R+zpg=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=V0WcAnczQgR9yZKK31UhIk2E3bW772wX3clSHrrX9u92EJBdbcx25CfV9bvkbZO3e dj3RhTtgaHnQGs0jcoKJX3G5bGQpH8DmZ5t3Bs1iH8hfqWrIxuE2970I26+6Y+dPYy 89ihfYjQqbqQ2/fy/BZQcHAOHV0mP8Pmm0u6sJ5g= Received: from mail-hq2.kaspersky.com (unknown [91.103.66.206]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (Client CN "mail-hq2.kaspersky.com", Issuer "Kaspersky MailRelays CA G3" (verified OK)) by mailhub13.kaspersky-labs.com (Postfix) with ESMTPS id 91E695212A2; Sun, 3 Jan 2021 22:55:31 +0300 (MSK) Received: from arseniy-pc.avp.ru (10.64.68.128) by hqmailmbx3.avp.ru (10.64.67.243) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2044.4; Sun, 3 Jan 2021 22:55:30 +0300 From: Arseny Krasnov To: Stefan Hajnoczi , Stefano Garzarella , "Michael S. Tsirkin" , Jason Wang , "David S. Miller" , Jakub Kicinski , Colin Ian King , Jorgen Hansen , Arseniy Krasnov , Andra Paraschiv , Jeff Vander Stoep CC: , , , , , Subject: [PATCH 0/5] virtio/vsock: introduce SOCK_SEQPACKET support. Date: Sun, 3 Jan 2021 22:54:52 +0300 Message-ID: <20210103195454.1954169-1-arseny.krasnov@kaspersky.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.64.68.128] X-ClientProxiedBy: hqmailmbx3.avp.ru (10.64.67.243) To hqmailmbx3.avp.ru (10.64.67.243) X-KSE-ServerInfo: hqmailmbx3.avp.ru, 9 X-KSE-AntiSpam-Interceptor-Info: scan successful X-KSE-AntiSpam-Version: 5.9.16, Database issued on: 01/03/2021 19:44:23 X-KSE-AntiSpam-Status: KAS_STATUS_NOT_DETECTED X-KSE-AntiSpam-Method: none X-KSE-AntiSpam-Rate: 10 X-KSE-AntiSpam-Info: Lua profiles 160977 [Jan 03 2021] X-KSE-AntiSpam-Info: LuaCore: 419 419 70b0c720f8ddd656e5f4eb4a4449cf8ce400df94 X-KSE-AntiSpam-Info: Version: 5.9.16.0 X-KSE-AntiSpam-Info: Envelope from: arseny.krasnov@kaspersky.com X-KSE-AntiSpam-Info: {Prob_from_in_msgid} X-KSE-AntiSpam-Info: {Tracking_date, dbl_space} X-KSE-AntiSpam-Info: {Tracking_from_domain_doesnt_match_to} X-KSE-AntiSpam-Info: d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;arseniy-pc.avp.ru:7.1.1;127.0.0.199:7.1.2;kaspersky.com:7.1.1 X-KSE-AntiSpam-Info: Rate: 10 X-KSE-AntiSpam-Info: Status: not_detected X-KSE-AntiSpam-Info: Method: none X-KSE-Antiphishing-Info: Clean X-KSE-Antiphishing-ScanningType: Deterministic X-KSE-Antiphishing-Method: None X-KSE-Antiphishing-Bases: 01/03/2021 19:46:00 X-KSE-AttachmentFiltering-Interceptor-Info: no applicable attachment filtering rules found X-KSE-Antivirus-Interceptor-Info: scan successful X-KSE-Antivirus-Info: Clean, bases: 03.01.2021 17:14:00 X-KSE-BulkMessagesFiltering-Scan-Result: InTheLimit X-KSE-AttachmentFiltering-Interceptor-Info: no applicable attachment filtering rules found X-KSE-BulkMessagesFiltering-Scan-Result: InTheLimit X-KLMS-Rule-ID: 52 X-KLMS-Message-Action: clean X-KLMS-AntiSpam-Status: not scanned, disabled by settings X-KLMS-AntiSpam-Interceptor-Info: not scanned X-KLMS-AntiPhishing: Clean, bases: 2021/01/03 18:58:00 X-KLMS-AntiVirus: Kaspersky Security for Linux Mail Server, version 8.0.3.30, bases: 2021/01/03 18:13:00 #16005632 X-KLMS-AntiVirus-Status: Clean, skipped Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As SOCK_SEQPACKET guarantees to save record boundaries, so to do it, new packet operation was added: it marks start of record (with record length in header). To send record, packet with start marker is sent first, then all data is transmitted as 'RW' packets. On receiver's side, length of record is known from packet with start record marker. Now as packets of one socket are not reordered neither on vsock nor on vhost transport layers, these marker allows to restore original record on receiver's side. When each 'RW' packet is inserted to rx queue of receiver, user is woken up, data is copied to user's buffer and credit update message is sent. If there is no user waiting for data, credit won't be updated and sender will wait. Also, if user's buffer is full, and record is bigger, all unneeded data will be dropped (with sending of credit update message). 'MSG_EOR' flag is implemented with special value of 'flags' field in packet header. When record is received with such flags, 'MSG_EOR' is set in 'recvmsg()' flags. 'MSG_TRUNC' flag is also supported. In this implementation maximum length of datagram is not limited as in stream socket. drivers/vhost/vsock.c | 6 +- include/linux/virtio_vsock.h | 7 + include/net/af_vsock.h | 4 + include/uapi/linux/virtio_vsock.h | 9 + net/vmw_vsock/af_vsock.c | 457 +++++++++++++++++++----- net/vmw_vsock/virtio_transport.c | 3 + net/vmw_vsock/virtio_transport_common.c | 323 ++++++++++++++--- 7 files changed, 673 insertions(+), 136 deletions(-) -- 2.25.1