From: Damien Le Moal <dlemoal@kernel.org>
To: Matthew Wilcox <willy@infradead.org>
Cc: "Darrick J. Wong" <djwong@kernel.org>,
Johannes Thumshirn <jth@kernel.org>,
linux-fsdevel@vger.kernel.org,
Johannes Thumshirn <johannes.thumshirn@wdc.com>
Subject: Re: [PATCH] zonefs: move super block reading from page to folio
Date: Mon, 3 Jun 2024 09:30:30 +0900 [thread overview]
Message-ID: <e14e2e96-3d72-4b99-afe0-e44db839e396@kernel.org> (raw)
In-Reply-To: <ZltfsUjv9RaVWCtd@casper.infradead.org>
On 6/2/24 02:51, Matthew Wilcox wrote:
> On Fri, May 31, 2024 at 10:28:50AM +0900, Damien Le Moal wrote:
>>>> This will stop working at some point. It'll return NULL once we get
>>>> to the memdesc future (because the memdesc will be a slab, not a folio).
>>>
>>> Hmmm, xfs_buf.c plays a similar trick here for sub-page buffers. I'm
>>> assuming that will get ported to ... whatever the memdesc future holds?
>
> I don't think it does, exactly? Are you referring to kmem_to_page()?
> That will continue to work. You're not trying to get a folio from a
> slab allocation; that will start to fail.
>
>>>> I think the right way to handle this is to call read_mapping_folio().
>>>> That will allocate a folio in the page cache for you (obeying the
>>>> minimum folio size). Then you can examine the contents. It should
>>>> actually remove code from zonefs. Don't forget to call folio_put()
>>>> when you're done with it (either at unmount or at the end of mount if
>>>> you copy what you need elsewhere).
>>>
>>> The downside of using bd_mapping is that userspace can scribble all over
>>> the folio contents. For zonefs that's less of a big deal because it
>>> only reads it once, but for everyone else (e.g. ext4) it's been a huge
>>
>> Yes, and zonefs super block is read-only, we never update it after formatting.
>>
>>> problem. I guess you could always do max(ZONEFS_SUPER_SIZE,
>>> block_size(sb->s_bdev)) if you don't want to use the pagecache.
>>
>> Good point. ZONEFS_SUPER_SIZE is 4K and given that I only know of 512e and 4K
>> zoned block devices, this is not an issue yet. But better safe than sorry, so
>> doing the max() thing you propose is better. Will patch that.
>
> I think you should use read_mapping_folio() for now instead of
> complicating zonefs. Once there's a grand new buffer cache, switch to
> that, but I don't think you're introducing a significant vulnerability
> by using the block device's page cache.
I was not really thinking about vulnerability here, but rather compatibility
with devices having a block size larger than 4K... But given that these are rare
(at best), a fix for a more intelligent ZONEFS_SUPER_SIZE is not urgent, and not
hard at all anyway.
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2024-06-03 0:30 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-14 15:22 [PATCH] zonefs: move super block reading from page to folio Johannes Thumshirn
2024-05-14 19:12 ` Bill O'Donnell
2024-05-23 1:41 ` Matthew Wilcox
2024-05-23 9:54 ` Johannes Thumshirn
2024-05-23 11:48 ` Matthew Wilcox
2024-05-23 11:49 ` Johannes Thumshirn
2024-05-31 1:16 ` Darrick J. Wong
2024-05-31 1:28 ` Damien Le Moal
2024-06-01 17:51 ` Matthew Wilcox
2024-06-03 0:30 ` Damien Le Moal [this message]
2024-06-04 5:33 ` Christoph Hellwig
2024-06-04 22:30 ` Damien Le Moal
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=e14e2e96-3d72-4b99-afe0-e44db839e396@kernel.org \
--to=dlemoal@kernel.org \
--cc=djwong@kernel.org \
--cc=johannes.thumshirn@wdc.com \
--cc=jth@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=willy@infradead.org \
/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.