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 4E657C77B61 for ; Fri, 7 Apr 2023 18:31:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 89EB46B0074; Fri, 7 Apr 2023 14:31:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8278B6B0075; Fri, 7 Apr 2023 14:31:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6EE71900004; Fri, 7 Apr 2023 14:31:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5B84D6B0075 for ; Fri, 7 Apr 2023 14:31:42 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9A54CA02A7 for ; Fri, 7 Apr 2023 17:54:14 +0000 (UTC) X-FDA: 80655344028.08.DCCF86B Received: from mail-yw1-f175.google.com (mail-yw1-f175.google.com [209.85.128.175]) by imf26.hostedemail.com (Postfix) with ESMTP id DF7DE14000C for ; Fri, 7 Apr 2023 17:54:12 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=nlyl4ar9; spf=pass (imf26.hostedemail.com: domain of surenb@google.com designates 209.85.128.175 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680890052; 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=jrpM89/D2Jn+yeowi/ZK21yY3Yfqiq0AvpzdxVqWoEM=; b=vKiiX41CUM/qhRZwYYmXC+qIriOQe914omGirbLMRCOiRW0lKSV2pqzABzYlvwwanbcDe0 8xuBHGKl4hnSiaeaQ+9UbHya4Uxnutgtus4Bu97VSJwXfcOT4C9qCzpmgz5xMFfPGMAbH+ MoA8wcDzBvyjOMG8u6akByl5UAhQwyo= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=nlyl4ar9; spf=pass (imf26.hostedemail.com: domain of surenb@google.com designates 209.85.128.175 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680890052; a=rsa-sha256; cv=none; b=G8UBO9O/E0vvNCQkyJQ9fuJBcdPnXmBpptmp00U2hR6RCHKDr9y0i0uPF4grk8Z9SLXDOX /IKe2iFHD6r/x8oNUZguuAQMx8WK4PuNKFqF7DHlirTLEWLy93b7xE6ZZzg2Bz9CTUjXjw B4XE1oG8X++OX57jJPyaowkSDQWrwoY= Received: by mail-yw1-f175.google.com with SMTP id 00721157ae682-54e40113cf3so27101807b3.12 for ; Fri, 07 Apr 2023 10:54:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1680890052; x=1683482052; 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=jrpM89/D2Jn+yeowi/ZK21yY3Yfqiq0AvpzdxVqWoEM=; b=nlyl4ar9a4UnjXUJbWwyNT15heLTVsga62hvSGc21eVb9UWoJwENRKkCHxa5FPQFr9 gV7S7wullm2HeT+4AnshpPvxPoc/bNK/lK5bxw46U43/wq8KTCAnbWtb7nYMzxxq+js4 gx9NNQ0o1nOvjfjqnRtpyeOHYZEyeZY/lF05JYz9AH77KPg1uvmSWOFtB3qzl8QQFq47 bkJGzSNqCUpT8YN+koW5g5N2kmWIE+HBHTgYdM4i+KlqZZmyuI2GFondvb232fl7KZcA lNPtUD76pkAQ0gaFS5pqXOo4GPKrRbHy9B5f8zhLtwJDUdFxoCT2eSYxdEJz9vdTlMDa hU/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680890052; x=1683482052; 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=jrpM89/D2Jn+yeowi/ZK21yY3Yfqiq0AvpzdxVqWoEM=; b=ittt/2VGfw5f+ivB/HiD0GxPqmIy6gQ1FIV2Jzt0si7aPMEJLlwO0ZegMWyukNq5yg qrWedLxUu/bc05FKQE+e2LA5CYYIOyhzsgj0I1dwHQdsaeKEv8aMwwPLhdZkjjxHDABF ErS8GqBpUuRp1ZbDSgkys7NFj4vep8Zj+s0+CxoVDqsAzasF0aM0y/IvymYaBREx+Itz qQw8gadiNXuDJA26Srd7l+uodBFqvyBo1FubcTbLVRiULFJaKLtM+qXMPmt0yjeSVO04 Zj8H5w/U3l7uOdvJlv2FnJJ6ohbDns0gVcBweJnUioUzhznwniKKIeYQEQXZ8y08T0zW ymXQ== X-Gm-Message-State: AAQBX9dQWBjOhGL/Wyl+6/nvFEvP0n9kr2rjrtfLWilxi4BC0vSijPV/ 62Ld8hVwXfaK27pI4spIuX8oTBt093tvRsFZNGwlzA== X-Google-Smtp-Source: AKy350ZWpvYDt+JfeFh+Py8WeV6sDraw/et/qng2n8kcHk5mR5OCQ9G6DpPScjEmkGgZVMaXtvyqeGRFv8+flPdxkmY= X-Received: by 2002:a81:ad0b:0:b0:54c:2723:55ff with SMTP id l11-20020a81ad0b000000b0054c272355ffmr1456279ywh.1.1680890051783; Fri, 07 Apr 2023 10:54:11 -0700 (PDT) MIME-Version: 1.0 References: <20230404135850.3673404-1-willy@infradead.org> <20230404135850.3673404-2-willy@infradead.org> In-Reply-To: <20230404135850.3673404-2-willy@infradead.org> From: Suren Baghdasaryan Date: Fri, 7 Apr 2023 10:54:00 -0700 Message-ID: Subject: Re: [PATCH 1/6] mm: Allow per-VMA locks on file-backed VMAs To: "Matthew Wilcox (Oracle)" Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Punit Agrawal Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: i5byrnpjweg5eiu563ob9388b18c9a8w X-Rspamd-Queue-Id: DF7DE14000C X-HE-Tag: 1680890052-875008 X-HE-Meta: U2FsdGVkX18OSPP3TKg/Oly2INkuFvoej5/fniPTEqV4e1iI6O9ZK8qYlYydZbtdTaBmE35AyfEjEFTZlCK4K6HnCcmLsuvIxPpz+0z61g64az8S4PkwA07gle8sG0x7y+2K93gXIEo50gFbPHxXZ8bQ6MNVxnKyZpHRO6EaB+LkD76DWis4PFt66WMtKgz+G8t41Mj5PlotqLJ+rmfChIEAE8pMWLfgv5x+w/lWyIrzkpXCBSQH65ZRoINJaCvVsRllg5n30lWZhr93ZioQq7Lg5bAladdErdCAEpqnEuqUFAAThVF82yqsMgSxtKyoMMG0TwuD5wcaPg8EV2paP8YohKrq0JZqsU5ltwbNMV08uHMM1U1FbLT/UtJPL6MKhjcztq4ka8nbYkPFY5AWxGemuMTbyRwruPZnf9vB4ewBgLVv6JLt1v+cXw6JIG1EydYjph6Tcq9bKQ8WNgU+qVEEa47L7JxaoCMSKY/BUbivUSjAxZF9D7JFZ3KivgUttFiiBmj/gA9ISb6HFW5rlSGFqbtGImuB83cGQbgFqEDj0RbAl1fynE4cEnrdZbqdhOZIv1qIH817Z74EIxwa6bYbG+zXAnmy9ps5Yl7+FYsfWvDcofga7XqtoLDMxL+1i6z1GsLdz3jwPsWnrMJQe3LQ6xKjdp4QyJyBlbxU6xbtjXxLYS77UYRwAl2KQAdqjNFtQFoz94aG+nWP2phVmBiej2dFxv1pwbDnUHWDJgsIzWm30ALUmrjIryogDdbpcY9OrLcxtNxyfEJHIKwG9/aESQIdP35PYWo8EaR29utnKHp0Oi2F0KqUdwJu4r/MwK+U87oQILsInhDd2gM6y53IvFcnBLQRlQx3GyjXt2+uMSFqexh3NDn9qA2T6au+DTnfwQ89xpGGTfMsYNNo6TwPoAR54iujYz3DSm+7dJ6BE6BBMvxTd4vn+hvBkL0K7gCdSZhpsV4/RcNe1/c xDsrM3Nu rbZra53cBMoD8tx2yksdcAS8EO0QepsF3eHNvRVWh0LxIuWMkX7MhW8JQVhkQSwmYKI9Hhh+UfUWicC4ZGUVBTLSRk1zl2kT0KffDyrt32zcDUSz4JKTCDgLfNhLBNokTjCofOYZPsn/sud8+cBYuk8WHBZ9Vw1emvSGkxW14onVP11Rzk3QOJ++kYEOlpRtRskmpkNuYNAAjDDk7ecD7EuFtEb9uaqPVXafWnAKhO9B5b36bl19aBiLDFG5nYjNPDKgQdHf4WSWalll4gxE0NyGUmBJWXp6tNS3hdumMGxYinT1peTsDZ7iAQA== 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, Apr 4, 2023 at 6:59=E2=80=AFAM Matthew Wilcox (Oracle) wrote: > > The fault path will immediately fail in handle_mm_fault(), so this > is the minimal step which allows the per-VMA lock to be taken on > file-backed VMAs. There may be a small performance reduction as a > little unnecessary work will be done on each page fault. See later > patches for the improvement. > > Signed-off-by: Matthew Wilcox (Oracle) > --- > mm/memory.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index fdaec7772fff..f726f85f0081 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -5223,6 +5223,9 @@ vm_fault_t handle_mm_fault(struct vm_area_struct *v= ma, unsigned long address, > flags & FAULT_FLAG_REMOTE)) > return VM_FAULT_SIGSEGV; > > + if ((flags & FAULT_FLAG_VMA_LOCK) && !vma_is_anonymous(vma)) > + return VM_FAULT_RETRY; > + There are count_vm_event(PGFAULT) and count_memcg_event_mm(vma->vm_mm, PGFAULT) earlier in this function. Returning here and retrying I think will double-count this page fault. Returning before this accounting should fix this issue. > /* > * Enable the memcg OOM handling for faults triggered in user > * space. Kernel faults are handled more gracefully. > @@ -5275,12 +5278,8 @@ struct vm_area_struct *lock_vma_under_rcu(struct m= m_struct *mm, > if (!vma) > goto inval; > > - /* 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) > + if (vma_is_anonymous(vma) && !vma->anon_vma) > goto inval; > > if (!vma_start_read(vma)) > -- > 2.39.2 >