[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YQvbiCubotHz6cN7@casper.infradead.org>
Date: Thu, 5 Aug 2021 13:37:28 +0100
From: Matthew Wilcox <willy@...radead.org>
To: David Howells <dhowells@...hat.com>
Cc: linux-fsdevel@...r.kernel.org, jlayton@...nel.org,
Christoph Hellwig <hch@...radead.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
dchinner@...hat.com, linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: Could it be made possible to offer "supplementary" data to a DIO
write ?
On Thu, Aug 05, 2021 at 11:19:17AM +0100, David Howells wrote:
> I'm working on network filesystem write helpers to go with the read helpers,
> and I see situations where I want to write a few bytes to the cache, but have
> more available that could be written also if it would allow the
> filesystem/blockdev to optimise its layout.
>
> Say, for example, I need to write a 3-byte change from a page, where that page
> is part of a 256K sequence in the pagecache. Currently, I have to round the
> 3-bytes out to DIO size/alignment, but I could say to the API, for example,
> "here's a 256K iterator - I need bytes 225-227 written, but you can write more
> if you want to"?
I think you're optimising the wrong thing. No actual storage lets you
write three bytes. You're just pushing the read/modify/write cycle to
the remote end. So you shouldn't even be tracking that three bytes have
been dirtied; you should be working in multiples of i_blocksize().
I don't know of any storage which lets you ask "can I optimise this
further for you by using a larger size". Maybe we have some (software)
compressed storage which could do a better job if given a whole 256kB
block to recompress.
So it feels like you're both tracking dirty data at too fine a
granularity, and getting ahead of actual hardware capabilities by trying
to introduce a too-flexible API.
Powered by blists - more mailing lists