From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D76E5EB64DD for ; Fri, 14 Jul 2023 03:02:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4DF06900006; Thu, 13 Jul 2023 23:02:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 48E86900002; Thu, 13 Jul 2023 23:02:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3561D900006; Thu, 13 Jul 2023 23:02:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 280F1900002 for ; Thu, 13 Jul 2023 23:02:30 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id D1106B078D for ; Fri, 14 Jul 2023 03:02:29 +0000 (UTC) X-FDA: 81008719218.02.B11FCFE Received: from mail-yb1-f176.google.com (mail-yb1-f176.google.com [209.85.219.176]) by imf25.hostedemail.com (Postfix) with ESMTP id 01837A0011 for ; Fri, 14 Jul 2023 03:02:26 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=CrUx2usX; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf25.hostedemail.com: domain of surenb@google.com designates 209.85.219.176 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689303747; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=SWF1rWhwYv+32T0N3hVOD4U3JND/hlQOgh7+AffgXaU=; b=i6PbtZudY5Dn4KYm3AWuzQLtRHr3u5dxfhLhYu7eHudc73OS0oT/voiHmOsAs/NJQhZGya yCHl/DcES8IP0RrQPz2q+q4mg/Mu1Ji8mS6kw1LM66tIXQNqQUgwMlOev1r8wZRK4H5m4/ EvLuc9vhC10MKL+6QTbTvCvnyOTLdUs= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=CrUx2usX; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf25.hostedemail.com: domain of surenb@google.com designates 209.85.219.176 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689303747; a=rsa-sha256; cv=none; b=tLQahs6Kk4slQqjlHEdrJrlv7WpQt34kz7H3+W15EfA16CbRle2KoNC33y/SQ1CA/3Kzsq fM9dn+s6EWLr8TvTQ9y13ljQEJWOEF8WD1ZqhcMiv+kBHUqIsDUMx+gCzNuLMRsJoKKyNv jRO0+q0cZdiQ00jHwH65RibmYP2+aLA= Received: by mail-yb1-f176.google.com with SMTP id 3f1490d57ef6-bd0a359ca35so1283131276.3 for ; Thu, 13 Jul 2023 20:02:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689303746; x=1691895746; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=SWF1rWhwYv+32T0N3hVOD4U3JND/hlQOgh7+AffgXaU=; b=CrUx2usXaCQdB6JxGiNre8mx7bMBbOckXX2C7PBlp3J8MVt0FZEo1yQQ8jMXUfGaIZ 2iE/uBdh+tsOCNjB06NImh0I26WW8XSTt1pc+mv6azbjNnuPDeT/1pIWt1AVCpRQ0Xlj MoafYI9Z3F/z7aQ9h3nqJlwnNUMoQBxeqhurtaGG9F2zro+naS1RSlEtit54eONqf4Zw ntGr32h80xGf4vsXqOsROcEyP7u1AA70uXZZ+V9WoP6UEx+TXG7dapp9NbQI61aIenAX HKFicWi5QrkmzqyBbUJSpkALzYPKc6RHRSrMUQawgMBUXFOSgC00RJLA/mLyToszK/uf 3VrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689303746; x=1691895746; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SWF1rWhwYv+32T0N3hVOD4U3JND/hlQOgh7+AffgXaU=; b=c3GQwGd186XIBpOjgtBLnD55eI0uXwHsr6vElE6/g0NFcHjXAlY12/vML+Dk7CFhNa +jbWxVZcX73Wtj1PPClgffdD70hb0snbQToesBLKJL2YbRQtvqzXXa9BoauzQ2iUH7ar wqEc+0Gd5CB474eIjUoIeJNqIWHb/zZ9591U33dRXcPrFvalIAkWMkQzMEZr6r2qiIi+ hPNrb+/RvXODPUUeAxGvCncP7NPqi4Ax+OXHtTzBBont9su+qKKbbcrD/wqqd5AttFqD oNfTcX6bf2PFLGThfa5EqdwJSep2Cx8oCYT7cVmFwidlSppGqKUcLoCe9C0+XQBQYLB1 0BUw== X-Gm-Message-State: ABy/qLZ7SMjDhvkHtAb0I3IiRUWKyqxYLO1vyvBwkuFBtax5bBCCh6tf 8oUkUT+4lE65gsvuAe8WlRsd/YeipAcbsxeH6+daqQ== X-Google-Smtp-Source: APBJJlGc5/3ujsQL3fWtKfDw79yqtAH5ym2lb7z3t8EOMU7ReBiHpL/fRRDNVtaivThgrLsLUJ1Pfn7J1DVYN1K2r8k= X-Received: by 2002:a25:e4c1:0:b0:caa:7841:9e9c with SMTP id b184-20020a25e4c1000000b00caa78419e9cmr2679381ybh.27.1689303745815; Thu, 13 Jul 2023 20:02:25 -0700 (PDT) MIME-Version: 1.0 References: <20230711202047.3818697-1-willy@infradead.org> <20230711202047.3818697-2-willy@infradead.org> In-Reply-To: <20230711202047.3818697-2-willy@infradead.org> From: Suren Baghdasaryan Date: Thu, 13 Jul 2023 20:02:12 -0700 Message-ID: Subject: Re: [PATCH v2 1/9] Revert "tcp: Use per-vma locking for receive zerocopy" To: "Matthew Wilcox (Oracle)" Cc: linux-mm@kvack.org, Arjun Roy , Eric Dumazet , linux-fsdevel@vger.kernel.org, Punit Agrawal Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: srdces6natq7b4r9n4nu476zfajbw4iw X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 01837A0011 X-HE-Tag: 1689303746-145776 X-HE-Meta: U2FsdGVkX1+mZoh7gvBDZN//bxBAu7v5SiWTRCiJZi0wfrQPkL+d1Lu1VLZOpddz3zRUDzSuXVX/UFFhLge2RBNPRHhGDe0k+JOljHme+iloIjgTwB9K0LRnfKgYa/Tjq/cym+Cr9KLdXZoah82uSLXh48wX7t3jsEgh8zbAsmnKmPtNLYTeiWg9bp1GI4i0NlwYL4e/+htyXndieRhoKeJAVN8QfUCEExdEWz8kvTDWvXqjePTPuHt7drrve9/Ce5L34rzYAKbEWCaTZMlKUpZKiFXqUkxRyTTGTFUchSHsZE/XD768iOQv73uXB165WXBDTGh1UEvpGb6c8gfC7WEEya7fenOsyhKUfXFfxjbttdqpq4lUKt5mDiz9eBirHGERE5vmaLbAzVIkW8Ze2J/ZlLWwh5h1B61wPAgvYdp8IwZ3C5/OKOa3s5mj8aiFBaqlAe11DYBxz63t6rOJNo0YxzT+x8hJQJfujn2vDb1jg9BvCHUH7frQS1E+MaJoc5W0BBcVEprPZX+5rIWMJc2SYIgsq8Tz+GJWOoqY+OCV0KavHEIABtvNsLAkd+O9v4SaF/IrE9wT89bK4HdD7FBjvrMLhZjEidszEg42RyHNSySoqZsoH94Lg4B2f09vz4zs4nYroTPzGl5CRv+k//957czC6xVwMWHt4qDhASXBBeH6PTVqWCTtGTTG4rPw3kWhv794Gu4yiBA6dTxYG4vwRadoO4UfYwggKNQd8/meW2d3uaOQx5rCnpCnFC55+TPi//00SK8+cGKVfpzuW8NTu+YSa0Pdgnt8uzyAxOfCtszNl8kF0qtwMfZn5HLWMmGUVMWCY5g8sYBiXBcOvUMaW6LPDg7HNq6WACz+IMU/dIvZd4cIio/2k5RAtuonLKEYYpntntT6eOQJH9scHPx1jMFTLQBMT4PJOn2DuKpnp6PiyvhBSgJlGcUbaXbT44/sZvH8IH39oF63elM Do1mfoCI WLv/Dj7W/jGmZP+uxSQPKORnUARdT07HKDt/HWBUkE/00HqwNeycHNC2bRcThdflXAYD0UIfRfT1tGPCnk+h63L8zNXozqzzPvnE4kmsdzVtTsFUiSC0DdSPC9jEnJRjM/uQ2HSmlm1ctnag0K1KkOTwLCDErymhVft6AVUAxfA2RPmKhC3HHVfK3aJu+W/CjjQUOqrdr9dAKUO/2TLnFEGakIx5KDQvBUNzMcUZRNHJCcHmNkSuNiwyGg7obuM9pORSP5ol1cMX2zSsrp0mSV12kxGEw2uV9GFed/nspHZLmdWI+ZKTt2vuxp3CJnRwPQ2DZT/TF6UZBMON0PoVg0ZOLxDhPikX+G23dIZkN9mFtQpg= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Jul 11, 2023 at 1:21=E2=80=AFPM Matthew Wilcox (Oracle) wrote: > > This reverts commit 7a7f094635349a7d0314364ad50bdeb770b6df4f. nit: some explanation and SOB would be nice. Reviewed-by: Suren Baghdasaryan > --- > MAINTAINERS | 1 - > include/linux/net_mm.h | 17 ---------------- > include/net/tcp.h | 1 - > mm/memory.c | 7 +++---- > net/ipv4/tcp.c | 45 ++++++++---------------------------------- > 5 files changed, 11 insertions(+), 60 deletions(-) > delete mode 100644 include/linux/net_mm.h > > diff --git a/MAINTAINERS b/MAINTAINERS > index 18cd0ce2c7d2..00047800cff1 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -14816,7 +14816,6 @@ NETWORKING [TCP] > M: Eric Dumazet > L: netdev@vger.kernel.org > S: Maintained > -F: include/linux/net_mm.h > F: include/linux/tcp.h > F: include/net/tcp.h > F: include/trace/events/tcp.h > diff --git a/include/linux/net_mm.h b/include/linux/net_mm.h > deleted file mode 100644 > index b298998bd5a0..000000000000 > --- a/include/linux/net_mm.h > +++ /dev/null > @@ -1,17 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0-or-later */ > -#ifdef CONFIG_MMU > - > -#ifdef CONFIG_INET > -extern const struct vm_operations_struct tcp_vm_ops; > -static inline bool vma_is_tcp(const struct vm_area_struct *vma) > -{ > - return vma->vm_ops =3D=3D &tcp_vm_ops; > -} > -#else > -static inline bool vma_is_tcp(const struct vm_area_struct *vma) > -{ > - return false; > -} > -#endif /* CONFIG_INET*/ > - > -#endif /* CONFIG_MMU */ > diff --git a/include/net/tcp.h b/include/net/tcp.h > index 226bce6d1e8c..95e4507febed 100644 > --- a/include/net/tcp.h > +++ b/include/net/tcp.h > @@ -45,7 +45,6 @@ > #include > #include > #include > -#include > > extern struct inet_hashinfo tcp_hashinfo; > > diff --git a/mm/memory.c b/mm/memory.c > index 0a265ac6246e..2c7967632866 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -77,7 +77,6 @@ > #include > #include > #include > -#include > > #include > > @@ -5419,12 +5418,12 @@ struct vm_area_struct *lock_vma_under_rcu(struct = mm_struct *mm, > if (!vma) > goto inval; > > - /* Only anonymous and tcp vmas are supported for now */ > - if (!vma_is_anonymous(vma) && !vma_is_tcp(vma)) > + /* Only anonymous vmas are supported for now */ > + if (!vma_is_anonymous(vma)) > goto inval; > > /* find_mergeable_anon_vma uses adjacent vmas which are not locke= d */ > - if (!vma->anon_vma && !vma_is_tcp(vma)) > + if (!vma->anon_vma) > goto inval; > > if (!vma_start_read(vma)) > diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c > index e03e08745308..1542de3f66f7 100644 > --- a/net/ipv4/tcp.c > +++ b/net/ipv4/tcp.c > @@ -1739,7 +1739,7 @@ void tcp_update_recv_tstamps(struct sk_buff *skb, > } > > #ifdef CONFIG_MMU > -const struct vm_operations_struct tcp_vm_ops =3D { > +static const struct vm_operations_struct tcp_vm_ops =3D { > }; > > int tcp_mmap(struct file *file, struct socket *sock, > @@ -2038,34 +2038,6 @@ static void tcp_zc_finalize_rx_tstamp(struct sock = *sk, > } > } > > -static struct vm_area_struct *find_tcp_vma(struct mm_struct *mm, > - unsigned long address, > - bool *mmap_locked) > -{ > - struct vm_area_struct *vma =3D NULL; > - > -#ifdef CONFIG_PER_VMA_LOCK > - vma =3D lock_vma_under_rcu(mm, address); > -#endif > - if (vma) { > - if (!vma_is_tcp(vma)) { > - vma_end_read(vma); > - return NULL; > - } > - *mmap_locked =3D false; > - return vma; > - } > - > - mmap_read_lock(mm); > - vma =3D vma_lookup(mm, address); > - if (!vma || !vma_is_tcp(vma)) { > - mmap_read_unlock(mm); > - return NULL; > - } > - *mmap_locked =3D true; > - return vma; > -} > - > #define TCP_ZEROCOPY_PAGE_BATCH_SIZE 32 > static int tcp_zerocopy_receive(struct sock *sk, > struct tcp_zerocopy_receive *zc, > @@ -2083,7 +2055,6 @@ static int tcp_zerocopy_receive(struct sock *sk, > u32 seq =3D tp->copied_seq; > u32 total_bytes_to_map; > int inq =3D tcp_inq(sk); > - bool mmap_locked; > int ret; > > zc->copybuf_len =3D 0; > @@ -2108,10 +2079,13 @@ static int tcp_zerocopy_receive(struct sock *sk, > return 0; > } > > - vma =3D find_tcp_vma(current->mm, address, &mmap_locked); > - if (!vma) > - return -EINVAL; > + mmap_read_lock(current->mm); > > + vma =3D vma_lookup(current->mm, address); > + if (!vma || vma->vm_ops !=3D &tcp_vm_ops) { > + mmap_read_unlock(current->mm); > + return -EINVAL; > + } > vma_len =3D min_t(unsigned long, zc->length, vma->vm_end - addres= s); > avail_len =3D min_t(u32, vma_len, inq); > total_bytes_to_map =3D avail_len & ~(PAGE_SIZE - 1); > @@ -2185,10 +2159,7 @@ static int tcp_zerocopy_receive(struct sock *sk, > zc, total_bytes_to_map= ); > } > out: > - if (mmap_locked) > - mmap_read_unlock(current->mm); > - else > - vma_end_read(vma); > + mmap_read_unlock(current->mm); > /* Try to copy straggler data. */ > if (!ret) > copylen =3D tcp_zc_handle_leftover(zc, sk, skb, &seq, cop= ybuf_len, tss); > -- > 2.39.2 >