Thread (17 messages) 17 messages, 3 authors, 2021-07-05

Re: [PATCH 0/2] iomap: small block problems

From: Andreas Gruenbacher <agruenba@redhat.com>
Date: 2021-06-28 21:28:58
Also in: linux-fsdevel

On Mon, Jun 28, 2021 at 8:07 PM Christoph Hellwig [off-list ref] wrote:
On Mon, Jun 28, 2021 at 06:39:09PM +0100, Matthew Wilcox wrote:
quoted
Not hugely happy with either of these options, tbh.  I'd rather we apply
a patch akin to this one (plucked from the folio tree), so won't apply:
quoted
so permit pages without an iop to enter writeback and create an iop
*then*.  Would that solve your problem?
It is the right thing to do, especially when combined with a feature
patch to not bother to create the iomap_page structure on small
block size file systems when the extent covers the whole page.
quoted
quoted
(3) We're not yet using iomap_page_mkwrite, so iomap_page objects don't
get created on .page_mkwrite, either.  Part of the reason is that
iomap_page_mkwrite locks the page and then calls into the filesystem for
uninlining and for allocating backing blocks.  This conflicts with the
gfs2 locking order: on gfs2, transactions must be started before locking
any pages.  We can fix that by calling iomap_page_create from
gfs2_page_mkwrite, or by doing the uninlining and allocations before
calling iomap_page_mkwrite.  I've implemented option 2 for now; see
here:
I think this might also solve this problem?
We'll still need to create the iomap_page structure for page_mkwrite
if there is an extent boundary inside the page.
Yes, but the iop wouldn't need to be allocated in page_mkwrite; that
would be taken care of by iomap_writepage / iomap_writepages as in the
patch suggested by Matthew, right?

Thanks,
Andreas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help