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 2B0ADC636CC for ; Tue, 7 Feb 2023 23:27:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AB45E6B0093; Tue, 7 Feb 2023 18:27:48 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A648D6B0095; Tue, 7 Feb 2023 18:27:48 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 92D2D6B0096; Tue, 7 Feb 2023 18:27:48 -0500 (EST) 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 80D536B0093 for ; Tue, 7 Feb 2023 18:27:48 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 5C651160975 for ; Tue, 7 Feb 2023 23:27:48 +0000 (UTC) X-FDA: 80442085416.06.C0E916D Received: from mail-vs1-f46.google.com (mail-vs1-f46.google.com [209.85.217.46]) by imf07.hostedemail.com (Postfix) with ESMTP id A3CA140005 for ; Tue, 7 Feb 2023 23:27:46 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=hSlye7MD; spf=pass (imf07.hostedemail.com: domain of jthoughton@google.com designates 209.85.217.46 as permitted sender) smtp.mailfrom=jthoughton@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=1675812466; 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=IBeQhebSkK0C2dR+K/Im4XynFhqxOrk8CJofloC9EuM=; b=VfhEIQUpcWgeuYuetUl8Z3+Pa3x2cSS66+gomJQwEmPGNDA5KPMMvGzn89swdWhCMLy6Uf 1nm5AldqeGjyjDoWriY3od3tuMVWZRvB8sy+Tv3VQyak7keQu3HA4QJ5ReTbhz4kaXg+pA SA0yF65BM84WQ4y9cT9mOmhxn8Yhj50= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=hSlye7MD; spf=pass (imf07.hostedemail.com: domain of jthoughton@google.com designates 209.85.217.46 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1675812466; a=rsa-sha256; cv=none; b=WCbk/yOrJ1te3g1W7rs/B4yAu1wHt+ViohM0iHl7EVGFEa8SsW4Ff/b82JB5JraOuFS+Z/ Ne8Wj/dBZqqViaEk691RD+yIuQDuVMG1XB8wsOfo7kJ9UJifDHvbJJz1KphSkxR7zj4Pwf vS2nIq7PcJkWcT7oNf6uQsP1yeH9wXI= Received: by mail-vs1-f46.google.com with SMTP id cz15so8428812vsb.6 for ; Tue, 07 Feb 2023 15:27:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=IBeQhebSkK0C2dR+K/Im4XynFhqxOrk8CJofloC9EuM=; b=hSlye7MDRAQiqaZVhop2++jLuIj/B+9Vj7ZHnSrMZSCjnG34W5dcb02rikHxhOigFA /i9ni4LSgKwpJdqjVuPI2jAHhLAK5a7M71J/vTNp2EfoYTQgF5WHE7sBYsatjtogxoTg Mk9x19cin9bwGww1kZ/JM0coQS1n5lqASA14bbvKN8iwaNn/CCdCtbDYwrOvEpmN0fVU r6IZ/pGwAZ8v+VHsokPDrCBdqsK3cQfhq/Vp9iYM0rE7G+RjYPSmxSYpabprJ62GyU1a uRalGd/POhWBL1hd5aG7uGvVRPETibPumHNv5+aBpgSbohBXidoIfx0bVbFaonZ6JzLt 8x/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=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=IBeQhebSkK0C2dR+K/Im4XynFhqxOrk8CJofloC9EuM=; b=6qiyed+0TiS7TjbcPl826C+eAcWxyWAGmOcgy+YgwVXH9K4LfBiK/K8C1g5fg72o2x E++Y/wqivnTKliGX+JZyNZ2324quz40gfuIFBdfM2FRAqsju7VcfecUs07kV/S3m4dJJ SJJHwRZKhc+sjYG3pT45vWV9z9ARK59o2kjEx2oQYw/IKkVS5eAwHhtEKPed23YsmJKT ig/7gMofskWBORHK33OWUrEdnmtFWJwduR188d7UDbxxUm78tAgFt46SJceniMxbGikW GsToP/sfqGMhDavkuHHQsm53fWHjty4gP5USspcIe8wV/vXh8qjmXBiScrEk5qmwBDWQ GnPQ== X-Gm-Message-State: AO0yUKXqbNcbwe7DwT7slsoT/JeBMm47h1amzNkZfrKH+1cb1yZ1V2tS K7ucAta6PSs2l762C4PrVaMpfMPMy88yGEFeb9qVtFLIljorOZRE X-Google-Smtp-Source: AK7set9GU5uJVj4PXHW6tNwDFl98Y+YYoCLPVf7Aw/10E4qKC107Ewjbpojdk/gWZAC3zr/u1T9+rVVJ4mg3Zhsavek= X-Received: by 2002:a67:e294:0:b0:3f3:1c0b:4911 with SMTP id g20-20020a67e294000000b003f31c0b4911mr1087773vsf.40.1675812465732; Tue, 07 Feb 2023 15:27:45 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: James Houghton Date: Tue, 7 Feb 2023 15:27:07 -0800 Message-ID: Subject: Re: Folio mapcount To: Matthew Wilcox Cc: linux-mm@kvack.org, Vishal Moola , Hugh Dickins , Rik van Riel , David Hildenbrand , "Yin, Fengwei" Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: A3CA140005 X-Rspam-User: X-Stat-Signature: eus4umkighi9mzputybbi53n94x1foub X-HE-Tag: 1675812466-870395 X-HE-Meta: U2FsdGVkX1+IKYyu5TpW4vzLW/QWo+Vseux55L9GDEEyWqPHRN/sbYsHIE1H4bkZiWWVmXq3TpLY/xoLeJ6I86GoUJszUybWosr25gaZI9dtlzfn+rAuH+hWAvxnzVuRuejLFrUnLFTLWVRo8hMaoeY91L3llPJLuPSQsdWBWQsXdRurIhr7od4Ibjnx+wZIH2foi0pCyzfVm0ACZJnkTRjL7rc5ulgCg/KwQmGKE51N3lnDHjIVUPGEpXJ1sBIyCZDY5qGgCiviFRSokkyumkPIe2z2EqEl5oKHRi0kZ4QOXuhRkk8eO2OXrbahTc/jFP8TDJF5Yag0ezYyjHLwNEjVgGd9oJ4egDXVEnSzOwDUu4Yka8yXfOAc71ar+e4ZQRFRTnZ+0tzqdyA28qtaLLNegSLIuwO65tJb5KC9aYFEh9OnX5HyvbOBYnsaidfs99ocAQKuzKcI3TVIvK5Cfd0LTkGE/zDft+DpUFElZLwoKalmJGH+UxusY98x0q+UrsoctoGB9sSS0tLraFwe1WbCDCE6rYWVNkCfpUpF7OxfVg7HOTOhcc6wiwMGcQqSSnr0DJVGaye/BOdWuf/W3AKrJN6ZIZYgZSvRsM/+jYbVZ6DavAq3B7/yfhdxVFb3stbcFhDq5A9ZnUHhWL+6h4RwJUQGNSvPDkJWS1HnPIRbFjVdshMMQkd6umKYBxTeHNDqFUeiLe7CVv/RqDQ0+YkUodoQjDtjcgqmi2VWARVfNFeWo3zuFt8dd/0tTeBTmy0ei1/UN2DcgX6N8J2tXXO7ip1Yso5yRtyWnZ2SHojVKrztcajcjz/F2ISJfuhiYNLcEiBzvLeHxajEouFG01+9KDWQbKRA/JRzl0i+MhG4KZi07TiEEiab5fvUSimz4LzMWkQwvyHH0L9bcNRvfzy6zbE18NkPr1cXppkUFGZiWTwNFwd/fDcW+mJ7RcCX3qlRLHiAq63VPg4UoDZ RPgj5zAW UUhRgnjN8U2kKTF9u7LjcyvhOQUMCzFuyv+dNlpAhkG+tZLO4toDP7lAf/ByAmpNt66A1xHXT8kevNEPb2jI/yHmJc0qfllfyvj5giXlTbhNBPzzqVmLe2FEC8OOwNTfUa3pAUWZyh+cH4Ri8ABrZQoyUwrkNHg1f+zCaHVWa1KH81+pS1Hbl8DHFXyACfbXXcm0wpkq19uWQbxVMZRQmxsr9SROYr+bbgpYLl89onmYMrfZc4PDu5mKbQrLb5K+fx6s3MTTKhibrsNaiu5GHfP5jyWa5U5YfmPmnNGGVY2i1wIEo5L+rKvupOzdt9iKq/OrB2+srjg7fn3sw7XmFFfwzl1vYyZF4/ZVrGMtqtUfAz6hrBjyv0kUdbA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.001255, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Feb 7, 2023 at 3:08 PM Matthew Wilcox wrote: > > On Tue, Feb 07, 2023 at 02:56:52PM -0800, James Houghton wrote: > > Hi Matthew, > > > > On Mon, Feb 6, 2023 at 12:34 PM Matthew Wilcox wrote: > > > I now think the mapcount has to be defined as "How many VMAs have > > > one-or-more pages of this folio mapped". > > > > > > That means that our future folio_add_file_rmap_range() looks a bit > > > like this: > > > > > > { > > > bool add_mapcount = true; > > > > > > if (nr < folio_nr_pages(folio)) > > > add_mapcount = !folio_has_ptes(folio, vma); > > > > Can you elaborate on how folio_has_ptes() might be implemented? > > ... oh. First I called it folio_has_ptes() and then I went looking > for inspiration on how to implement it, and I found page_mapped_in_vma() > and so I thought folio_mapped_in_vma() would be a better name, but > I forgot to change it here. Sorry. Oh I see. Thanks. :) So page_vma_mapped_walk() might have to walk up to HPAGE_PMD_NR-ish PTEs (if we find a bunch of pte_none() PTEs). Just curious, could that be any slower than what we currently do (like, incrementing up to HPAGE_PMD_NR-ish subpage mapcounts)? Or is it not a concern? > > > It seems like for a naturally aligned THP, we can see if the PMD is > > pmd_present(), otherwise, do we need to check (potentially) all the > > PTEs? Does this introduce an ordering requirement, where we have to > > update the page table always before/after we call > > folio_add_file_rmap_range()? > > Actually, you _mustn't_ update the page table first, or it will see > the PTEs and say "Ah, the folio is already mapped, I should not > increment mapcount". So we keep the calling order as it is now; > folio_add_X_rmap() followed by a call to set_ptes(). Ok, thanks for clarifying. - James