Re: [RFC PATCH] iomap: add support to track dirty state of sub pages

From: Christoph Hellwig
Date: Fri Jul 31 2020 - 02:59:54 EST


On Thu, Jul 30, 2020 at 04:19:34AM +0100, Matthew Wilcox wrote:
> On Thu, Jul 30, 2020 at 09:19:01AM +0800, Yu Kuai wrote:
> > +++ b/fs/iomap/buffered-io.c
> > @@ -29,7 +29,9 @@ struct iomap_page {
> > atomic_t read_count;
> > atomic_t write_count;
> > spinlock_t uptodate_lock;
> > + spinlock_t dirty_lock;
>
> No need for a separate spinlock. Just rename uptodate_lock. Maybe
> 'bitmap_lock'.

Agreed.

>
> > DECLARE_BITMAP(uptodate, PAGE_SIZE / 512);
> > + DECLARE_BITMAP(dirty, PAGE_SIZE / 512);
>
> This is inefficient and poses difficulties for the THP patchset.
> Maybe let the discussion on removing the ->uptodate array finish
> before posting another patch for review?

I really don't think we can kill the uptodate bit. But what we can
do is have on bitmap array (flex size as in your prep patches) and just
alternating bits for uptodate and dirty.