linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
@ 2025-05-29 10:40 ` Vlastimil Babka
  2025-05-29 10:47   ` Kirill A. Shutemov
  2025-05-29 10:43 ` Jens Axboe
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 11+ messages in thread
From: Vlastimil Babka @ 2025-05-29 10:40 UTC (permalink / raw)
  To: Kirill A. Shutemov, Andrew Morton, David Hildenbrand
  Cc: lorenzo.stoakes, Liam.Howlett, rppt, surenb, mhocko, linux-mm,
	linux-kernel, Hongyu Ning, stable, Christoph Hellwig,
	Hannes Reinecke, Johannes Thumshirn, Jens Axboe

On 5/29/25 12:38, Kirill A. Shutemov wrote:
> Hongyu noticed that the nr_unaccepted counter kept growing even in the
> absence of unaccepted memory on the machine.
> 
> This happens due to a commit that removed NR_BOUNCE: it removed the
> counter from the enum zone_stat_item, but left it in the vmstat_text
> array.
> 
> As a result, all counters below nr_bounce in /proc/vmstat are
> shifted by one line, causing the numa_hit counter to be labeled as
> nr_unaccepted.
> 
> To fix this issue, remove nr_bounce from the vmstat_text array.
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> Cc: stable@vger.kernel.org
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.de>
> Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Cc: Jens Axboe <axboe@kernel.dk>

Is there a way to add a BUILD_BUG_ON to catch a future case like this one?

> ---
>  mm/vmstat.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 4c268ce39ff2..ae9882063d89 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1201,7 +1201,6 @@ const char * const vmstat_text[] = {
>  	"nr_zone_unevictable",
>  	"nr_zone_write_pending",
>  	"nr_mlock",
> -	"nr_bounce",
>  #if IS_ENABLED(CONFIG_ZSMALLOC)
>  	"nr_zspages",
>  #endif



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
  2025-05-29 10:40 ` [PATCH] mm: Fix vmstat after removing NR_BOUNCE Vlastimil Babka
@ 2025-05-29 10:43 ` Jens Axboe
  2025-05-29 11:59 ` kernel test robot
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Jens Axboe @ 2025-05-29 10:43 UTC (permalink / raw)
  To: Kirill A. Shutemov, Andrew Morton, David Hildenbrand
  Cc: lorenzo.stoakes, Liam.Howlett, vbabka, rppt, surenb, mhocko,
	linux-mm, linux-kernel, Hongyu Ning, stable, Christoph Hellwig,
	Hannes Reinecke, Johannes Thumshirn

On 5/29/25 4:38 AM, Kirill A. Shutemov wrote:
> Hongyu noticed that the nr_unaccepted counter kept growing even in the
> absence of unaccepted memory on the machine.
> 
> This happens due to a commit that removed NR_BOUNCE: it removed the
> counter from the enum zone_stat_item, but left it in the vmstat_text
> array.
> 
> As a result, all counters below nr_bounce in /proc/vmstat are
> shifted by one line, causing the numa_hit counter to be labeled as
> nr_unaccepted.
> 
> To fix this issue, remove nr_bounce from the vmstat_text array.

Reviewed-by: Jens Axboe <axboe@kernel.dk>

> Cc: stable@vger.kernel.org

No need for a stable tag, the patch went into the 6.16 merge window.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
  2025-05-29 10:40 ` [PATCH] mm: Fix vmstat after removing NR_BOUNCE Vlastimil Babka
@ 2025-05-29 10:47   ` Kirill A. Shutemov
  2025-05-29 10:51     ` Kirill A. Shutemov
  0 siblings, 1 reply; 11+ messages in thread
From: Kirill A. Shutemov @ 2025-05-29 10:47 UTC (permalink / raw)
  To: Vlastimil Babka
  Cc: Andrew Morton, David Hildenbrand, lorenzo.stoakes, Liam.Howlett,
	rppt, surenb, mhocko, linux-mm, linux-kernel, Hongyu Ning,
	stable, Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
	Jens Axboe

On Thu, May 29, 2025 at 12:40:21PM +0200, Vlastimil Babka wrote:
> On 5/29/25 12:38, Kirill A. Shutemov wrote:
> > Hongyu noticed that the nr_unaccepted counter kept growing even in the
> > absence of unaccepted memory on the machine.
> > 
> > This happens due to a commit that removed NR_BOUNCE: it removed the
> > counter from the enum zone_stat_item, but left it in the vmstat_text
> > array.
> > 
> > As a result, all counters below nr_bounce in /proc/vmstat are
> > shifted by one line, causing the numa_hit counter to be labeled as
> > nr_unaccepted.
> > 
> > To fix this issue, remove nr_bounce from the vmstat_text array.
> > 
> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> > Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> > Cc: stable@vger.kernel.org
> > Cc: Christoph Hellwig <hch@lst.de>
> > Cc: Hannes Reinecke <hare@suse.de>
> > Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> > Cc: Jens Axboe <axboe@kernel.dk>
> 
> Is there a way to add a BUILD_BUG_ON to catch a future case like this one?

There's

	BUILD_BUG_ON(ARRAY_SIZE(vmstat_text) < NR_VMSTAT_ITEMS);

in vmstat_start().

Making it strict != seems to do the trick for my config. But it requires
wider testing.

I can prepare a patch for that.

-- 
  Kiryl Shutsemau / Kirill A. Shutemov


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
  2025-05-29 10:47   ` Kirill A. Shutemov
@ 2025-05-29 10:51     ` Kirill A. Shutemov
  2025-05-29 12:30       ` Konstantin Khlebnikov
  0 siblings, 1 reply; 11+ messages in thread
From: Kirill A. Shutemov @ 2025-05-29 10:51 UTC (permalink / raw)
  To: Vlastimil Babka, Konstantin Khlebnikov
  Cc: Andrew Morton, David Hildenbrand, lorenzo.stoakes, Liam.Howlett,
	rppt, surenb, mhocko, linux-mm, linux-kernel, Hongyu Ning,
	stable, Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
	Jens Axboe

On Thu, May 29, 2025 at 01:47:10PM +0300, Kirill A. Shutemov wrote:
> On Thu, May 29, 2025 at 12:40:21PM +0200, Vlastimil Babka wrote:
> > On 5/29/25 12:38, Kirill A. Shutemov wrote:
> > > Hongyu noticed that the nr_unaccepted counter kept growing even in the
> > > absence of unaccepted memory on the machine.
> > > 
> > > This happens due to a commit that removed NR_BOUNCE: it removed the
> > > counter from the enum zone_stat_item, but left it in the vmstat_text
> > > array.
> > > 
> > > As a result, all counters below nr_bounce in /proc/vmstat are
> > > shifted by one line, causing the numa_hit counter to be labeled as
> > > nr_unaccepted.
> > > 
> > > To fix this issue, remove nr_bounce from the vmstat_text array.
> > > 
> > > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > > Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> > > Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> > > Cc: stable@vger.kernel.org
> > > Cc: Christoph Hellwig <hch@lst.de>
> > > Cc: Hannes Reinecke <hare@suse.de>
> > > Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> > > Cc: Jens Axboe <axboe@kernel.dk>
> > 
> > Is there a way to add a BUILD_BUG_ON to catch a future case like this one?
> 
> There's
> 
> 	BUILD_BUG_ON(ARRAY_SIZE(vmstat_text) < NR_VMSTAT_ITEMS);
> 
> in vmstat_start().
> 
> Making it strict != seems to do the trick for my config. But it requires
> wider testing.
> 
> I can prepare a patch for that.

There was a strict check before 9d7ea9a297e6 ("mm/vmstat: add helpers to
get vmstat item names for each enum type"). Not sure if changing != to <
was intentional.

Konstantin?

-- 
  Kiryl Shutsemau / Kirill A. Shutemov


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
  2025-05-29 10:40 ` [PATCH] mm: Fix vmstat after removing NR_BOUNCE Vlastimil Babka
  2025-05-29 10:43 ` Jens Axboe
@ 2025-05-29 11:59 ` kernel test robot
  2025-05-29 12:09   ` Kirill A. Shutemov
  2025-05-29 12:13 ` Vlastimil Babka
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 11+ messages in thread
From: kernel test robot @ 2025-05-29 11:59 UTC (permalink / raw)
  To: Kirill A. Shutemov, Andrew Morton, David Hildenbrand
  Cc: oe-kbuild-all, Linux Memory Management List, lorenzo.stoakes,
	Liam.Howlett, vbabka, rppt, surenb, mhocko, linux-kernel,
	Kirill A. Shutemov, Hongyu Ning, stable, Christoph Hellwig,
	Hannes Reinecke, Johannes Thumshirn, Jens Axboe

Hi Kirill,

kernel test robot noticed the following build errors:

[auto build test ERROR on akpm-mm/mm-everything]

url:    https://github.com/intel-lab-lkp/linux/commits/Kirill-A-Shutemov/mm-Fix-vmstat-after-removing-NR_BOUNCE/20250529-184044
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20250529103832.2937460-1-kirill.shutemov%40linux.intel.com
patch subject: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
config: m68k-allnoconfig (https://download.01.org/0day-ci/archive/20250529/202505291930.NDyeQ06g-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250529/202505291930.NDyeQ06g-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505291930.NDyeQ06g-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from <command-line>:
   mm/vmstat.c: In function 'vmstat_start':
>> include/linux/compiler_types.h:563:45: error: call to '__compiletime_assert_318' declared with attribute error: BUILD_BUG_ON failed: ARRAY_SIZE(vmstat_text) < NR_VMSTAT_ITEMS
     563 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                                             ^
   include/linux/compiler_types.h:544:25: note: in definition of macro '__compiletime_assert'
     544 |                         prefix ## suffix();                             \
         |                         ^~~~~~
   include/linux/compiler_types.h:563:9: note: in expansion of macro '_compiletime_assert'
     563 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
      39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      50 |         BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
         |         ^~~~~~~~~~~~~~~~
   mm/vmstat.c:1872:9: note: in expansion of macro 'BUILD_BUG_ON'
    1872 |         BUILD_BUG_ON(ARRAY_SIZE(vmstat_text) < NR_VMSTAT_ITEMS);
         |         ^~~~~~~~~~~~


vim +/__compiletime_assert_318 +563 include/linux/compiler_types.h

eb5c2d4b45e3d2 Will Deacon 2020-07-21  549  
eb5c2d4b45e3d2 Will Deacon 2020-07-21  550  #define _compiletime_assert(condition, msg, prefix, suffix) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21  551  	__compiletime_assert(condition, msg, prefix, suffix)
eb5c2d4b45e3d2 Will Deacon 2020-07-21  552  
eb5c2d4b45e3d2 Will Deacon 2020-07-21  553  /**
eb5c2d4b45e3d2 Will Deacon 2020-07-21  554   * compiletime_assert - break build and emit msg if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21  555   * @condition: a compile-time constant condition to check
eb5c2d4b45e3d2 Will Deacon 2020-07-21  556   * @msg:       a message to emit if condition is false
eb5c2d4b45e3d2 Will Deacon 2020-07-21  557   *
eb5c2d4b45e3d2 Will Deacon 2020-07-21  558   * In tradition of POSIX assert, this macro will break the build if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21  559   * supplied condition is *false*, emitting the supplied error message if the
eb5c2d4b45e3d2 Will Deacon 2020-07-21  560   * compiler has support to do so.
eb5c2d4b45e3d2 Will Deacon 2020-07-21  561   */
eb5c2d4b45e3d2 Will Deacon 2020-07-21  562  #define compiletime_assert(condition, msg) \
eb5c2d4b45e3d2 Will Deacon 2020-07-21 @563  	_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
eb5c2d4b45e3d2 Will Deacon 2020-07-21  564  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
  2025-05-29 11:59 ` kernel test robot
@ 2025-05-29 12:09   ` Kirill A. Shutemov
  0 siblings, 0 replies; 11+ messages in thread
From: Kirill A. Shutemov @ 2025-05-29 12:09 UTC (permalink / raw)
  To: kernel test robot
  Cc: Andrew Morton, David Hildenbrand, oe-kbuild-all,
	Linux Memory Management List, lorenzo.stoakes, Liam.Howlett,
	vbabka, rppt, surenb, mhocko, linux-kernel, Hongyu Ning, stable,
	Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
	Jens Axboe

On Thu, May 29, 2025 at 07:59:40PM +0800, kernel test robot wrote:
> Hi Kirill,
> 
> kernel test robot noticed the following build errors:
> 
> [auto build test ERROR on akpm-mm/mm-everything]
> 
> url:    https://github.com/intel-lab-lkp/linux/commits/Kirill-A-Shutemov/mm-Fix-vmstat-after-removing-NR_BOUNCE/20250529-184044
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything

Wrong base. Use Linus' tree instead.

-- 
  Kiryl Shutsemau / Kirill A. Shutemov


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
                   ` (2 preceding siblings ...)
  2025-05-29 11:59 ` kernel test robot
@ 2025-05-29 12:13 ` Vlastimil Babka
  2025-05-29 12:22 ` Michal Hocko
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Vlastimil Babka @ 2025-05-29 12:13 UTC (permalink / raw)
  To: Kirill A. Shutemov, Andrew Morton, David Hildenbrand
  Cc: lorenzo.stoakes, Liam.Howlett, rppt, surenb, mhocko, linux-mm,
	linux-kernel, Hongyu Ning, stable, Christoph Hellwig,
	Hannes Reinecke, Johannes Thumshirn, Jens Axboe

On 5/29/25 12:38, Kirill A. Shutemov wrote:
> Hongyu noticed that the nr_unaccepted counter kept growing even in the
> absence of unaccepted memory on the machine.
> 
> This happens due to a commit that removed NR_BOUNCE: it removed the
> counter from the enum zone_stat_item, but left it in the vmstat_text
> array.
> 
> As a result, all counters below nr_bounce in /proc/vmstat are
> shifted by one line, causing the numa_hit counter to be labeled as
> nr_unaccepted.
> 
> To fix this issue, remove nr_bounce from the vmstat_text array.
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> Cc: stable@vger.kernel.org

Not necessary, as the fixes commit is from this merge window?

> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.de>
> Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Cc: Jens Axboe <axboe@kernel.dk>

Reviewed-by: Vlastimil Babka <vbabka@suse.cz>

> ---
>  mm/vmstat.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 4c268ce39ff2..ae9882063d89 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1201,7 +1201,6 @@ const char * const vmstat_text[] = {
>  	"nr_zone_unevictable",
>  	"nr_zone_write_pending",
>  	"nr_mlock",
> -	"nr_bounce",
>  #if IS_ENABLED(CONFIG_ZSMALLOC)
>  	"nr_zspages",
>  #endif



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
                   ` (3 preceding siblings ...)
  2025-05-29 12:13 ` Vlastimil Babka
@ 2025-05-29 12:22 ` Michal Hocko
  2025-05-29 18:13 ` Shakeel Butt
  2025-06-02  5:01 ` Christoph Hellwig
  6 siblings, 0 replies; 11+ messages in thread
From: Michal Hocko @ 2025-05-29 12:22 UTC (permalink / raw)
  To: Kirill A. Shutemov
  Cc: Andrew Morton, David Hildenbrand, lorenzo.stoakes, Liam.Howlett,
	vbabka, rppt, surenb, linux-mm, linux-kernel, Hongyu Ning,
	stable, Christoph Hellwig, Hannes Reinecke, Johannes Thumshirn,
	Jens Axboe

On Thu 29-05-25 13:38:32, Kirill A. Shutemov wrote:
> Hongyu noticed that the nr_unaccepted counter kept growing even in the
> absence of unaccepted memory on the machine.
> 
> This happens due to a commit that removed NR_BOUNCE: it removed the
> counter from the enum zone_stat_item, but left it in the vmstat_text
> array.
> 
> As a result, all counters below nr_bounce in /proc/vmstat are
> shifted by one line, causing the numa_hit counter to be labeled as
> nr_unaccepted.
> 
> To fix this issue, remove nr_bounce from the vmstat_text array.
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> Cc: stable@vger.kernel.org
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.de>
> Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Cc: Jens Axboe <axboe@kernel.dk>

Acked-by: Michal Hocko <mhocko@suse.com>
Unfortunatelly a common mistake to make. I have seen you have a followup
fix with a stricter build time check. Will have a look.

Thanks!

> ---
>  mm/vmstat.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 4c268ce39ff2..ae9882063d89 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1201,7 +1201,6 @@ const char * const vmstat_text[] = {
>  	"nr_zone_unevictable",
>  	"nr_zone_write_pending",
>  	"nr_mlock",
> -	"nr_bounce",
>  #if IS_ENABLED(CONFIG_ZSMALLOC)
>  	"nr_zspages",
>  #endif
> -- 
> 2.47.2

-- 
Michal Hocko
SUSE Labs


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
  2025-05-29 10:51     ` Kirill A. Shutemov
@ 2025-05-29 12:30       ` Konstantin Khlebnikov
  0 siblings, 0 replies; 11+ messages in thread
From: Konstantin Khlebnikov @ 2025-05-29 12:30 UTC (permalink / raw)
  To: Kirill A. Shutemov
  Cc: Vlastimil Babka, Andrew Morton, David Hildenbrand,
	lorenzo.stoakes, Liam.Howlett, rppt, surenb, mhocko, linux-mm,
	linux-kernel, Hongyu Ning, stable, Christoph Hellwig,
	Hannes Reinecke, Johannes Thumshirn, Jens Axboe

On Thu, 29 May 2025 at 12:51, Kirill A. Shutemov
<kirill.shutemov@linux.intel.com> wrote:
>
> On Thu, May 29, 2025 at 01:47:10PM +0300, Kirill A. Shutemov wrote:
> > On Thu, May 29, 2025 at 12:40:21PM +0200, Vlastimil Babka wrote:
> > > On 5/29/25 12:38, Kirill A. Shutemov wrote:
> > > > Hongyu noticed that the nr_unaccepted counter kept growing even in the
> > > > absence of unaccepted memory on the machine.
> > > >
> > > > This happens due to a commit that removed NR_BOUNCE: it removed the
> > > > counter from the enum zone_stat_item, but left it in the vmstat_text
> > > > array.
> > > >
> > > > As a result, all counters below nr_bounce in /proc/vmstat are
> > > > shifted by one line, causing the numa_hit counter to be labeled as
> > > > nr_unaccepted.
> > > >
> > > > To fix this issue, remove nr_bounce from the vmstat_text array.
> > > >
> > > > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > > > Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> > > > Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> > > > Cc: stable@vger.kernel.org
> > > > Cc: Christoph Hellwig <hch@lst.de>
> > > > Cc: Hannes Reinecke <hare@suse.de>
> > > > Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> > > > Cc: Jens Axboe <axboe@kernel.dk>
> > >
> > > Is there a way to add a BUILD_BUG_ON to catch a future case like this one?
> >
> > There's
> >
> >       BUILD_BUG_ON(ARRAY_SIZE(vmstat_text) < NR_VMSTAT_ITEMS);
> >
> > in vmstat_start().
> >
> > Making it strict != seems to do the trick for my config. But it requires
> > wider testing.
> >
> > I can prepare a patch for that.
>
> There was a strict check before 9d7ea9a297e6 ("mm/vmstat: add helpers to
> get vmstat item names for each enum type"). Not sure if changing != to <
> was intentional.
>
> Konstantin?

I have no clue. Sorry.

>
> --
>   Kiryl Shutsemau / Kirill A. Shutemov


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
                   ` (4 preceding siblings ...)
  2025-05-29 12:22 ` Michal Hocko
@ 2025-05-29 18:13 ` Shakeel Butt
  2025-06-02  5:01 ` Christoph Hellwig
  6 siblings, 0 replies; 11+ messages in thread
From: Shakeel Butt @ 2025-05-29 18:13 UTC (permalink / raw)
  To: Kirill A. Shutemov
  Cc: Andrew Morton, David Hildenbrand, lorenzo.stoakes, Liam.Howlett,
	vbabka, rppt, surenb, mhocko, linux-mm, linux-kernel,
	Hongyu Ning, stable, Christoph Hellwig, Hannes Reinecke,
	Johannes Thumshirn, Jens Axboe

On Thu, May 29, 2025 at 01:38:32PM +0300, Kirill A. Shutemov wrote:
> Hongyu noticed that the nr_unaccepted counter kept growing even in the
> absence of unaccepted memory on the machine.
> 
> This happens due to a commit that removed NR_BOUNCE: it removed the
> counter from the enum zone_stat_item, but left it in the vmstat_text
> array.
> 
> As a result, all counters below nr_bounce in /proc/vmstat are
> shifted by one line, causing the numa_hit counter to be labeled as
> nr_unaccepted.
> 
> To fix this issue, remove nr_bounce from the vmstat_text array.
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Reported-by: Hongyu Ning <hongyu.ning@linux.intel.com>
> Fixes: 194df9f66db8 ("mm: remove NR_BOUNCE zone stat")
> Cc: stable@vger.kernel.org
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Hannes Reinecke <hare@suse.de>
> Cc: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Cc: Jens Axboe <axboe@kernel.dk>

Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>

Can we put BUILD_BUG_ON() to avoid this situation in the future?



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH] mm: Fix vmstat after removing NR_BOUNCE
       [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
                   ` (5 preceding siblings ...)
  2025-05-29 18:13 ` Shakeel Butt
@ 2025-06-02  5:01 ` Christoph Hellwig
  6 siblings, 0 replies; 11+ messages in thread
From: Christoph Hellwig @ 2025-06-02  5:01 UTC (permalink / raw)
  To: Kirill A. Shutemov
  Cc: Andrew Morton, David Hildenbrand, lorenzo.stoakes, Liam.Howlett,
	vbabka, rppt, surenb, mhocko, linux-mm, linux-kernel,
	Hongyu Ning, stable, Christoph Hellwig, Hannes Reinecke,
	Johannes Thumshirn, Jens Axboe

On Thu, May 29, 2025 at 01:38:32PM +0300, Kirill A. Shutemov wrote:
> Hongyu noticed that the nr_unaccepted counter kept growing even in the
> absence of unaccepted memory on the machine.
> 
> This happens due to a commit that removed NR_BOUNCE: it removed the
> counter from the enum zone_stat_item, but left it in the vmstat_text
> array.
> 
> As a result, all counters below nr_bounce in /proc/vmstat are
> shifted by one line, causing the numa_hit counter to be labeled as
> nr_unaccepted.
> 
> To fix this issue, remove nr_bounce from the vmstat_text array.

Ooops, yes:

Reviewed-by: Christoph Hellwig <hch@lst.de>

> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index 4c268ce39ff2..ae9882063d89 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -1201,7 +1201,6 @@ const char * const vmstat_text[] = {
>  	"nr_zone_unevictable",
>  	"nr_zone_write_pending",
>  	"nr_mlock",
> -	"nr_bounce",
>  #if IS_ENABLED(CONFIG_ZSMALLOC)
>  	"nr_zspages",
>  #endif

It would be really useful if such pretty printing arrays used
named initializers, as that would make it obvious that an entry
needs removal.



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-06-02  5:01 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20250529103832.2937460-1-kirill.shutemov@linux.intel.com>
2025-05-29 10:40 ` [PATCH] mm: Fix vmstat after removing NR_BOUNCE Vlastimil Babka
2025-05-29 10:47   ` Kirill A. Shutemov
2025-05-29 10:51     ` Kirill A. Shutemov
2025-05-29 12:30       ` Konstantin Khlebnikov
2025-05-29 10:43 ` Jens Axboe
2025-05-29 11:59 ` kernel test robot
2025-05-29 12:09   ` Kirill A. Shutemov
2025-05-29 12:13 ` Vlastimil Babka
2025-05-29 12:22 ` Michal Hocko
2025-05-29 18:13 ` Shakeel Butt
2025-06-02  5:01 ` Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox