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 4C1CAC00140 for ; Mon, 8 Aug 2022 19:36:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DD2558E0005; Mon, 8 Aug 2022 15:36:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D5B1E8E0001; Mon, 8 Aug 2022 15:36:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD4DD8E0005; Mon, 8 Aug 2022 15:36:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A83058E0001 for ; Mon, 8 Aug 2022 15:36:28 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 8A6171C60D3 for ; Mon, 8 Aug 2022 19:36:28 +0000 (UTC) X-FDA: 79777432056.17.E161F6C Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf20.hostedemail.com (Postfix) with ESMTP id 303901C002E for ; Mon, 8 Aug 2022 19:36:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=XUv3giDWg4UmrVVtaNHEwd8Y/d+wpN+coo8NOgPtOmg=; b=U3E2UJoB4J3l4EvxwiwzpEL7gs 0Mt61DbacENBLiLwmQef6St3tSn1A/3qcdAVKNx5NpoD7f/VZwMBmTPi2yZXp75we4f4MAoVaBuQw x3nI3fXKnRYI47orPUzNVXSnHsXKLCP+yzyf+DUXuL5rGcfZt7kGYRWN9RC8XSoBqdOjFeceQXOpM 0cdB9FcQ5iBpWTSXzvvIq9AU2ojBxL+ClrFFrunPkmz5HxDyRVOH70igLyh7kPYtzNlurVFnb6lBv GKQ6zxzMUKK2auoBTPPh/+sPse/R0mMlfT1nslPDgJYZHJ3uxuWCMc7UjtrlvUYFCWWtyWyNgPtIc 7B8RAQzA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1oL8XZ-00EB3s-9A; Mon, 08 Aug 2022 19:35:53 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org Cc: "Matthew Wilcox (Oracle)" , hughd@google.com Subject: [PATCH 57/59] mm: Convert page_get_anon_vma() to folio_get_anon_vma() Date: Mon, 8 Aug 2022 20:34:25 +0100 Message-Id: <20220808193430.3378317-58-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20220808193430.3378317-1-willy@infradead.org> References: <20220808193430.3378317-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=U3E2UJoB; spf=none (imf20.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=1659987388; a=rsa-sha256; cv=none; b=bCS2LMaV1w5/892CfC8h1mcNeVzmXx9WjgkC9PFJWxcHw1GP9KUZrWNercsIZLvRG0sUNn eAWgikEsQ6B9Q/rmPaSKQbdXyrNmgif3aBNBkLrGzv/KS1ipCCaMYzPtmLtl+9wWYOp+Ay 3XeiwdUzT0gH/9nJpGtnzCT9yShqPYU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1659987388; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=XUv3giDWg4UmrVVtaNHEwd8Y/d+wpN+coo8NOgPtOmg=; b=OZj6io22a/8P8aozuPrKjvBtHfGgFVo8Dgcya3n0COcNUY5xf60pMDmK5QKro7kBWwF0bV /7bEmTnDCmluoduiUdkQhNAIySrCjb9n++ngrg+yhPs9W5oE3t50yQgzLIr0g5W8qU2cmt 91LEXrDxY1/lborVAYo8rxolRwb48No= X-Stat-Signature: gsj77pp54wb4eqi5dioi4gbbhjicz88r X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 303901C002E Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=U3E2UJoB; spf=none (imf20.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none X-HE-Tag: 1659987388-150030 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: With all callers now passing in a folio, rename the function and convert all callers. Removes a couple of calls to compound_head() and a reference to page->mapping. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/rmap.h | 2 +- mm/huge_memory.c | 2 +- mm/migrate.c | 6 +++--- mm/rmap.c | 14 +++++++------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/linux/rmap.h b/include/linux/rmap.h index bf80adca980b..4fde1cf5a5e8 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h @@ -163,7 +163,7 @@ static inline void anon_vma_merge(struct vm_area_struct *vma, unlink_anon_vmas(next); } -struct anon_vma *page_get_anon_vma(struct page *page); +struct anon_vma *folio_get_anon_vma(struct folio *folio); /* RMAP flags, currently only relevant for some anon rmap operations. */ typedef int __bitwise rmap_t; diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 2b0f8787c7ed..44a843f12fb3 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -2619,7 +2619,7 @@ int split_huge_page_to_list(struct page *page, struct list_head *list) * is taken to serialise against parallel split or collapse * operations. */ - anon_vma = page_get_anon_vma(&folio->page); + anon_vma = folio_get_anon_vma(folio); if (!anon_vma) { ret = -EBUSY; goto out; diff --git a/mm/migrate.c b/mm/migrate.c index 7b338ddd011a..c688319ffd46 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1035,14 +1035,14 @@ static int __unmap_and_move(struct folio *src, struct folio *dst, * File Caches may use write_page() or lock_page() in migration, then, * just care Anon page here. * - * Only page_get_anon_vma() understands the subtleties of + * Only folio_get_anon_vma() understands the subtleties of * getting a hold on an anon_vma from outside one of its mms. * But if we cannot get anon_vma, then we won't need it anyway, * because that implies that the anon page is no longer mapped * (and cannot be remapped so long as we hold the page lock). */ if (folio_test_anon(src) && !folio_test_ksm(src)) - anon_vma = page_get_anon_vma(&src->page); + anon_vma = folio_get_anon_vma(src); /* * Block others from accessing the new page when we get around to @@ -1283,7 +1283,7 @@ static int unmap_and_move_huge_page(new_page_t get_new_page, } if (folio_test_anon(src)) - anon_vma = page_get_anon_vma(&src->page); + anon_vma = folio_get_anon_vma(src); if (unlikely(!folio_trylock(dst))) goto put_anon; diff --git a/mm/rmap.c b/mm/rmap.c index aaab1c1078b4..dcb856150295 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -486,16 +486,16 @@ void __init anon_vma_init(void) * if there is a mapcount, we can dereference the anon_vma after observing * those. */ -struct anon_vma *page_get_anon_vma(struct page *page) +struct anon_vma *folio_get_anon_vma(struct folio *folio) { struct anon_vma *anon_vma = NULL; unsigned long anon_mapping; rcu_read_lock(); - anon_mapping = (unsigned long)READ_ONCE(page->mapping); + anon_mapping = (unsigned long)READ_ONCE(folio->mapping); if ((anon_mapping & PAGE_MAPPING_FLAGS) != PAGE_MAPPING_ANON) goto out; - if (!page_mapped(page)) + if (!folio_mapped(folio)) goto out; anon_vma = (struct anon_vma *) (anon_mapping - PAGE_MAPPING_ANON); @@ -505,13 +505,13 @@ struct anon_vma *page_get_anon_vma(struct page *page) } /* - * If this page is still mapped, then its anon_vma cannot have been + * If this folio is still mapped, then its anon_vma cannot have been * freed. But if it has been unmapped, we have no security against the * anon_vma structure being freed and reused (for another anon_vma: * SLAB_TYPESAFE_BY_RCU guarantees that - so the atomic_inc_not_zero() * above cannot corrupt). */ - if (!page_mapped(page)) { + if (!folio_mapped(folio)) { rcu_read_unlock(); put_anon_vma(anon_vma); return NULL; @@ -523,11 +523,11 @@ struct anon_vma *page_get_anon_vma(struct page *page) } /* - * Similar to page_get_anon_vma() except it locks the anon_vma. + * Similar to folio_get_anon_vma() except it locks the anon_vma. * * Its a little more complex as it tries to keep the fast path to a single * atomic op -- the trylock. If we fail the trylock, we fall back to getting a - * reference like with page_get_anon_vma() and then block on the mutex + * reference like with folio_get_anon_vma() and then block on the mutex * on !rwc->try_lock case. */ struct anon_vma *folio_lock_anon_vma_read(struct folio *folio, -- 2.35.1