[RFC] Re: [PROBLEM] mm/vmstat.c:34:12: error: ‘vmstat_late_init_done’ defined but not used [-Werror=unused-variable]

Mirsad Todorovac
2024-08-13T23:19:06Z

[-- Attachment #1: Type: text/plain, Size: 6337 bytes --]

On 8/14/24 00:03, Mirsad Todorovac wrote:
> Hi, all,
>
> Now, the "randconfig" seed KCONFIG_SEED=0x44AB31A6 revealed another bug:
>
> mm/vmstat.c:34:12: error: ‘vmstat_late_init_done’ defined but not used [-Werror=unused-variable]
> 34 | static int vmstat_late_init_done;
> | ^~~~~~~~~~~~~~~~~~~~~
>
> Apparently, it is obviously wrong because it is used below:
>
> Fixes: ef534a0d51984 ("mm/vmstat: defer the refresh_zone_stat_thresholds after all CPUs bringu")
>
> #ifdef .. #endif forest might be better documented, but this small fix makes it running
> again:
>
> -----------------------------------------------------><----------------------------------
> diff --git a/mm/vmstat.c b/mm/vmstat.c
> index e361c2b3a8bc..85b3fc0084a8 100644
> --- a/mm/vmstat.c
> +++ b/mm/vmstat.c
> @@ -31,7 +31,10 @@
>
> #include "internal.h"
>
> +#ifdef CONFIG_SMP
> static int vmstat_late_init_done;
> +#endif /* CONFIG_SMP */
> +
> #ifdef CONFIG_NUMA
> int sysctl_vm_numa_stat = ENABLE_NUMA_STAT;
>
> --
>
> It eliminates -Werror=unused-variable and compile passes at least:
>
> CC kernel/sys.o
> CC mm/vmstat.o
> AR init/built-in.a
>
> Hope thi s helps.
>
> Best regards,
> Mirsad Todorovac

Hi, all,

After this unobvious error that appeared only under certain configs, I thought of a little
housekeeping, according to the instructions here:

https://www.kernel.org/doc/html/v4.15/process/coding-style.html#conditional-compilation

A little homework might make the #ifdef ... #else ... #endif forest more readable:

1932:#ifdef CONFIG_SMP
1936:# ifdef CONFIG_PROC_FS
1999:# endif /* CONFIG_PROC_FS */
2137: if (vmstat_late_init_done)
2173: vmstat_late_init_done = 1;
2178:#endif /* CONFIG_SMP */
2188:#ifdef CONFIG_SMP
2205:#endif /* CONFIG_SMP */

or the entire mm/vmstat.c:

34:#ifdef CONFIG_SMP
35:static int vmstat_late_init_done;
36:#endif /* CONFIG_SMP */
38:#ifdef CONFIG_NUMA
108:#endif /* CONFIG_NUMA */
110:#ifdef CONFIG_VM_EVENT_COUNTERS
159:#endif /* CONFIG_VM_EVENT_COUNTERS */
172:#ifdef CONFIG_NUMA
198:#endif /* CONFIG_NUMA */
200:#ifdef CONFIG_SMP
548:# ifdef CONFIG_HAVE_CMPXCHG_LOCAL
692:# else
771:# endif /* CONFIG_HAVE_CMPXCHG_LOCAL */
833:#ifdef CONFIG_NUMA
836:#endif /* CONFIG_NUMA */
844:#ifdef CONFIG_NUMA
873:#endif /* CONFIG_NUMA */
923:#ifdef CONFIG_NUMA
933:#endif /* CONFIG_NUMA */
972:#ifdef CONFIG_NUMA
980:#endif /* CONFIG_NUMA */
982:#endif /* CONFIG_SMP */
984:#ifdef CONFIG_NUMA
1024:# ifdef CONFIG_SMP
1027:# endif /* CONFIG_SMP */
1038:#endif /* CONFIG_NUMA */
1058:#ifdef CONFIG_COMPACTION
1162:#endif /* CONFIG_COMPACTION */
1164:#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS) || \
1166:# ifdef CONFIG_ZONE_DMA
1167:# define TEXT_FOR_DMA(xx) xx "_dma",
1168:# else
1169:# define TEXT_FOR_DMA(xx)
1170:# endif
1172:# ifdef CONFIG_ZONE_DMA32
1173:# define TEXT_FOR_DMA32(xx) xx "_dma32",
1174:# else
1175:# define TEXT_FOR_DMA32(xx)
1176:# endif
1178:# ifdef CONFIG_HIGHMEM
1179:# define TEXT_FOR_HIGHMEM(xx) xx "_high",
1180:# else
1181:# define TEXT_FOR_HIGHMEM(xx)
1182:# endif
1184:# ifdef CONFIG_ZONE_DEVICE
1185:# define TEXT_FOR_DEVICE(xx) xx "_device",
1186:# else
1187:# define TEXT_FOR_DEVICE(xx)
1188:# endif
1190:# define TEXTS_FOR_ZONES(xx) TEXT_FOR_DMA(xx) TEXT_FOR_DMA32(xx) xx "_normal", \
1205:# if IS_ENABLED(CONFIG_ZSMALLOC)
1207:# endif
1209:# ifdef CONFIG_UNACCEPTED_MEMORY
1211:# endif
1214:# ifdef CONFIG_NUMA
1221:# endif
1262:# if IS_ENABLED(CONFIG_SHADOW_CALL_STACK)
1264:# endif
1267:# ifdef CONFIG_IOMMU_SUPPORT
1269:# endif
1270:# ifdef CONFIG_SWAP
1272:# endif
1273:# ifdef CONFIG_NUMA_BALANCING
1276:# endif
1286:# if defined(CONFIG_VM_EVENT_COUNTERS) || defined(CONFIG_MEMCG)
1320:# ifdef CONFIG_NUMA
1323:# endif
1337:# ifdef CONFIG_NUMA_BALANCING
1343:# endif
1344:# ifdef CONFIG_MIGRATION
1350:# endif
1351:# ifdef CONFIG_COMPACTION
1361:# endif
1363:# ifdef CONFIG_HUGETLB_PAGE
1366:# endif
1367:# ifdef CONFIG_CMA
1370:# endif
1379:# ifdef CONFIG_TRANSPARENT_HUGEPAGE
1396:# ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
1398:# endif
1403:# endif /*CONFIG_TRANSPARENT_HUGEPAGE */
1404:# ifdef CONFIG_MEMORY_BALLOON
1407:# ifdef CONFIG_BALLOON_COMPACTION
1409:# endif
1410:# endif /* CONFIG_MEMORY_BALLOON */
1411:# ifdef CONFIG_DEBUG_TLBFLUSH
1416:# endif /* CONFIG_DEBUG_TLBFLUSH */
1418:# ifdef CONFIG_SWAP
1421:# ifdef CONFIG_KSM
1423:# endif /* CONFIG_KSM */
1424:# endif /* CONFIG_SWAP */
1425:# ifdef CONFIG_KSM
1427:# endif
1428:# ifdef CONFIG_ZSWAP
1432:# endif
1433:# ifdef CONFIG_X86
1436:# endif
1437:# ifdef CONFIG_PER_VMA_LOCK_STATS
1442:# endif
1443:# ifdef CONFIG_DEBUG_STACK_USAGE
1445:# if THREAD_SIZE > 1024
1447:# endif
1448:# if THREAD_SIZE > 2048
1450:# endif
1451:# if THREAD_SIZE > 4096
1453:# endif
1454:# if THREAD_SIZE > 8192
1456:# endif
1457:# if THREAD_SIZE > 16384
1459:# endif
1460:# if THREAD_SIZE > 32768
1462:# endif
1463:# if THREAD_SIZE > 65536
1465:# endif
1466:# endif /* CONFIG_DEBUG_STACK_USAGE */
1467:# endif /* CONFIG_VM_EVENT_COUNTERS || CONFIG_MEMCG */
1469:#endif /* CONFIG_PROC_FS || CONFIG_SYSFS || CONFIG_NUMA || CONFIG_MEMCG */
1471:#if (defined(CONFIG_DEBUG_FS) && defined(CONFIG_COMPACTION)) || \
1521:#endif /* CONFIG_DEBUG_FS && CONFIG_COMPACTION || CONFIG_PROC_FS */
1523:#ifdef CONFIG_PROC_FS
1660:# ifdef CONFIG_PAGE_OWNER
1675:# endif /* CONFIG_PAGE_OWNER */
1783:# ifdef CONFIG_NUMA
1787:# endif
1804:# ifdef CONFIG_SMP
1808:# endif
1839:#define NR_VMSTAT_ITEMS (NR_VM_ZONE_STAT_ITEMS + \
1864:# ifdef CONFIG_NUMA
1868:# endif
1883:# ifdef CONFIG_VM_EVENT_COUNTERS
1887:# endif
1930:#endif /* CONFIG_PROC_FS */
1932:#ifdef CONFIG_SMP
1936:# ifdef CONFIG_PROC_FS
1999:# endif /* CONFIG_PROC_FS */
2137: if (vmstat_late_init_done)
2173: vmstat_late_init_done = 1;
2178:#endif /* CONFIG_SMP */
2188:#ifdef CONFIG_SMP
2205:#endif /* CONFIG_SMP */
2206:#ifdef CONFIG_PROC_FS
2211:#endif /* CONFIG_PROC_FS */
2214:#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_COMPACTION)
2347:#endif /* CONFIG_DEBUG_FS && CONFIG_COMPACTION */

Indentation is optional, but preprocessors traditionally allowed it since the early 1990s I
think :-/

Please find attached patch with and without #ifdef indentation. (Both compile w GCC 13.2.0.)

Thank you.

Best regards,
Mirsad Todorovac

[-- Attachment #2: mm_vmstat_endif.diff --]
[-- Type: text/x-patch, Size: 4523 bytes --]

diff --git a/mm/vmstat.c b/mm/vmstat.c
index e361c2b3a8bc..34de8530aa4e 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -31,7 +31,10 @@

#include "internal.h"

+#ifdef CONFIG_SMP
static int vmstat_late_init_done;
+#endif /* CONFIG_SMP */
+
#ifdef CONFIG_NUMA
int sysctl_vm_numa_stat = ENABLE_NUMA_STAT;

@@ -102,7 +105,7 @@ int sysctl_vm_numa_stat_handler(const struct ctl_table *table, int write,
mutex_unlock(&vm_numa_stat_lock);
return ret;
}
-#endif
+#endif /* CONFIG_NUMA */

#ifdef CONFIG_VM_EVENT_COUNTERS
DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};
@@ -192,7 +195,7 @@ void fold_vm_numa_events(void)
for_each_populated_zone(zone)
fold_vm_zone_numa_events(zone);
}
-#endif
+#endif /* CONFIG_NUMA */

#ifdef CONFIG_SMP

@@ -765,7 +768,7 @@ void dec_node_page_state(struct page *page, enum node_stat_item item)
local_irq_restore(flags);
}
EXPORT_SYMBOL(dec_node_page_state);
-#endif
+#endif /* CONFIG_HAVE_CMPXCHG_LOCAL */

/*
* Fold a differential into the global counters.
@@ -830,7 +833,7 @@ static int refresh_cpu_vm_stats(bool do_pagesets)
#ifdef CONFIG_NUMA
/* 3 seconds idle till flush */
__this_cpu_write(pcp->expire, 3);
-#endif
+#endif /* CONFIG_NUMA */
}
}

@@ -867,7 +870,7 @@ static int refresh_cpu_vm_stats(bool do_pagesets)
drain_zone_pages(zone, this_cpu_ptr(pcp));
changes++;
}
-#endif
+#endif /* CONFIG_NUMA */
}
}

@@ -927,7 +930,7 @@ void cpu_vm_stats_fold(int cpu)
zone_numa_event_add(v, zone, i);
}
}
-#endif
+#endif /* CONFIG_NUMA */
}

for_each_online_pgdat(pgdat) {
@@ -974,9 +977,9 @@ void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
zone_numa_event_add(v, zone, i);
}
}
-#endif
+#endif /* CONFIG_NUMA */
}
-#endif
+#endif /* CONFIG_SMP */

#ifdef CONFIG_NUMA
/*
@@ -1021,7 +1024,7 @@ unsigned long node_page_state_pages(struct pglist_data *pgdat,
#ifdef CONFIG_SMP
if (x < 0)
x = 0;
-#endif
+#endif /* CONFIG_SMP */
return x;
}

@@ -1032,7 +1035,7 @@ unsigned long node_page_state(struct pglist_data *pgdat,

return node_page_state_pages(pgdat, item);
}
-#endif
+#endif /* CONFIG_NUMA */

/*
* Count number of pages "struct page" and "struct page_ext" consume.
@@ -1156,7 +1159,7 @@ int fragmentation_index(struct zone *zone, unsigned int order)
fill_contig_page_info(zone, order, &info);
return __fragmentation_index(order, &info);
}
-#endif
+#endif /* CONFIG_COMPACTION */

#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS) || \
defined(CONFIG_NUMA) || defined(CONFIG_MEMCG)
@@ -1397,7 +1400,7 @@ const char * const vmstat_text[] = {
"thp_zero_page_alloc_failed",
"thp_swpout",
"thp_swpout_fallback",
-#endif
+#endif /*CONFIG_TRANSPARENT_HUGEPAGE */
#ifdef CONFIG_MEMORY_BALLOON
"balloon_inflate",
"balloon_deflate",
@@ -1417,8 +1420,8 @@ const char * const vmstat_text[] = {
"swap_ra_hit",
#ifdef CONFIG_KSM
"ksm_swpin_copy",
-#endif
-#endif
+#endif /* CONFIG_KSM */
+#endif /* CONFIG_SWAP */
#ifdef CONFIG_KSM
"cow_ksm",
#endif
@@ -1460,7 +1463,7 @@ const char * const vmstat_text[] = {
#if THREAD_SIZE > 65536
"kstack_rest",
#endif
-#endif
+#endif /* CONFIG_DEBUG_STACK_USAGE */
#endif /* CONFIG_VM_EVENT_COUNTERS || CONFIG_MEMCG */
};
#endif /* CONFIG_PROC_FS || CONFIG_SYSFS || CONFIG_NUMA || CONFIG_MEMCG */
@@ -1515,7 +1518,7 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat,
spin_unlock_irqrestore(&zone->lock, flags);
}
}
-#endif
+#endif /* CONFIG_DEBUG_FS && CONFIG_COMPACTION || CONFIG_PROC_FS */

#ifdef CONFIG_PROC_FS
static void frag_show_print(struct seq_file *m, pg_data_t *pgdat,
@@ -2172,7 +2175,7 @@ static int __init vmstat_late_init(void)
return 0;
}
late_initcall(vmstat_late_init);
-#endif
+#endif /* CONFIG_SMP */

struct workqueue_struct *mm_percpu_wq;

@@ -2199,13 +2202,13 @@ void __init init_mm_internals(void)
cpus_read_unlock();

start_shepherd_timer();
-#endif
+#endif /* CONFIG_SMP */
#ifdef CONFIG_PROC_FS
proc_create_seq("buddyinfo", 0444, NULL, &fragmentation_op);
proc_create_seq("pagetypeinfo", 0400, NULL, &pagetypeinfo_op);
proc_create_seq("vmstat", 0444, NULL, &vmstat_op);
proc_create_seq("zoneinfo", 0444, NULL, &zoneinfo_op);
-#endif
+#endif /* CONFIG_PROC_FS */
}

#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_COMPACTION)
@@ -2341,4 +2344,4 @@ static int __init extfrag_debug_init(void)

module_init(extfrag_debug_init);

-#endif
+#endif /* CONFIG_DEBUG_FS && CONFIG_COMPACTION */

[-- Attachment #3: mm_vmstat_endif_02.diff --]
[-- Type: text/x-patch, Size: 14193 bytes --]

diff --git a/mm/vmstat.c b/mm/vmstat.c
index e361c2b3a8bc..2579d4a59364 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -31,7 +31,10 @@

#include "internal.h"

+#ifdef CONFIG_SMP
static int vmstat_late_init_done;
+#endif /* CONFIG_SMP */
+
#ifdef CONFIG_NUMA
int sysctl_vm_numa_stat = ENABLE_NUMA_STAT;

@@ -102,7 +105,7 @@ int sysctl_vm_numa_stat_handler(const struct ctl_table *table, int write,
mutex_unlock(&vm_numa_stat_lock);
return ret;
}
-#endif
+#endif /* CONFIG_NUMA */

#ifdef CONFIG_VM_EVENT_COUNTERS
DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};
@@ -192,7 +195,7 @@ void fold_vm_numa_events(void)
for_each_populated_zone(zone)
fold_vm_zone_numa_events(zone);
}
-#endif
+#endif /* CONFIG_NUMA */

#ifdef CONFIG_SMP

@@ -542,7 +545,7 @@ void __dec_node_page_state(struct page *page, enum node_stat_item item)
}
EXPORT_SYMBOL(__dec_node_page_state);

-#ifdef CONFIG_HAVE_CMPXCHG_LOCAL
+# ifdef CONFIG_HAVE_CMPXCHG_LOCAL
/*
* If we have cmpxchg_local support then we do not need to incur the overhead
* that comes with local_irq_save/restore if we use this_cpu_cmpxchg.
@@ -686,7 +689,7 @@ void dec_node_page_state(struct page *page, enum node_stat_item item)
mod_node_state(page_pgdat(page), item, -1, -1);
}
EXPORT_SYMBOL(dec_node_page_state);
-#else
+# else
/*
* Use interrupt disable to serialize counter updates
*/
@@ -765,7 +768,7 @@ void dec_node_page_state(struct page *page, enum node_stat_item item)
local_irq_restore(flags);
}
EXPORT_SYMBOL(dec_node_page_state);
-#endif
+# endif /* CONFIG_HAVE_CMPXCHG_LOCAL */

/*
* Fold a differential into the global counters.
@@ -830,7 +833,7 @@ static int refresh_cpu_vm_stats(bool do_pagesets)
#ifdef CONFIG_NUMA
/* 3 seconds idle till flush */
__this_cpu_write(pcp->expire, 3);
-#endif
+#endif /* CONFIG_NUMA */
}
}

@@ -867,7 +870,7 @@ static int refresh_cpu_vm_stats(bool do_pagesets)
drain_zone_pages(zone, this_cpu_ptr(pcp));
changes++;
}
-#endif
+#endif /* CONFIG_NUMA */
}
}

@@ -927,7 +930,7 @@ void cpu_vm_stats_fold(int cpu)
zone_numa_event_add(v, zone, i);
}
}
-#endif
+#endif /* CONFIG_NUMA */
}

for_each_online_pgdat(pgdat) {
@@ -974,9 +977,9 @@ void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *pzstats)
zone_numa_event_add(v, zone, i);
}
}
-#endif
+#endif /* CONFIG_NUMA */
}
-#endif
+#endif /* CONFIG_SMP */

#ifdef CONFIG_NUMA
/*
@@ -1018,10 +1021,10 @@ unsigned long node_page_state_pages(struct pglist_data *pgdat,
enum node_stat_item item)
{
long x = atomic_long_read(&pgdat->vm_stat[item]);
-#ifdef CONFIG_SMP
+# ifdef CONFIG_SMP
if (x < 0)
x = 0;
-#endif
+# endif /* CONFIG_SMP */
return x;
}

@@ -1032,7 +1035,7 @@ unsigned long node_page_state(struct pglist_data *pgdat,

return node_page_state_pages(pgdat, item);
}
-#endif
+#endif /* CONFIG_NUMA */

/*
* Count number of pages "struct page" and "struct page_ext" consume.
@@ -1156,35 +1159,35 @@ int fragmentation_index(struct zone *zone, unsigned int order)
fill_contig_page_info(zone, order, &info);
return __fragmentation_index(order, &info);
}
-#endif
+#endif /* CONFIG_COMPACTION */

#if defined(CONFIG_PROC_FS) || defined(CONFIG_SYSFS) || \
defined(CONFIG_NUMA) || defined(CONFIG_MEMCG)
-#ifdef CONFIG_ZONE_DMA
-#define TEXT_FOR_DMA(xx) xx "_dma",
-#else
-#define TEXT_FOR_DMA(xx)
-#endif
-
-#ifdef CONFIG_ZONE_DMA32
-#define TEXT_FOR_DMA32(xx) xx "_dma32",
-#else
-#define TEXT_FOR_DMA32(xx)
-#endif
-
-#ifdef CONFIG_HIGHMEM
-#define TEXT_FOR_HIGHMEM(xx) xx "_high",
-#else
-#define TEXT_FOR_HIGHMEM(xx)
-#endif
-
-#ifdef CONFIG_ZONE_DEVICE
-#define TEXT_FOR_DEVICE(xx) xx "_device",
-#else
-#define TEXT_FOR_DEVICE(xx)
-#endif
-
-#define TEXTS_FOR_ZONES(xx) TEXT_FOR_DMA(xx) TEXT_FOR_DMA32(xx) xx "_normal", \
+# ifdef CONFIG_ZONE_DMA
+# define TEXT_FOR_DMA(xx) xx "_dma",
+# else
+# define TEXT_FOR_DMA(xx)
+# endif
+
+# ifdef CONFIG_ZONE_DMA32
+# define TEXT_FOR_DMA32(xx) xx "_dma32",
+# else
+# define TEXT_FOR_DMA32(xx)
+# endif
+
+# ifdef CONFIG_HIGHMEM
+# define TEXT_FOR_HIGHMEM(xx) xx "_high",
+# else
+# define TEXT_FOR_HIGHMEM(xx)
+# endif
+
+# ifdef CONFIG_ZONE_DEVICE
+# define TEXT_FOR_DEVICE(xx) xx "_device",
+# else
+# define TEXT_FOR_DEVICE(xx)
+# endif
+
+# define TEXTS_FOR_ZONES(xx) TEXT_FOR_DMA(xx) TEXT_FOR_DMA32(xx) xx "_normal", \
TEXT_FOR_HIGHMEM(xx) xx "_movable", \
TEXT_FOR_DEVICE(xx)

@@ -1199,23 +1202,23 @@ const char * const vmstat_text[] = {
"nr_zone_write_pending",
"nr_mlock",
"nr_bounce",
-#if IS_ENABLED(CONFIG_ZSMALLOC)
+# if IS_ENABLED(CONFIG_ZSMALLOC)
"nr_zspages",
-#endif
+# endif
"nr_free_cma",
-#ifdef CONFIG_UNACCEPTED_MEMORY
+# ifdef CONFIG_UNACCEPTED_MEMORY
"nr_unaccepted",
-#endif
+# endif

/* enum numa_stat_item counters */
-#ifdef CONFIG_NUMA
+# ifdef CONFIG_NUMA
"numa_hit",
"numa_miss",
"numa_foreign",
"numa_interleave",
"numa_local",
"numa_other",
-#endif
+# endif

/* enum node_stat_item counters */
"nr_inactive_anon",
@@ -1256,21 +1259,21 @@ const char * const vmstat_text[] = {
"nr_foll_pin_acquired",
"nr_foll_pin_released",
"nr_kernel_stack",
-#if IS_ENABLED(CONFIG_SHADOW_CALL_STACK)
+# if IS_ENABLED(CONFIG_SHADOW_CALL_STACK)
"nr_shadow_call_stack",
-#endif
+# endif
"nr_page_table_pages",
"nr_sec_page_table_pages",
-#ifdef CONFIG_IOMMU_SUPPORT
+# ifdef CONFIG_IOMMU_SUPPORT
"nr_iommu_pages",
-#endif
-#ifdef CONFIG_SWAP
+# endif
+# ifdef CONFIG_SWAP
"nr_swapcached",
-#endif
-#ifdef CONFIG_NUMA_BALANCING
+# endif
+# ifdef CONFIG_NUMA_BALANCING
"pgpromote_success",
"pgpromote_candidate",
-#endif
+# endif
"pgdemote_kswapd",
"pgdemote_direct",
"pgdemote_khugepaged",
@@ -1280,7 +1283,7 @@ const char * const vmstat_text[] = {
"nr_memmap_pages",
"nr_memmap_boot_pages",

-#if defined(CONFIG_VM_EVENT_COUNTERS) || defined(CONFIG_MEMCG)
+# if defined(CONFIG_VM_EVENT_COUNTERS) || defined(CONFIG_MEMCG)
/* enum vm_event_item counters */
"pgpgin",
"pgpgout",
@@ -1314,10 +1317,10 @@ const char * const vmstat_text[] = {
"pgsteal_anon",
"pgsteal_file",

-#ifdef CONFIG_NUMA
+# ifdef CONFIG_NUMA
"zone_reclaim_success",
"zone_reclaim_failed",
-#endif
+# endif
"pginodesteal",
"slabs_scanned",
"kswapd_inodesteal",
@@ -1331,21 +1334,21 @@ const char * const vmstat_text[] = {
"drop_slab",
"oom_kill",

-#ifdef CONFIG_NUMA_BALANCING
+# ifdef CONFIG_NUMA_BALANCING
"numa_pte_updates",
"numa_huge_pte_updates",
"numa_hint_faults",
"numa_hint_faults_local",
"numa_pages_migrated",
-#endif
-#ifdef CONFIG_MIGRATION
+# endif
+# ifdef CONFIG_MIGRATION
"pgmigrate_success",
"pgmigrate_fail",
"thp_migration_success",
"thp_migration_fail",
"thp_migration_split",
-#endif
-#ifdef CONFIG_COMPACTION
+# endif
+# ifdef CONFIG_COMPACTION
"compact_migrate_scanned",
"compact_free_scanned",
"compact_isolated",
@@ -1355,16 +1358,16 @@ const char * const vmstat_text[] = {
"compact_daemon_wake",
"compact_daemon_migrate_scanned",
"compact_daemon_free_scanned",
-#endif
+# endif

-#ifdef CONFIG_HUGETLB_PAGE
+# ifdef CONFIG_HUGETLB_PAGE
"htlb_buddy_alloc_success",
"htlb_buddy_alloc_fail",
-#endif
-#ifdef CONFIG_CMA
+# endif
+# ifdef CONFIG_CMA
"cma_alloc_success",
"cma_alloc_fail",
-#endif
+# endif
"unevictable_pgs_culled",
"unevictable_pgs_scanned",
"unevictable_pgs_rescued",
@@ -1373,7 +1376,7 @@ const char * const vmstat_text[] = {
"unevictable_pgs_cleared",
"unevictable_pgs_stranded",

-#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+# ifdef CONFIG_TRANSPARENT_HUGEPAGE
"thp_fault_alloc",
"thp_fault_fallback",
"thp_fault_fallback_charge",
@@ -1390,78 +1393,78 @@ const char * const vmstat_text[] = {
"thp_scan_exceed_none_pte",
"thp_scan_exceed_swap_pte",
"thp_scan_exceed_share_pte",
-#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
+# ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
"thp_split_pud",
-#endif
+# endif
"thp_zero_page_alloc",
"thp_zero_page_alloc_failed",
"thp_swpout",
"thp_swpout_fallback",
-#endif
-#ifdef CONFIG_MEMORY_BALLOON
+# endif /*CONFIG_TRANSPARENT_HUGEPAGE */
+# ifdef CONFIG_MEMORY_BALLOON
"balloon_inflate",
"balloon_deflate",
-#ifdef CONFIG_BALLOON_COMPACTION
+# ifdef CONFIG_BALLOON_COMPACTION
"balloon_migrate",
-#endif
-#endif /* CONFIG_MEMORY_BALLOON */
-#ifdef CONFIG_DEBUG_TLBFLUSH
+# endif
+# endif /* CONFIG_MEMORY_BALLOON */
+# ifdef CONFIG_DEBUG_TLBFLUSH
"nr_tlb_remote_flush",
"nr_tlb_remote_flush_received",
"nr_tlb_local_flush_all",
"nr_tlb_local_flush_one",
-#endif /* CONFIG_DEBUG_TLBFLUSH */
+# endif /* CONFIG_DEBUG_TLBFLUSH */

-#ifdef CONFIG_SWAP
+# ifdef CONFIG_SWAP
"swap_ra",
"swap_ra_hit",
-#ifdef CONFIG_KSM
+# ifdef CONFIG_KSM
"ksm_swpin_copy",
-#endif
-#endif
-#ifdef CONFIG_KSM
+# endif /* CONFIG_KSM */
+# endif /* CONFIG_SWAP */
+# ifdef CONFIG_KSM
"cow_ksm",
-#endif
-#ifdef CONFIG_ZSWAP
+# endif
+# ifdef CONFIG_ZSWAP
"zswpin",
"zswpout",
"zswpwb",
-#endif
-#ifdef CONFIG_X86
+# endif
+# ifdef CONFIG_X86
"direct_map_level2_splits",
"direct_map_level3_splits",
-#endif
-#ifdef CONFIG_PER_VMA_LOCK_STATS
+# endif
+# ifdef CONFIG_PER_VMA_LOCK_STATS
"vma_lock_success",
"vma_lock_abort",
"vma_lock_retry",
"vma_lock_miss",
-#endif
-#ifdef CONFIG_DEBUG_STACK_USAGE
+# endif
+# ifdef CONFIG_DEBUG_STACK_USAGE
"kstack_1k",
-#if THREAD_SIZE > 1024
+# if THREAD_SIZE > 1024
"kstack_2k",
-#endif
-#if THREAD_SIZE > 2048
+# endif
+# if THREAD_SIZE > 2048
"kstack_4k",
-#endif
-#if THREAD_SIZE > 4096
+# endif
+# if THREAD_SIZE > 4096
"kstack_8k",
-#endif
-#if THREAD_SIZE > 8192
+# endif
+# if THREAD_SIZE > 8192
"kstack_16k",
-#endif
-#if THREAD_SIZE > 16384
+# endif
+# if THREAD_SIZE > 16384
"kstack_32k",
-#endif
-#if THREAD_SIZE > 32768
+# endif
+# if THREAD_SIZE > 32768
"kstack_64k",
-#endif
-#if THREAD_SIZE > 65536
+# endif
+# if THREAD_SIZE > 65536
"kstack_rest",
-#endif
-#endif
-#endif /* CONFIG_VM_EVENT_COUNTERS || CONFIG_MEMCG */
+# endif
+# endif /* CONFIG_DEBUG_STACK_USAGE */
+# endif /* CONFIG_VM_EVENT_COUNTERS || CONFIG_MEMCG */
};
#endif /* CONFIG_PROC_FS || CONFIG_SYSFS || CONFIG_NUMA || CONFIG_MEMCG */

@@ -1515,7 +1518,7 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat,
spin_unlock_irqrestore(&zone->lock, flags);
}
}
-#endif
+#endif /* CONFIG_DEBUG_FS && CONFIG_COMPACTION || CONFIG_PROC_FS */

#ifdef CONFIG_PROC_FS
static void frag_show_print(struct seq_file *m, pg_data_t *pgdat,
@@ -1654,7 +1657,7 @@ static void pagetypeinfo_showblockcount(struct seq_file *m, void *arg)
*/
static void pagetypeinfo_showmixedcount(struct seq_file *m, pg_data_t *pgdat)
{
-#ifdef CONFIG_PAGE_OWNER
+# ifdef CONFIG_PAGE_OWNER
int mtype;

if (!static_branch_unlikely(&page_owner_inited))
@@ -1669,7 +1672,7 @@ static void pagetypeinfo_showmixedcount(struct seq_file *m, pg_data_t *pgdat)

walk_zones_in_node(m, pgdat, true, true,
pagetypeinfo_showmixedcount_print);
-#endif /* CONFIG_PAGE_OWNER */
+# endif /* CONFIG_PAGE_OWNER */
}

/*
@@ -1777,11 +1780,11 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
seq_printf(m, "\n %-12s %lu", zone_stat_name(i),
zone_page_state(zone, i));

-#ifdef CONFIG_NUMA
+# ifdef CONFIG_NUMA
for (i = 0; i < NR_VM_NUMA_EVENT_ITEMS; i++)
seq_printf(m, "\n %-12s %lu", numa_stat_name(i),
zone_numa_event_state(zone, i));
-#endif
+# endif

seq_printf(m, "\n pagesets");
for_each_online_cpu(i) {
@@ -1798,11 +1801,11 @@ static void zoneinfo_show_print(struct seq_file *m, pg_data_t *pgdat,
pcp->count,
pcp->high,
pcp->batch);
-#ifdef CONFIG_SMP
+# ifdef CONFIG_SMP
pzstats = per_cpu_ptr(zone->per_cpu_zonestats, i);
seq_printf(m, "\n vm stats threshold: %d",
pzstats->stat_threshold);
-#endif
+# endif
}
seq_printf(m,
"\n node_unreclaimable: %u"
@@ -1858,11 +1861,11 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
v[i] = global_zone_page_state(i);
v += NR_VM_ZONE_STAT_ITEMS;

-#ifdef CONFIG_NUMA
+# ifdef CONFIG_NUMA
for (i = 0; i < NR_VM_NUMA_EVENT_ITEMS; i++)
v[i] = global_numa_event_state(i);
v += NR_VM_NUMA_EVENT_ITEMS;
-#endif
+# endif

for (i = 0; i < NR_VM_NODE_STAT_ITEMS; i++) {
v[i] = global_node_page_state_pages(i);
@@ -1877,11 +1880,11 @@ static void *vmstat_start(struct seq_file *m, loff_t *pos)
v[NR_MEMMAP_BOOT_PAGES] = atomic_long_read(&nr_memmap_boot_pages);
v += NR_VM_STAT_ITEMS;

-#ifdef CONFIG_VM_EVENT_COUNTERS
+# ifdef CONFIG_VM_EVENT_COUNTERS
all_vm_events(v);
v[PGPGIN] /= 2; /* sectors -> kbytes */
v[PGPGOUT] /= 2;
-#endif
+# endif
return (unsigned long *)m->private + *pos;
}

@@ -1930,7 +1933,7 @@ static const struct seq_operations vmstat_op = {
static DEFINE_PER_CPU(struct delayed_work, vmstat_work);
int sysctl_stat_interval __read_mostly = HZ;

-#ifdef CONFIG_PROC_FS
+# ifdef CONFIG_PROC_FS
static void refresh_vm_stats(struct work_struct *work)
{
refresh_cpu_vm_stats(true);
@@ -1993,7 +1996,7 @@ int vmstat_refresh(const struct ctl_table *table, int write,
*lenp = 0;
return 0;
}
-#endif /* CONFIG_PROC_FS */
+# endif /* CONFIG_PROC_FS */

static void vmstat_update(struct work_struct *w)
{
@@ -2172,7 +2175,7 @@ static int __init vmstat_late_init(void)
return 0;
}
late_initcall(vmstat_late_init);
-#endif
+#endif /* CONFIG_SMP */

struct workqueue_struct *mm_percpu_wq;

@@ -2199,13 +2202,13 @@ void __init init_mm_internals(void)
cpus_read_unlock();

start_shepherd_timer();
-#endif
+#endif /* CONFIG_SMP */
#ifdef CONFIG_PROC_FS
proc_create_seq("buddyinfo", 0444, NULL, &fragmentation_op);
proc_create_seq("pagetypeinfo", 0400, NULL, &pagetypeinfo_op);
proc_create_seq("vmstat", 0444, NULL, &vmstat_op);
proc_create_seq("zoneinfo", 0444, NULL, &zoneinfo_op);
-#endif
+#endif /* CONFIG_PROC_FS */
}

#if defined(CONFIG_DEBUG_FS) && defined(CONFIG_COMPACTION)
@@ -2341,4 +2344,4 @@ static int __init extfrag_debug_init(void)

module_init(extfrag_debug_init);

-#endif
+#endif /* CONFIG_DEBUG_FS && CONFIG_COMPACTION */