On Wed, 1 Jul 2020, Dave Hansen wrote:
From: Dave Hansen dave.hansen@linux.intel.com
I went to go add a new RECLAIM_* mode for the zone_reclaim_mode sysctl. Like a good kernel developer, I also went to go update the documentation. I noticed that the bits in the documentation didn't match the bits in the #defines.
The VM never explicitly checks the RECLAIM_ZONE bit. The bit is, however implicitly checked when checking 'node_reclaim_mode==0'. The RECLAIM_ZONE #define was removed in a cleanup. That, by itself is fine.
But, when the bit was removed (bit 0) the _other_ bit locations also got changed. That's not OK because the bit values are documented to mean one specific thing and users surely rely on them meaning that one thing and not changing from kernel to kernel. The end result is that if someone had a script that did:
sysctl vm.zone_reclaim_mode=1
That script went from doing nothing to writing out pages during node reclaim after the commit in question. That's not great.
Put the bits back the way they were and add a comment so something like this is a bit harder to do again. Update the documentation to make it clear that the first bit is ignored.
Signed-off-by: Dave Hansen dave.hansen@linux.intel.com Fixes: 648b5cf368e0 ("mm/vmscan: remove unused RECLAIM_OFF/RECLAIM_ZONE") Cc: Ben Widawsky ben.widawsky@intel.com Cc: Alex Shi alex.shi@linux.alibaba.com Cc: Daniel Wagner dwagner@suse.de Cc: "Tobin C. Harding" tobin@kernel.org Cc: Christoph Lameter cl@linux.com Cc: Andrew Morton akpm@linux-foundation.org Cc: Huang Ying ying.huang@intel.com Cc: Dan Williams dan.j.williams@intel.com Cc: Qian Cai cai@lca.pw Cc: Daniel Wagner dwagner@suse.de Cc: stable@vger.kernel.org
Acked-by: David Rientjes rientjes@google.com