Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp803559ybg; Wed, 10 Jun 2020 14:16:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqKGC2Gqt6PL8El+D9nkB/PudVmLwE48G6St4UNN1dCyDVk1O5JLvMYKrXqJtsvPZX9GZP X-Received: by 2002:a17:906:ae85:: with SMTP id md5mr5261330ejb.213.1591823811107; Wed, 10 Jun 2020 14:16:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591823811; cv=none; d=google.com; s=arc-20160816; b=WID9bymEN7TQ8HyukDvBxsLeyr7HwEq0xt3gA29jOV6JInWHpA3V11DXRCpYv1zDM5 60Jj80nDbIGZ91Wk8i6qhji74JYfigCQDKSuVL9dtjXIVKh7JXY9YYMUZfRbe0EnZAfP vp1ihzTd8YlS6hwEj5PwD8/P0nXWoN0/Fy/T7LSz4Q1PU3T1LLbeNRwRBZygMlF1xJf8 k0/fLIM1Xoo79V3pOtGWmiqmuuYQUR3JgdTo+X4F67D6Co0zhD5qjm8ywueihXZc6xvW w2Q6NZ5KQFARuy6XHQV9mQjjP1vCvq7NBj48KGACsX73wQsKh5NeqpoV05KJ+YzRNt+w 3VgQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=S5644RWSmzLKClPw4/cvpdrJ3oC3Vx5GXky4qEg0/Sw=; b=FpleTf5xN1emBn1lkaRC+q7JgedTeJTy6fBoR9XwS7o62USzkzHSgifAyebDagL5UJ 4OhZSAfZG4V/fIphEe6f7vsnhfuk2qVZ0OgCNKdrB+CHF95jGmmWdrpAEJg4URSnptdO ZeYfoXBXh82fS4FO47SgAf4l7LElWqP0PNSX33iwn9/u4eIatKG7bOSkYjbgYy35L1n/ fBZ1VrDsbJ5XrvdDVnRAZ1GMVjfjzWRtw/ArX4wl2+2LWFK7P+H4RS033aCroQ+H+5hM L+8Z0mRcdTpU0HlR43rxZg+6L+OHOp8NvFw0V2vAJMGP6M5wkvbjdkqvy7AhBsS8ZsVp /Z3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=t387Iyw8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o22si742332ejh.73.2020.06.10.14.16.28; Wed, 10 Jun 2020 14:16:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=t387Iyw8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726819AbgFJURs (ORCPT + 99 others); Wed, 10 Jun 2020 16:17:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730532AbgFJUNs (ORCPT ); Wed, 10 Jun 2020 16:13:48 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E4933C08C5C9; Wed, 10 Jun 2020 13:13:47 -0700 (PDT) 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=S5644RWSmzLKClPw4/cvpdrJ3oC3Vx5GXky4qEg0/Sw=; b=t387Iyw8XBmw/PCNwgPA8fTWvX FDCT5sqoJc6buh0Ea9yw6B2Mwdne1kqZXmXFEiSPqzIShANQmCPWpqt8kJbRyg6u1hd57zpjigSLB Bo2UINMBdXnjnmijOgZeH4p5NAJgF/j2o0QZDy7v7ELE1rVt7PJR8xLH2BJlaIVxyK3QlN1h+a/Dd 1G+Ivtl/Khg2942dOxVmkbayq7S0bA59/afBuDV5ELg3XHIOwlzCJHJbHnKOsCkZAFLS7ejdVfWBz HbrUUIkv2/0kRFQFAn/aryEP/3L9xA4lNXei1WUa035YzAg4Fhhs09+aWElbFTkrguFtEvMCUlpmW c/yW5gJQ==; Received: from willy by bombadil.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1jj76Z-0003UO-Qp; Wed, 10 Jun 2020 20:13:47 +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 v6 15/51] fs: Do not update nr_thps for mappings which support THPs Date: Wed, 10 Jun 2020 13:13:09 -0700 Message-Id: <20200610201345.13273-16-willy@infradead.org> X-Mailer: git-send-email 2.21.1 In-Reply-To: <20200610201345.13273-1-willy@infradead.org> References: <20200610201345.13273-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Matthew Wilcox (Oracle)" The nr_thps counter is to support THPs in the page cache when the filesystem doesn't understand THPs. Eventually it will be removed, but we should still support filesystems which do not understand THPs 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 ac411a08f83c..e11929152103 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2839,33 +2839,6 @@ static inline errseq_t file_sample_sb_err(struct file *file) return errseq_sample(&file->f_path.dentry->d_sb->s_wb_err); } -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 8a45b572bcf1..644caff3e78b 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -125,6 +125,35 @@ static inline bool mapping_thp_support(struct address_space *mapping) return test_bit(AS_THP_SUPPORT, &mapping->flags); } +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_thp_support(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_thp_support(mapping)) + atomic_dec(&mapping->nr_thps); +#else + WARN_ON_ONCE(1); +#endif +} + void release_pages(struct page **pages, int nr); /* -- 2.26.2