[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <30f5066a-0d3a-425f-a336-16a2af330473@kernel.dk>
Date: Fri, 8 Nov 2024 12:49:58 -0700
From: Jens Axboe <axboe@...nel.dk>
To: Matthew Wilcox <willy@...radead.org>
Cc: linux-mm@...ck.org, linux-fsdevel@...r.kernel.org, hannes@...xchg.org,
clm@...a.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 11/13] iomap: make buffered writes work with RWF_UNCACHED
On 11/8/24 12:26 PM, Jens Axboe wrote:
> On 11/8/24 11:46 AM, Matthew Wilcox wrote:
>> On Fri, Nov 08, 2024 at 10:43:34AM -0700, Jens Axboe wrote:
>>> +++ b/fs/iomap/buffered-io.c
>>> @@ -959,6 +959,8 @@ static loff_t iomap_write_iter(struct iomap_iter *iter, struct iov_iter *i)
>>> }
>>> if (iter->iomap.flags & IOMAP_F_STALE)
>>> break;
>>> + if (iter->flags & IOMAP_UNCACHED)
>>> + folio_set_uncached(folio);
>>
>> This seems like it'd convert an existing page cache folio into being
>> uncached? Is this just leftover from a previous version or is that a
>> design decision you made?
>
> I'll see if we can improve that. Currently both the read and write side
> do drop whatever it touches. We could feasibly just have it drop
> newly instantiated pages - iow, uncached just won't create new persistent
> folios, but it'll happily use the ones that are there already.
Well that was nonsense on the read side, it deliberately only prunes
entries that has uncached set. For the write side, this is a bit
trickier. We'd essentially need to know if the folio populated by
write_begin was found in the page cache, or create from new. Any way we
can do that? One way is to change ->write_begin() so it takes a kiocb
rather than a file, but that's an amount of churn I'd rather avoid!
Maybe there's a way I'm just not seeing?
--
Jens Axboe
Powered by blists - more mailing lists