lkml.org 
[lkml]   [2021]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 6/7] mm: memcontrol: switch to rstat
    On Thu, Feb 04, 2021 at 11:26:32AM -0500, Johannes Weiner wrote:
    > On Tue, Feb 02, 2021 at 05:47:26PM -0800, Roman Gushchin wrote:
    > > On Tue, Feb 02, 2021 at 01:47:45PM -0500, Johannes Weiner wrote:
    > > > for_each_node(node) {
    > > > struct mem_cgroup_per_node *pn = memcg->nodeinfo[node];
    > > > + unsigned long stat[NR_VM_NODE_STAT_ITEMS] = {0, };
    > > ^^
    > > I'd drop the comma here. It seems that "{0}" version is way more popular
    > > over the mm code and in the kernel in general.
    >
    > Is there a downside to the comma? I'm finding more { 0, } than { 0 }
    > in mm code, and at least kernel-wide it seems both are acceptable
    > (although { 0 } is more popular overall).

    { 0 } is more obvious and saves a character. The "problem" with comma
    version is that { 1, } and { 0, } have a different meaning.

    It seems like 13 (no comma) vs 11 (comma) in the mm code:
    [guro@carbon mm]$ pwd
    /home/guro/linux/mm
    [guro@carbon mm]$ ag --nofilename "\{0\}"
    DEFINE_PER_CPU(struct vm_event_state, vm_event_states) = {{0}};

    return (swp_entry_t) {0};

    unsigned long stat[MEMCG_NR_STAT] = {0};

    swp_entry_t entry = (swp_entry_t){0};
    [guro@carbon mm]$ ag --nofilename "\{ 0 \}"
    struct cleancache_filekey key = { .u.key = { 0 } };
    struct cleancache_filekey key = { .u.key = { 0 } };
    struct cleancache_filekey key = { .u.key = { 0 } };
    struct cleancache_filekey key = { .u.key = { 0 } };

    unsigned long stack_entries[KFENCE_STACK_DEPTH] = { 0 };

    DECLARE_BITMAP(map, SUBSECTIONS_PER_SECTION) = { 0 };
    DECLARE_BITMAP(tmp, SUBSECTIONS_PER_SECTION) = { 0 };
    DECLARE_BITMAP(map, SUBSECTIONS_PER_SECTION) = { 0 };

    unsigned long nr_zone_taken[MAX_NR_ZONES] = { 0 };
    [guro@carbon mm]$ ag --nofilename "\{ 0, \}"
    int global_zone_diff[NR_VM_ZONE_STAT_ITEMS] = { 0, };
    int global_numa_diff[NR_VM_NUMA_STAT_ITEMS] = { 0, };
    int global_node_diff[NR_VM_NODE_STAT_ITEMS] = { 0, };
    int global_zone_diff[NR_VM_ZONE_STAT_ITEMS] = { 0, };
    int global_numa_diff[NR_VM_NUMA_STAT_ITEMS] = { 0, };
    int global_node_diff[NR_VM_NODE_STAT_ITEMS] = { 0, };
    unsigned long count[MIGRATE_TYPES] = { 0, };

    struct memory_failure_entry entry = { 0, };

    unsigned long nr_skipped[MAX_NR_ZONES] = { 0, };
    unsigned long zone_boosts[MAX_NR_ZONES] = { 0, };

    unsigned long count[MIGRATE_TYPES] = { 0, };

    >
    > I don't care much either way. I can change it in v2 if there is one.

    Sure, of course it's not worth a separate version.

    Thanks!

    \
     
     \ /
      Last update: 2021-02-04 19:50    [W:2.220 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site