if (throttle_direct_reclaim(sc.gfp_mask, zonelist, nodemask))
                return 1;
 
+       current->reclaim_state = &sc.reclaim_state;
        trace_mm_vmscan_direct_reclaim_begin(order, sc.gfp_mask);
 
        nr_reclaimed = do_try_to_free_pages(zonelist, &sc);
 
        trace_mm_vmscan_direct_reclaim_end(nr_reclaimed);
+       current->reclaim_state = NULL;
 
        return nr_reclaimed;
 }
        };
        unsigned long lru_pages;
 
+       current->reclaim_state = &sc.reclaim_state;
        sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) |
                        (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK);
 
 
        trace_mm_vmscan_memcg_softlimit_reclaim_end(sc.nr_reclaimed);
 
+       current->reclaim_state = NULL;
        *nr_scanned = sc.nr_scanned;
+
        return sc.nr_reclaimed;
 }
 
                .may_shrinkslab = 1,
        };
 
+       current->reclaim_state = &sc.reclaim_state;
        /*
         * Unlike direct reclaim via alloc_pages(), memcg's reclaim doesn't
         * take care of from where we get pages. So the node where we start the
        psi_memstall_leave(&pflags);
 
        trace_mm_vmscan_memcg_reclaim_end(nr_reclaimed);
+       current->reclaim_state = NULL;
 
        return nr_reclaimed;
 }