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.