Message ID | 20221231214610.2800682-17-willy@infradead.org (mailing list archive) |
---|---|
State | New |
Headers | show
Return-Path: <owner-linux-mm@kvack.org> 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 0877AC4332F for <linux-mm@archiver.kernel.org>; Sat, 31 Dec 2022 21:46:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7E4C68E0010; Sat, 31 Dec 2022 16:46:28 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 71F058E0001; Sat, 31 Dec 2022 16:46:28 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 54CF38E0010; Sat, 31 Dec 2022 16:46:28 -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 421A28E0001 for <linux-mm@kvack.org>; Sat, 31 Dec 2022 16:46:28 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 213D51401F0 for <linux-mm@kvack.org>; Sat, 31 Dec 2022 21:46:28 +0000 (UTC) X-FDA: 80303935656.16.6590AA5 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf13.hostedemail.com (Postfix) with ESMTP id 5435E20007 for <linux-mm@kvack.org>; Sat, 31 Dec 2022 21:46:26 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PK64GSLU; spf=none (imf13.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=1672523186; 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=0NLqJEVTuj2oTskxw8IoL64ubPWS69O0/7nY9tIXboA=; b=lHtbpxcUlStdR6fQdxHMzTpHlXp8H3XUQpBgo8Zaxz6ZzkXlSvFo9RFsHGwtsT/I0zRjjv ScPJs+60EmVy9cXXOB/Ak1YxxUSx4px+ioav11kaxywqlDdsXnO+gXOKcMlnUKm2OX3QmI ermfj6LhZZLkfVQtlJc2i4jJSjdrbCs= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PK64GSLU; spf=none (imf13.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=1672523186; a=rsa-sha256; cv=none; b=Ba+8WhwmN+N5MK3uaWpdtDabsuwmGg4l3BYLwDy35KjzBClZLfV8ZORkstWczzO+5+vTP6 NjDKOqWYuyA42eEI+7VXRswppgzhv6y+TO6zo7HCp/CeDoIgPlxlIjOvem55S/pPPsAHfo 4ixP6g5ieYASiRi43iliPqbCpEvuWB8= 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=0NLqJEVTuj2oTskxw8IoL64ubPWS69O0/7nY9tIXboA=; b=PK64GSLU0AUhEeCdj+/6ow6t/y P+fwnbsvne2dXrs9ilASYoYAJvHzA/fso0Y/n8U1LDhHwHnxaVMzTASrtjApKEr5ZqTDcPbcw5INT 0fbSJmpUKvDNxXQVdb9NZMLrt8dtu1q/0F9F5p9tcoZSzE0c7zOJ2aUCmutOu5Bm4b+r9d22UQCrs yBGyn+4owb42BGu7CA/gt5UJeptl3lkOeshtt67tJswPIxUpirF7TKFdb+gJgo5FivmmegjY7S3Go 3+PgRQBM/rBlOQv2bg4bgw+E+IhmdUH8gJr1uEztugzlMbjqQnN/1bsH9qBMHY4h1DcmTERx5QZrB 7noOmkCw==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pBjgD-00Bkax-W4; Sat, 31 Dec 2022 21:46:14 +0000 From: "Matthew Wilcox (Oracle)" <willy@infradead.org> To: Andrew Morton <akpm@linux-foundation.org> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>, linux-mm@kvack.org, Hugh Dickins <hughd@google.com> Subject: [PATCH 16/22] mm: Reimplement compound_order() Date: Sat, 31 Dec 2022 21:46:04 +0000 Message-Id: <20221231214610.2800682-17-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20221231214610.2800682-1-willy@infradead.org> References: <20221231214610.2800682-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 5435E20007 X-Rspam-User: X-Stat-Signature: 9c3x49sbjbnbgtkq3tyrcu7hzwtu418d X-HE-Tag: 1672523186-180117 X-HE-Meta: U2FsdGVkX18NKSjaDjAEcUHDrGWGbIPsAPSwiZ5lVWpQuJiCN8kKiHIiJdeS6xNyUtu54Nj5ILzfRZWEk9sXHZFNkaisXQdHLx0VclNOEqO3Tx5jwh50zJdtJoDpNsIwp1fwDeVAQMHQYv7ALjUKxHXqhInkSmOvQbYi4SYgbAMqlUb/JCnd/B4eAfOPfPEnjzrIza+p02uwNuKWnAlGjUpfTDjKUjLa3F8U1pn5Bny88aobShL3tm16lCfOl7SDpcxKbPGffXuKxpVtmaw/vX6AJWuE/Os7uYRm8K6NDCB2/joDVwBPbsxwHuOYYsUp3hAZHnzKdBzNnhvjsOfpegw6lWPE0VLckxPrvH9Xcv1JdjCvnD8+G3bC7IM3Fc1cIXQ0WO0RCm+82yuoQ6OXFuHbOqY3M8oQONO36kBus6KbPEuNYNctBvho1QJgNcJXxhvyOKt8dLTxwCcDvJwRHJpy3MYHDxYKg0b3+UF+VDPIRhGpKeLSpQV1xQFv/Vwwdgu3+rDkOfj3xyU33XAwn/qU+K+IlmQKOkrghcVq9uFuqHaMiNjxqzeyB+Hazo1b7lJph/Yb852sq4XDgxYPiumMDx6ch1LB0T99vGDVzw+Xsmpu2C3fzNlUz/DClo4hqnnLt8PGWenHpYPmV2miKF2HQIQraU4sV6fj9q8aEWfiiWuC1HQVhk96CjegP6A6dvbIHPy6jlpc0+DQLseXVuLU4AtptP+rpSlCPWhdjdyKLk6c58XJBsOIrGj+qJYE+tISF/vVImEhUNYFSZj8HPB4eeQ1Mhr8YWXYj+BkuVRV1QDlGg1Asg3g3TW971zIqCwFzgpJpOS9rHNs/PcUcWI6Ptkr4/uF5N5jq6Wk1eo7IA0O+V4F5OQgKUJQDrMy8oPU+4eWV/oB04EFJFvPGQGhlFpzMrcTL9n2VpDfmTfniYNu8ArQAg== 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: <linux-mm.kvack.org> |
Series |
Get rid of first tail page fields
|
expand
|
diff --git a/include/linux/mm.h b/include/linux/mm.h index fca37afa71c8..19bdb4b0e00a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -714,11 +714,20 @@ int vma_is_stack_for_current(struct vm_area_struct *vma); struct mmu_gather; struct inode; +/* + * compound_order() can be called without holding a reference, which means + * that niceties like page_folio() don't work. These callers should be + * prepared to handle wild return values. For example, PG_head may be + * set before _folio_order is initialised, or this may be a tail page. + * See compaction.c for some good examples. + */ static inline unsigned int compound_order(struct page *page) { - if (!PageHead(page)) + struct folio *folio = (struct folio *)page; + + if (!test_bit(PG_head, &folio->flags)) return 0; - return page[1].compound_order; + return folio->_folio_order; } /**
Make compound_order() use struct folio. It can't be turned into a wrapper around folio_order() as a page can be turned into a tail page between a check in compound_order() and the assertion in folio_test_large(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> --- include/linux/mm.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)