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=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 17550C433E0 for ; Fri, 29 May 2020 02:58:36 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D00282075F for ; Fri, 29 May 2020 02:58:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="LoffLE5S" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D00282075F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 39D82800BE; Thu, 28 May 2020 22:58:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04085800BC; Thu, 28 May 2020 22:58:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B3E1C800BA; Thu, 28 May 2020 22:58:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 867B3800B6 for ; Thu, 28 May 2020 22:58:28 -0400 (EDT) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 36405180AD822 for ; Fri, 29 May 2020 02:58:28 +0000 (UTC) X-FDA: 76868248296.21.eggs14_fb25d9c58337 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin21.hostedemail.com (Postfix) with ESMTP id 1C23C180442C0 for ; Fri, 29 May 2020 02:58:28 +0000 (UTC) X-HE-Tag: eggs14_fb25d9c58337 X-Filterd-Recvd-Size: 4282 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf42.hostedemail.com (Postfix) with ESMTP for ; Fri, 29 May 2020 02:58:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.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=u7IT7tEQ9OU7NHthlnWpFkUPruHmC6FNxN+rcFcDJFY=; b=LoffLE5SCQ+OWaYhdzhjsEVrht 6PMlkAvp7p3FiEYgJtsQpUc3qx08WJziVexttyF2hVk08PkNWQdLNddX6+pEoYPBvpaNqYn9ceWmQ GWrQ5TSWFyRcsYw1VCZDwOGc98CMTKlYQkPFwfG2toKQvmNwiOWl5gAVbI98DQzZeJvKALTbWRL7y Nox/aEzgi+NJK59xKl1XuxuxUzu0AVxbDbtI8z3Ho9Obi8Kydc6taJ1OXNgtYCJZDnb77oHq4oxJC GQtxUzjqE/Kkf375uXRHKfM5OU+olx5MnUhJZkWUPVBcV+KPIoscIPCqLdwWBnGP8fkig87PXPbUx DelGTjwA==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jeVE2-0008QN-SL; Fri, 29 May 2020 02:58:26 +0000 From: Matthew Wilcox To: linux-fsdevel@vger.kernel.org Cc: "Matthew Wilcox (Oracle)" , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 08/39] fs: Do not update nr_thps for large page mappings Date: Thu, 28 May 2020 19:57:53 -0700 Message-Id: <20200529025824.32296-9-willy@infradead.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200529025824.32296-1-willy@infradead.org> References: <20200529025824.32296-1-willy@infradead.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 1C23C180442C0 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam04 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: From: "Matthew Wilcox (Oracle)" The nr_thps counter is to support large pages in the page cache when the filesystem does not support writing large pages. Eventually it will be removed, but we should still support filesystems which do not understand large pages yet. Move the nr_thp manipulation functions to filemap.h since they're page-cache specific. Signed-off-by: Matthew Wilcox (Oracle) --- include/linux/fs.h | 27 --------------------------- include/linux/pagemap.h | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/include/linux/fs.h b/include/linux/fs.h index 777783c8760b..1ab65898bd96 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2830,33 +2830,6 @@ static inline errseq_t filemap_sample_wb_err(struc= t address_space *mapping) return errseq_sample(&mapping->wb_err); } =20 -static inline int filemap_nr_thps(struct address_space *mapping) -{ -#ifdef CONFIG_READ_ONLY_THP_FOR_FS - return atomic_read(&mapping->nr_thps); -#else - return 0; -#endif -} - -static inline void filemap_nr_thps_inc(struct address_space *mapping) -{ -#ifdef CONFIG_READ_ONLY_THP_FOR_FS - atomic_inc(&mapping->nr_thps); -#else - WARN_ON_ONCE(1); -#endif -} - -static inline void filemap_nr_thps_dec(struct address_space *mapping) -{ -#ifdef CONFIG_READ_ONLY_THP_FOR_FS - atomic_dec(&mapping->nr_thps); -#else - WARN_ON_ONCE(1); -#endif -} - extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync); extern int vfs_fsync(struct file *file, int datasync); diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index ea869a7fda7a..e40527e53620 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -122,6 +122,35 @@ static inline bool mapping_large_pages(struct addres= s_space *mapping) return test_bit(AS_LARGE_PAGES, &mapping->flags); } =20 +static inline int filemap_nr_thps(struct address_space *mapping) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + return atomic_read(&mapping->nr_thps); +#else + return 0; +#endif +} + +static inline void filemap_nr_thps_inc(struct address_space *mapping) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + if (!mapping_large_pages(mapping)) + atomic_inc(&mapping->nr_thps); +#else + WARN_ON_ONCE(1); +#endif +} + +static inline void filemap_nr_thps_dec(struct address_space *mapping) +{ +#ifdef CONFIG_READ_ONLY_THP_FOR_FS + if (!mapping_large_pages(mapping)) + atomic_dec(&mapping->nr_thps); +#else + WARN_ON_ONCE(1); +#endif +} + void release_pages(struct page **pages, int nr); =20 /* --=20 2.26.2