On 2021/09/26 2:09, Matthew Wilcox wrote: > On Sat, Sep 25, 2021 at 04:36:42PM +0100, David Howells wrote: >> Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: >> >>> On Fri, Sep 24, 2021 at 06:19:23PM +0100, David Howells wrote: >>>> Delete the BIO-generating swap read/write paths and always use ->swap_rw(). >>>> This puts the mapping layer in the filesystem. >>> >>> Is SWP_FS_OPS now unused after this patch? >> >> Ummm. Interesting question - it's only used in swap_set_page_dirty(): >> >> int swap_set_page_dirty(struct page *page) >> { >> struct swap_info_struct *sis = page_swap_info(page); >> >> if (data_race(sis->flags & SWP_FS_OPS)) { >> struct address_space *mapping = sis->swap_file->f_mapping; >> >> VM_BUG_ON_PAGE(!PageSwapCache(page), page); >> return mapping->a_ops->set_page_dirty(page); >> } else { >> return __set_page_dirty_no_writeback(page); >> } >> } > > I suspect that's no longer necessary. NFS was the only filesystem > using SWP_FS_OPS and ... > > fs/nfs/file.c: .set_page_dirty = __set_page_dirty_nobuffers, > > so it's not like NFS does anything special to reserve memory to write > back swap pages. > >>> Also, do we still need ->swap_activate and ->swap_deactivate? >> >> f2fs does quite a lot of work in its ->swap_activate(), as does btrfs. I'm >> not sure how necessary it is. cifs looks like it intends to use it, but it's >> not fully implemented yet. zonefs and nfs do some checking, including hole >> checking in nfs's case. nfs also does some setting up for the sunrpc >> transport. >> >> btrfs, cifs, f2fs and nfs all supply ->swap_deactivate() to undo the effects >> of the activation. > > Right ... so my question really is, now that we're doing I/O through > aops->direct_IO (or ->swap_rw), do those magic things need to be done? > After all, open(O_DIRECT) doesn't do these same magic things. They're > really there to allow the direct-to-BIO path to work, and you're removing > that here. For zonefs, ->swap_activate() checks that the user is not trying to use a sequential write only file for swap. Swap cannot work on these files as there are no guarantees that the writes will be sequential. -- Damien Le Moal Western Digital Research