PF_SWAPWRITE has been redundant since v3.2 commit 
ee72886d8ed5 ("mm:
vmscan: do not writeback filesystem pages in direct reclaim").
Coincidentally, NeilBrown's current patch "remove inode_congested()"
deletes may_write_to_inode(), which appeared to be the one function which
took notice of PF_SWAPWRITE.  But if you study the old logic, and the
conditions under which may_write_to_inode() was called, you discover that
flag and function have been pointless for a decade.
Link: https://lkml.kernel.org/r/75e80e7-742d-e3bd-531-614db8961e4@google.com
Signed-off-by: Hugh Dickins <hughd@google.com>
Cc: NeilBrown <neilb@suse.de>
Cc: Jan Kara <jack@suse.de>
Cc: "Darrick J. Wong" <djwong@kernel.org>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Matthew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
 
        long pages_written;
 
        set_worker_desc("flush-%s", bdi_dev_name(wb->bdi));
-       current->flags |= PF_SWAPWRITE;
 
        if (likely(!current_is_workqueue_rescuer() ||
                   !test_bit(WB_registered, &wb->state))) {
                wb_wakeup(wb);
        else if (wb_has_dirty_io(wb) && dirty_writeback_interval)
                wb_wakeup_delayed(wb);
-
-       current->flags &= ~PF_SWAPWRITE;
 }
 
 /*
 
         * in any way.
         */
        if (args->kswapd)
-               new_pflags |= PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD;
+               new_pflags |= PF_MEMALLOC | PF_KSWAPD;
 
        current_set_flags_nested(&pflags, new_pflags);
        xfs_trans_set_context(args->cur->bc_tp);
 
                                                 * I am cleaning dirty pages from some other bdi. */
 #define PF_KTHREAD             0x00200000      /* I am a kernel thread */
 #define PF_RANDOMIZE           0x00400000      /* Randomize virtual address space */
-#define PF_SWAPWRITE           0x00800000      /* Allowed to write to swap */
 #define PF_NO_SETAFFINITY      0x04000000      /* Userland is not allowed to meddle with cpus_mask */
 #define PF_MCE_EARLY           0x08000000      /* Early kill for mce process policy */
 #define PF_MEMALLOC_PIN                0x10000000      /* Allocation context constrained to zones which allow long term pinning. */
 
        bool is_thp = false;
        struct page *page;
        struct page *page2;
-       int swapwrite = current->flags & PF_SWAPWRITE;
        int rc, nr_subpages;
        LIST_HEAD(ret_pages);
        LIST_HEAD(thp_split_pages);
 
        trace_mm_migrate_pages_start(mode, reason);
 
-       if (!swapwrite)
-               current->flags |= PF_SWAPWRITE;
-
 thp_subpage_migration:
        for (pass = 0; pass < 10 && (retry || thp_retry); pass++) {
                retry = 0;
        trace_mm_migrate_pages(nr_succeeded, nr_failed_pages, nr_thp_succeeded,
                               nr_thp_failed, nr_thp_split, mode, reason);
 
-       if (!swapwrite)
-               current->flags &= ~PF_SWAPWRITE;
-
        if (ret_succeeded)
                *ret_succeeded = nr_succeeded;
 
 
         * us from recursively trying to free more memory as we're
         * trying to free the first piece of memory in the first place).
         */
-       tsk->flags |= PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD;
+       tsk->flags |= PF_MEMALLOC | PF_KSWAPD;
        set_freezable();
 
        WRITE_ONCE(pgdat->kswapd_order, 0);
                        goto kswapd_try_sleep;
        }
 
-       tsk->flags &= ~(PF_MEMALLOC | PF_SWAPWRITE | PF_KSWAPD);
+       tsk->flags &= ~(PF_MEMALLOC | PF_KSWAPD);
 
        return 0;
 }
        fs_reclaim_acquire(sc.gfp_mask);
        /*
         * We need to be able to allocate from the reserves for RECLAIM_UNMAP
-        * and we also need to be able to write out pages for RECLAIM_WRITE
-        * and RECLAIM_UNMAP.
         */
        noreclaim_flag = memalloc_noreclaim_save();
-       p->flags |= PF_SWAPWRITE;
        set_task_reclaim_state(p, &sc.reclaim_state);
 
        if (node_pagecache_reclaimable(pgdat) > pgdat->min_unmapped_pages) {
        }
 
        set_task_reclaim_state(p, NULL);
-       current->flags &= ~PF_SWAPWRITE;
        memalloc_noreclaim_restore(noreclaim_flag);
        fs_reclaim_release(sc.gfp_mask);
        psi_memstall_leave(&pflags);