From: David Howells <dhowells@redhat.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: dhowells@redhat.com, Matthew Wilcox <willy@infradead.org>,
Dave Chinner <david@fromorbit.com>,
"Ritesh Harjani (IBM)" <ritesh.list@gmail.com>,
linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
"Darrick J . Wong" <djwong@kernel.org>,
Aravinda Herle <araherle@in.ibm.com>
Subject: Re: [RFC 2/2] iomap: Support subpage size dirty tracking to improve write performance
Date: Mon, 07 Nov 2022 13:03:15 +0000 [thread overview]
Message-ID: <1530987.1667826195@warthog.procyon.org.uk> (raw)
In-Reply-To: <Y2S/q11ijXEqr8ue@infradead.org>
Christoph Hellwig <hch@infradead.org> wrote:
> The core iomap code (fs/iomap/iter.c) does not. Most users of it
> are block device centric right now, but for example the dax.c uses
> iomap for byte level DAX accesses without ever looking at a bdev,
> and seek.c and fiemap.c do not make any assumptions on the backend
> implementation.
Whilst that is true, what's in iter.c is extremely minimal and most definitely
not sufficient. There's no retry logic, for example: what happens when we try
poking the cache and the cache says "no data"? We have to go back and
redivide the missing bits of the request as the netfs granularity may not
match that of the cache. Also, how to deal with writes that have to be
duplicated to multiple servers that don't all have the same wsize?
Then functions like iomap_read_folio(), iomap_readahead(), etc. *do* use
submit_bio(). These would seem like they're meant to be the main entry points
into iomap.
Add to that struct iomap_iter has two bdev pointers and two dax pointers and
the iomap_ioend struct assumes bio structs are going to be involved.
Also, there's struct iomap_page - I'm hoping to avoid the need for a dangly
struct on each page. I *think* I only need an extra couple of bits per page
to discriminate between pages that need writing to the cache, pages that need
writing to the server, and pages that need to go to both - but I think it
might be possible to keep track of that in a separate list. The vast majority
of write patterns are {open,write,write,...,write,close} and for such I just
need a single tracking struct.
David
next prev parent reply other threads:[~2022-11-07 13:04 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-28 4:30 [RFC 0/2] iomap: Add support for subpage dirty state tracking to improve write performance Ritesh Harjani (IBM)
2022-10-28 4:30 ` [RFC 1/2] iomap: Change uptodate variable name to state Ritesh Harjani (IBM)
2022-10-28 16:31 ` Darrick J. Wong
2022-10-29 3:09 ` Ritesh Harjani (IBM)
2022-10-28 4:30 ` [RFC 2/2] iomap: Support subpage size dirty tracking to improve write performance Ritesh Harjani (IBM)
2022-10-28 12:42 ` Matthew Wilcox
2022-10-29 3:05 ` Ritesh Harjani (IBM)
2022-10-28 17:01 ` Darrick J. Wong
2022-10-28 18:15 ` Matthew Wilcox
2022-10-29 3:25 ` Ritesh Harjani (IBM)
2022-10-28 21:04 ` Dave Chinner
2022-10-30 3:27 ` Ritesh Harjani (IBM)
2022-10-30 22:31 ` Dave Chinner
2022-10-31 3:43 ` Matthew Wilcox
2022-10-31 7:08 ` Dave Chinner
2022-10-31 10:27 ` Matthew Wilcox
2022-11-02 8:57 ` Christoph Hellwig
2022-11-03 0:38 ` Dave Chinner
2022-11-02 9:03 ` Christoph Hellwig
2022-11-02 17:35 ` Darrick J. Wong
2022-11-04 7:27 ` Christoph Hellwig
2022-11-04 14:15 ` Ritesh Harjani (IBM)
2022-11-03 14:51 ` David Howells
2022-11-04 7:30 ` Christoph Hellwig
2022-11-07 13:03 ` David Howells [this message]
2022-11-03 14:12 ` David Howells
2022-11-04 11:28 ` Ritesh Harjani (IBM)
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=1530987.1667826195@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=araherle@in.ibm.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=ritesh.list@gmail.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox