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 1D8B8C61DA4 for ; Mon, 6 Feb 2023 14:35:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 92B046B0072; Mon, 6 Feb 2023 09:35:02 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8DAAF6B0073; Mon, 6 Feb 2023 09:35:02 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A2896B0078; Mon, 6 Feb 2023 09:35:02 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 6A2596B0072 for ; Mon, 6 Feb 2023 09:35:02 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 15E85C02BB for ; Mon, 6 Feb 2023 14:35:02 +0000 (UTC) X-FDA: 80437114044.20.FD38B13 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf25.hostedemail.com (Postfix) with ESMTP id 77E1BA001E for ; Mon, 6 Feb 2023 14:34:58 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=YnEor+Hv; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1675694098; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=tn0R8455uNVtjJUjfJCLXrFAYzBcdND/62SPM7psjXQ=; b=h8ALA+9aC4P4riEWihRPFfS8w4huLfCa6ier9ytiVyVqvsWe01qQ32o0OCBshXfDUfR6ty hxYvj8k0tonp/kSKj9L8q8Qn2IztIH7z755SVhsm/V0tX8xfLsEkNQtutSSfyPuCDU67RZ SH6CDyRtKBf2I3uF/svgrpaFzJfm5MA= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=YnEor+Hv; spf=none (imf25.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675694098; a=rsa-sha256; cv=none; b=z0YNPvXnf5mRjfojctoqhEdCnUoj0uiXfz6UxKj0NVHjzSRk+gEEDGJaEsB6n+PTA7Wcx1 LfgKcFNgUhDw+lWNhn1TAv8pN/Z5SHPSas8324PwUK+Xf9MYPh6O7x3ntIO7Aw1+wW4OKz FRdEUPs+6Ksp5DxIFz3Byh4bVcCOGRM= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=tn0R8455uNVtjJUjfJCLXrFAYzBcdND/62SPM7psjXQ=; b=YnEor+HvQTpAgDq0NgcmvEUotw 3Q6Xjctb8T7dcwJ6EoPc+7CDy9JsKiB/IH9olkmvnXImCHkI/PN55CEnRczD/8V8CFTPfVzQQjb7Q 3M1Ko8/sxOwPo2l83+Lwhu1h8jlXMgfLuEUVZZaL1F5PahY/qe/pesFfTziSXp/EtPN2q65iHjgLz xOkHUnIcVvbEh/IFHi+rEnEdHawUEXXO8oPehKPNJZ47IAxhR8HpT3SxX8Z3agFFK+g73QFqIYy8b OLT3VNNkFKq0erbKyp/gl80Md84tyNAEVKcOJ+TjJKMY7buKxw0i8PhFKBHXpevdlc7yGkSxayEdZ jHUhrB9A==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pP2a5-00GpQC-GO; Mon, 06 Feb 2023 14:34:53 +0000 Date: Mon, 6 Feb 2023 14:34:53 +0000 From: Matthew Wilcox To: Yin Fengwei Cc: david@redhat.com, linux-mm@kvack.org, dave.hansen@intel.com, tim.c.chen@intel.com, ying.huang@intel.com Subject: Re: [RFC PATCH v4 4/4] filemap: batched update mm counter,rmap when map file folio Message-ID: References: <20230206140639.538867-1-fengwei.yin@intel.com> <20230206140639.538867-5-fengwei.yin@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230206140639.538867-5-fengwei.yin@intel.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 77E1BA001E X-Stat-Signature: 9j78mqkpxqdjfdt5zo5sx57bt7bijwb7 X-HE-Tag: 1675694098-72548 X-HE-Meta: U2FsdGVkX1/w6NUzXz5hbz2THdGBQmcvDmkwM3pywxe6Y8sQWdOARVs7B6jcWIZaaVP7ZxMMETg75kez4q1hSlzVxnHgRBDYk+3MmU5pb+q9wzByF4oXk9Wv0bPRjh+iSE5g8gGuVUQmvU9JMgp6SDCfixldFKgPfnTNL/HrKwkjS4+am0mJrI0quSMNx2whbMTpf6vcneGzWWMFchL9V2tR+d/9ePCnsXe161RypOkFvcqbFZ8zdoEocpc3AkL3xxwd+svZWsBmZFQVI/afVbkRf6aeLxkWoXiB4NGMta+ou1jG5NPv81aEz63Il9Cwes7kcSyr+YNod8K2Fob1SIsWp4kII0NC1fnzakvpv67fQFVnPuNT653+jufsDvrYs1+4C5oNcK62nR/8oD28OaccNYYSj6DBTs4HvPy7fNKqQpLrug8QaIN9qImnIBMyPbIoVgTqVMrIUhaDrtArdouDfIquNXCU4rMdLfyWAPy58EVylIn/VJxiGpZc8WG2ESzo/un+j+FBMtbtgrc19FHxVADXLdgo44g4K0v3ox6+SaOFHBSy1SwCgEYa8iG/4RZzGtNUplLY7RQx4oh3LSd/AElDo5OULRHFCNSXIOF6MX3a65SItkxtgo8mXDIopxGJiuKvRAdOzNz/oEDrFXC2/4rFK75QYo55poZ3+/67+Agt003p+NE0rZgWFThKt10dpwa7+4ffY8dpcuMxXTtfaiYqJ7bVsOs4QONACiGsBOZWxIyg/iL7Xtz4Zrgy4SD0+zDlgB6vE6ViTuIWpzF251LfWFCLFQOUfaza6dtRe+IdgnOoM4KPAkRQM2c9/xxExEJS4SHercsnCa1XZcpo7B1/Is/qu/4G0G6toNcl4J31DleBC27ARwjsbdj1ItgOfWRsExluoqZUr57VzB8YxY6DThpneGA5EN/XAkI/OTZaM1bOmvbm+Kx/ER14gQL03JoJg6hnd7/SGfb YUPD4E9a vsJuV/02LqG+ZOpSEt7ExF9n8nGfIXV7/9ocQNaj23NBM17sVYk8uEHjIqQA3+9VmbtrL/+mdATzmjW4L6ArliiyS4YnwGuNYve3sCNI0ogrGFZP+ND6sD/RPRFEHm+bwm/jRm9Fa6+xCbcqiaoX4IzOTIw== 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 Mon, Feb 06, 2023 at 10:06:39PM +0800, Yin Fengwei wrote: > @@ -3354,11 +3354,12 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, > struct file *file = vma->vm_file; > struct page *page = folio_page(folio, start); > unsigned int mmap_miss = READ_ONCE(file->f_ra.mmap_miss); > - unsigned int ref_count = 0, count = 0; > + unsigned int mapped = 0; > + pte_t *pte = vmf->pte; > > do { > if (PageHWPoison(page)) > - continue; > + goto map; > > if (mmap_miss > 0) > mmap_miss--; > @@ -3368,20 +3369,34 @@ static vm_fault_t filemap_map_folio_range(struct vm_fault *vmf, > * handled in the specific fault path, and it'll prohibit the > * fault-around logic. > */ > - if (!pte_none(*vmf->pte)) > - continue; > + if (!pte_none(pte[mapped])) > + goto map; I see what you're trying to do here, but do_set_pte_range() uses the pte from vmf->pte. Perhaps best to save it at the beginning of the function and restore it at the end. ie: pte_t *old_ptep = vmf->pte; } while (vmf->pte++); vmf->pte = old_ptep; The only other thing that bugs me about this patch is the use of 'mapped' as the variable name. It's in the past tense, not the future tense, so it gives me the wrong impression about what it's counting. While we could use 'tomap', that's kind of clunky. 'count' or even just 'i' would be better.