On Tue, Mar 23, 2021 at 03:41:25PM +0000, Christoph Hellwig wrote: > On Mon, Mar 22, 2021 at 01:19:07AM +0000, Matthew Wilcox wrote: > > I'd like to get it down to zero. After all, the !mapping case in > > set_page_dirty() is exactly what we want. So is there a problem > > with doing this? > > > > +++ b/mm/page-writeback.c > > @@ -2562 +2562 @@ int set_page_dirty(struct page *page) > > - if (likely(mapping)) { > > + if (likely(mapping && mapping_can_writeback(mapping))) { > > > > But then I noticed that we have both mapping_can_writeback() > > and mapping_use_writeback_tags(), and I'm no longer sure > > which one to use. Also, why don't we mirror the results of > > inode_to_bdi(mapping->host)->capabilities & BDI_CAP_WRITEBACK into > > a mapping->flags & AS_something bit? > > Probably because no one has bothered to submit a patch yet. I was hoping for a little more guidance. Are mapping_can_writeback() and mapping_use_writeback_tags() really the same thing? I mean, obviously the swap spaces actually _can_ writeback, but it doesn't use the tags to do it.