From: "Pankaj Raghav (Samsung)" <kernel@pankajraghav.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: david@fromorbit.com, ryan.roberts@arm.com, djwong@kernel.org,
linux-kernel@vger.kernel.org, yang@os.amperecomputing.com,
linux-mm@kvack.org, john.g.garry@oracle.com,
linux-fsdevel@vger.kernel.org, hare@suse.de,
p.raghav@samsung.com, mcgrof@kernel.org, gost.dev@samsung.com,
cl@os.amperecomputing.com, linux-xfs@vger.kernel.org, hch@lst.de,
Zi Yan <zi.yan@sent.com>,
akpm@linux-foundation.org, chandan.babu@oracle.com
Subject: Re: [PATCH v8 01/10] fs: Allow fine-grained control of folio sizes
Date: Tue, 9 Jul 2024 17:33:05 +0000 [thread overview]
Message-ID: <20240709173305.gb3ffmlja72ypgsd@quentin> (raw)
In-Reply-To: <Zo1neJYABzuMEvTO@casper.infradead.org>
On Tue, Jul 09, 2024 at 05:38:16PM +0100, Matthew Wilcox wrote:
> On Tue, Jul 09, 2024 at 04:29:07PM +0000, Pankaj Raghav (Samsung) wrote:
> > +++ b/include/linux/pagemap.h
> > @@ -394,13 +394,24 @@ static inline void mapping_set_folio_order_range(struct address_space *mapping,
> > unsigned int min,
> > unsigned int max)
> > {
> > - if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
> > + if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) {
> > + VM_WARN_ONCE(1,
> > + "THP needs to be enabled to support mapping folio order range");
> > return;
> > + }
>
> No. Filesystems call mapping_set_folio_order_range() without it being
> conditional on CONFIG_TRANSPARENT_HUGEPAGE. Usually that takes the
> form of an unconditional call to mapping_set_large_folios().
Ah, you are right.
Actually thinking more about it, we don't need VM_WARN_ONCE on
CONFIG_THP IS_ENABLED, because if we go the route where a FS will
call something like `mapping_max_folio_order_supported()` during mount
time, that will already return `0` as the maximum order that will be
supported.
So just something like this should be enough:
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 14e1415f7dcf..ef6b13854385 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -397,10 +397,18 @@ static inline void mapping_set_folio_order_range(struct address_space *mapping,
if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE))
return;
- if (min > MAX_PAGECACHE_ORDER)
+ if (min > MAX_PAGECACHE_ORDER) {
+ VM_WARN_ONCE(1,
+ "min order > MAX_PAGECACHE_ORDER. Setting min_order to MAX_PAGECACHE_ORDER");
min = MAX_PAGECACHE_ORDER;
- if (max > MAX_PAGECACHE_ORDER)
+ }
+
+ if (max > MAX_PAGECACHE_ORDER) {
+ VM_WARN_ONCE(1,
+ "max order > MAX_PAGECACHE_ORDER. Setting max_order to MAX_PAGECACHE_ORDER");
max = MAX_PAGECACHE_ORDER;
+ }
+
if (max < min)
max = min;
If we have a helper such as mapping_max_folio_order_supported() that
could be invoked by FSs to see what page cache could support.
And FSs that call mapping_set_large_folios() as an optimization will not
see these random WARNINGS because we call this function with the actual
min and max range.
Let me know what you think.
--
Pankaj
next prev parent reply other threads:[~2024-07-09 17:33 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-25 11:44 [PATCH v8 00/10] enable bs > ps in XFS Pankaj Raghav (Samsung)
2024-06-25 11:44 ` [PATCH v8 01/10] fs: Allow fine-grained control of folio sizes Pankaj Raghav (Samsung)
2024-07-04 12:23 ` Ryan Roberts
2024-07-04 15:20 ` Matthew Wilcox
2024-07-04 15:52 ` Ryan Roberts
2024-07-04 21:28 ` Pankaj Raghav (Samsung)
2024-07-04 22:06 ` Dave Chinner
2024-07-04 23:56 ` Matthew Wilcox
2024-07-05 4:32 ` Dave Chinner
2024-07-05 9:03 ` Ryan Roberts
2024-07-05 12:45 ` Pankaj Raghav (Samsung)
2024-07-05 13:24 ` Pankaj Raghav (Samsung)
2024-07-05 13:31 ` Ryan Roberts
2024-07-05 14:14 ` Pankaj Raghav (Samsung)
2024-07-08 23:01 ` Dave Chinner
2024-07-09 8:11 ` Ryan Roberts
2024-07-09 13:08 ` Pankaj Raghav (Samsung)
2024-07-05 15:14 ` Matthew Wilcox
2024-07-04 21:34 ` Pankaj Raghav (Samsung)
2024-07-09 16:29 ` Pankaj Raghav (Samsung)
2024-07-09 16:38 ` Matthew Wilcox
2024-07-09 17:33 ` Pankaj Raghav (Samsung) [this message]
2024-07-09 16:50 ` Darrick J. Wong
2024-07-09 21:08 ` Pankaj Raghav (Samsung)
2024-07-09 21:59 ` Darrick J. Wong
2024-06-25 11:44 ` [PATCH v8 02/10] filemap: allocate mapping_min_order folios in the page cache Pankaj Raghav (Samsung)
2024-06-25 15:52 ` Matthew Wilcox
2024-06-25 18:06 ` Pankaj Raghav (Samsung)
2024-06-25 11:44 ` [PATCH v8 03/10] readahead: allocate folios with mapping_min_order in readahead Pankaj Raghav (Samsung)
2024-07-02 19:38 ` Darrick J. Wong
2024-07-03 14:10 ` Pankaj Raghav (Samsung)
2024-07-04 14:24 ` Ryan Roberts
2024-07-04 14:29 ` Matthew Wilcox
2024-06-25 11:44 ` [PATCH v8 04/10] mm: split a folio in minimum folio order chunks Pankaj Raghav (Samsung)
2024-06-25 14:45 ` Zi Yan
2024-06-25 17:20 ` Pankaj Raghav (Samsung)
2024-06-25 11:44 ` [PATCH v8 05/10] filemap: cap PTE range to be created to allowed zero fill in folio_map_range() Pankaj Raghav (Samsung)
2024-07-01 23:39 ` Darrick J. Wong
2024-06-25 11:44 ` [PATCH v8 06/10] iomap: fix iomap_dio_zero() for fs bs > system page size Pankaj Raghav (Samsung)
2024-07-01 2:37 ` Dave Chinner
2024-07-01 11:22 ` Pankaj Raghav (Samsung)
2024-07-01 23:40 ` Darrick J. Wong
2024-07-02 7:42 ` Christoph Hellwig
2024-07-02 10:15 ` Pankaj Raghav (Samsung)
2024-07-02 12:02 ` Christoph Hellwig
2024-07-02 14:01 ` Pankaj Raghav (Samsung)
2024-07-02 15:42 ` Christoph Hellwig
2024-07-02 16:13 ` Pankaj Raghav (Samsung)
2024-07-02 16:51 ` Matthew Wilcox
2024-07-02 17:10 ` Pankaj Raghav (Samsung)
2024-07-03 5:16 ` Christoph Hellwig
2024-07-02 16:50 ` Matthew Wilcox
2024-07-02 13:49 ` Luis Chamberlain
2024-06-25 11:44 ` [PATCH v8 07/10] xfs: use kvmalloc for xattr buffers Pankaj Raghav (Samsung)
2024-06-25 18:07 ` Pankaj Raghav (Samsung)
2024-06-25 11:44 ` [PATCH v8 08/10] xfs: expose block size in stat Pankaj Raghav (Samsung)
2024-07-01 2:33 ` Dave Chinner
2024-06-25 11:44 ` [PATCH v8 09/10] xfs: make the calculation generic in xfs_sb_validate_fsb_count() Pankaj Raghav (Samsung)
2024-07-01 2:34 ` Dave Chinner
2024-06-25 11:44 ` [PATCH v8 10/10] xfs: enable block size larger than page size support Pankaj Raghav (Samsung)
2024-07-01 2:34 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240709173305.gb3ffmlja72ypgsd@quentin \
--to=kernel@pankajraghav.com \
--cc=akpm@linux-foundation.org \
--cc=chandan.babu@oracle.com \
--cc=cl@os.amperecomputing.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=gost.dev@samsung.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=john.g.garry@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=p.raghav@samsung.com \
--cc=ryan.roberts@arm.com \
--cc=willy@infradead.org \
--cc=yang@os.amperecomputing.com \
--cc=zi.yan@sent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.