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 X-Spam-Level: X-Spam-Status: No, score=-5.7 required=3.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1D45C433B4 for ; Tue, 4 May 2021 04:29:52 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1F022611AD for ; Tue, 4 May 2021 04:29:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1F022611AD Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sina.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 3F0416B0036; Tue, 4 May 2021 00:29:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3795C6B006E; Tue, 4 May 2021 00:29:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F4DA6B0070; Tue, 4 May 2021 00:29:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0231.hostedemail.com [216.40.44.231]) by kanga.kvack.org (Postfix) with ESMTP id 005D66B0036 for ; Tue, 4 May 2021 00:29:50 -0400 (EDT) Received: from smtpin34.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id B41E7180ACF6C for ; Tue, 4 May 2021 04:29:50 +0000 (UTC) X-FDA: 78102270540.34.3C318AD Received: from r3-19.sinamail.sina.com.cn (r3-19.sinamail.sina.com.cn [202.108.3.19]) by imf11.hostedemail.com (Postfix) with SMTP id 0A7EB2000266 for ; Tue, 4 May 2021 04:29:31 +0000 (UTC) Received: from unknown (HELO localhost.localdomain)([124.64.16.31]) by sina.com (172.16.97.35) with ESMTP id 6090CDB40001BE71; Tue, 4 May 2021 12:29:44 +0800 (CST) X-Sender: hdanton@sina.com X-Auth-ID: hdanton@sina.com X-SMAIL-MID: 23600115073609 From: Hillf Danton To: Liam Howlett Cc: MAPLE , MM , LKML , Andrew Morton , Matthew Wilcox , Michel Lespinasse , Hillf Danton Subject: Re: [PATCH 76/94] mm/khugepaged: Use maple tree iterators instead of vma Date: Tue, 4 May 2021 12:29:30 +0800 Message-Id: <20210504042930.10436-1-hdanton@sina.com> In-Reply-To: <20210428153542.2814175-77-Liam.Howlett@Oracle.com> References: <20210428153542.2814175-1-Liam.Howlett@Oracle.com> MIME-Version: 1.0 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 0A7EB2000266 Authentication-Results: imf11.hostedemail.com; dkim=none; spf=pass (imf11.hostedemail.com: domain of hdanton@sina.com designates 202.108.3.19 as permitted sender) smtp.mailfrom=hdanton@sina.com; dmarc=none X-Stat-Signature: cyuc6bmimnazgrnrrttjcg51m34k71ra Received-SPF: none (sina.com>: No applicable sender policy available) receiver=imf11; identity=mailfrom; envelope-from=""; helo=r3-19.sinamail.sina.com.cn; client-ip=202.108.3.19 X-HE-DKIM-Result: none/none X-HE-Tag: 1620102571-523967 Content-Transfer-Encoding: quoted-printable 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 Wed, 28 Apr 2021 15:36:24 Liam R. Howlett wrote: > --- > mm/khugepaged.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) Good work. And a nit below. >=20 > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 33cf91529f0b..4983a25c5a90 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -2063,6 +2063,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned =3D > int pages, > struct mm_struct *mm; > struct vm_area_struct *vma; > int progress =3D 0; > + MA_STATE(mas, NULL, 0, 0); >=20 > VM_BUG_ON(!pages); > lockdep_assert_held(&khugepaged_mm_lock); > @@ -2079,18 +2080,22 @@ static unsigned int khugepaged_scan_mm_slot(uns= igne=3D > d int pages, > khugepaged_collapse_pte_mapped_thps(mm_slot); >=20 > mm =3D mm_slot->mm; > + mas.tree =3D &mm->mm_mt; > /* > * Don't wait for semaphore (to avoid long wait times). Just move to > * the next mm on the list. > */ > vma =3D NULL; > + mas_set(&mas, khugepaged_scan.address); > if (unlikely(!mmap_read_trylock(mm))) > goto breakouterloop_mmap_lock; > + > + rcu_read_lock(); > if (likely(!khugepaged_test_exit(mm))) > - vma =3D find_vma(mm, khugepaged_scan.address); > + vma =3D mas_find(&mas, ULONG_MAX); >=20 > progress++; > - for (; vma; vma =3D vma->vm_next) { > + mas_for_each(&mas, vma, ULONG_MAX) { > unsigned long hstart, hend; >=20 > cond_resched(); Given the added rcu_read_lock(), take another look at this scheduling entry? > @@ -2129,6 +2134,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned =3D > int pages, > pgoff_t pgoff =3D linear_page_index(vma, > khugepaged_scan.address); >=20 > + rcu_read_unlock(); > mmap_read_unlock(mm); > ret =3D 1; > khugepaged_scan_file(mm, file, pgoff, hpage); > @@ -2149,6 +2155,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned =3D > int pages, > } > } > breakouterloop: > + rcu_read_unlock(); > mmap_read_unlock(mm); /* exit_mmap will destroy ptes after this */ > breakouterloop_mmap_lock: >=20 > -- > 2.30.2