mac80211: remove rx_stats.last_rx update after sta alloc
[cascardo/linux.git] / mm / zsmalloc.c
index 43e4cbc..e72efb1 100644 (file)
@@ -494,6 +494,8 @@ static void __exit zs_stat_exit(void)
        debugfs_remove_recursive(zs_stat_root);
 }
 
+static unsigned long zs_can_compact(struct size_class *class);
+
 static int zs_stats_size_show(struct seq_file *s, void *v)
 {
        int i;
@@ -501,14 +503,15 @@ static int zs_stats_size_show(struct seq_file *s, void *v)
        struct size_class *class;
        int objs_per_zspage;
        unsigned long class_almost_full, class_almost_empty;
-       unsigned long obj_allocated, obj_used, pages_used;
+       unsigned long obj_allocated, obj_used, pages_used, freeable;
        unsigned long total_class_almost_full = 0, total_class_almost_empty = 0;
        unsigned long total_objs = 0, total_used_objs = 0, total_pages = 0;
+       unsigned long total_freeable = 0;
 
-       seq_printf(s, " %5s %5s %11s %12s %13s %10s %10s %16s\n",
+       seq_printf(s, " %5s %5s %11s %12s %13s %10s %10s %16s %8s\n",
                        "class", "size", "almost_full", "almost_empty",
                        "obj_allocated", "obj_used", "pages_used",
-                       "pages_per_zspage");
+                       "pages_per_zspage", "freeable");
 
        for (i = 0; i < zs_size_classes; i++) {
                class = pool->size_class[i];
@@ -521,6 +524,7 @@ static int zs_stats_size_show(struct seq_file *s, void *v)
                class_almost_empty = zs_stat_get(class, CLASS_ALMOST_EMPTY);
                obj_allocated = zs_stat_get(class, OBJ_ALLOCATED);
                obj_used = zs_stat_get(class, OBJ_USED);
+               freeable = zs_can_compact(class);
                spin_unlock(&class->lock);
 
                objs_per_zspage = get_maxobj_per_zspage(class->size,
@@ -528,23 +532,25 @@ static int zs_stats_size_show(struct seq_file *s, void *v)
                pages_used = obj_allocated / objs_per_zspage *
                                class->pages_per_zspage;
 
-               seq_printf(s, " %5u %5u %11lu %12lu %13lu %10lu %10lu %16d\n",
+               seq_printf(s, " %5u %5u %11lu %12lu %13lu"
+                               " %10lu %10lu %16d %8lu\n",
                        i, class->size, class_almost_full, class_almost_empty,
                        obj_allocated, obj_used, pages_used,
-                       class->pages_per_zspage);
+                       class->pages_per_zspage, freeable);
 
                total_class_almost_full += class_almost_full;
                total_class_almost_empty += class_almost_empty;
                total_objs += obj_allocated;
                total_used_objs += obj_used;
                total_pages += pages_used;
+               total_freeable += freeable;
        }
 
        seq_puts(s, "\n");
-       seq_printf(s, " %5s %5s %11lu %12lu %13lu %10lu %10lu\n",
+       seq_printf(s, " %5s %5s %11lu %12lu %13lu %10lu %10lu %16s %8lu\n",
                        "Total", "", total_class_almost_full,
                        total_class_almost_empty, total_objs,
-                       total_used_objs, total_pages);
+                       total_used_objs, total_pages, "", total_freeable);
 
        return 0;
 }