Hi Yang, On Wed, Aug 19, 2020 at 02:41:08PM -0700, Yang Shi wrote: > On Wed, Aug 19, 2020 at 1:15 PM Gao Xiang <hsiangkao@xxxxxxxxxx> wrote: > > > > Hi Andrew, > > > > On Wed, Aug 19, 2020 at 01:05:06PM -0700, Andrew Morton wrote: > > > On Thu, 20 Aug 2020 03:56:13 +0800 Gao Xiang <hsiangkao@xxxxxxxxxx> wrote: > > > > > > > SWP_FS doesn't mean the device is file-backed swap device, > > > > which just means each writeback request should go through fs > > > > by DIO. Or it'll just use extents added by .swap_activate(), > > > > but it also works as file-backed swap device. > > > > > > This is very hard to understand :( > > > > Thanks for your reply... > > > > The related logic is in __swap_writepage() and setup_swap_extents(), > > and also see e.g generic_swapfile_activate() or iomap_swapfile_activate()... > > I think just NFS falls into this case, so you may rephrase it to: > > SWP_FS is only used for swap files over NFS. So, !SWP_FS means non NFS > swap, it could be either file backed or device backed. Thanks for your suggestion... That looks reasonable, and after I looked bc4ae27d817a ("mm: split SWP_FILE into SWP_ACTIVATED and SWP_FS") I think it could be rephrased into " The SWP_FS flag is used to make swap_{read,write}page() go through the filesystem, and it's only used for swap files over NFS. So, !SWP_FS means non NFS for now, it could be either file backed or device backed. Something similar goes with legacy SWP_FILE. " Does it look sane? And I will wait for further suggestion about this for a while. And IMO, SWP_FS flag might be useful for other uses later (e.g. laterly for some CoW swapfile use, but I don't think carefully if it's practical or not...) Thanks, Gao Xiang