RDMA/rtrs-clt: Follow "one entry one value" rule for IO migration stats
authorMd Haris Iqbal <haris.iqbal@ionos.com>
Wed, 22 Sep 2021 12:53:33 +0000 (14:53 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 4 Oct 2021 19:46:12 +0000 (16:46 -0300)
This commit divides the sysfs entry cpu_migration into 2 different entries
One for "from cpus" and the other for "to cpus".

Link: https://lore.kernel.org/r/20210922125333.351454-8-haris.iqbal@ionos.com
Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
Reviewed-by: Gioh Kim <gi-oh.kim@ionos.com>
Reviewed-by: Aleksei Marov <aleksei.marov@ionos.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/ulp/rtrs/rtrs-clt-stats.c
drivers/infiniband/ulp/rtrs/rtrs-clt-sysfs.c
drivers/infiniband/ulp/rtrs/rtrs-clt.h

index 61d5e001839238e32d7b5b3c53aecb353b473a0f..f7e459fe68be6e04e2adc31525daf5872942b892 100644 (file)
@@ -37,29 +37,38 @@ void rtrs_clt_inc_failover_cnt(struct rtrs_clt_stats *stats)
        s->rdma.failover_cnt++;
 }
 
-int rtrs_clt_stats_migration_cnt_to_str(struct rtrs_clt_stats *stats, char *buf)
+int rtrs_clt_stats_migration_from_cnt_to_str(struct rtrs_clt_stats *stats, char *buf)
 {
        struct rtrs_clt_stats_pcpu *s;
 
        size_t used;
        int cpu;
 
-       used = sysfs_emit(buf, "    ");
-       for_each_possible_cpu(cpu)
-               used += sysfs_emit_at(buf, used, " CPU%u", cpu);
-
-       used += sysfs_emit_at(buf, used, "\nfrom:");
+       used = 0;
        for_each_possible_cpu(cpu) {
                s = per_cpu_ptr(stats->pcpu_stats, cpu);
-               used += sysfs_emit_at(buf, used, " %d",
+               used += sysfs_emit_at(buf, used, "%d ",
                                  atomic_read(&s->cpu_migr.from));
        }
 
-       used += sysfs_emit_at(buf, used, "\nto  :");
+       used += sysfs_emit_at(buf, used, "\n");
+
+       return used;
+}
+
+int rtrs_clt_stats_migration_to_cnt_to_str(struct rtrs_clt_stats *stats, char *buf)
+{
+       struct rtrs_clt_stats_pcpu *s;
+
+       size_t used;
+       int cpu;
+
+       used = 0;
        for_each_possible_cpu(cpu) {
                s = per_cpu_ptr(stats->pcpu_stats, cpu);
-               used += sysfs_emit_at(buf, used, " %d", s->cpu_migr.to);
+               used += sysfs_emit_at(buf, used, "%d ", s->cpu_migr.to);
        }
+
        used += sysfs_emit_at(buf, used, "\n");
 
        return used;
index 4ee592ccf979be65d143a5149c06c0e03d4e61ff..0e69180c3771378e462d51b39ed10fee42bc1dfc 100644 (file)
@@ -296,8 +296,12 @@ static struct kobj_attribute rtrs_clt_remove_path_attr =
        __ATTR(remove_path, 0644, rtrs_clt_remove_path_show,
               rtrs_clt_remove_path_store);
 
-STAT_ATTR(struct rtrs_clt_stats, cpu_migration,
-         rtrs_clt_stats_migration_cnt_to_str,
+STAT_ATTR(struct rtrs_clt_stats, cpu_migration_from,
+         rtrs_clt_stats_migration_from_cnt_to_str,
+         rtrs_clt_reset_cpu_migr_stats);
+
+STAT_ATTR(struct rtrs_clt_stats, cpu_migration_to,
+         rtrs_clt_stats_migration_to_cnt_to_str,
          rtrs_clt_reset_cpu_migr_stats);
 
 STAT_ATTR(struct rtrs_clt_stats, reconnects,
@@ -313,7 +317,8 @@ STAT_ATTR(struct rtrs_clt_stats, reset_all,
          rtrs_clt_reset_all_stats);
 
 static struct attribute *rtrs_clt_stats_attrs[] = {
-       &cpu_migration_attr.attr,
+       &cpu_migration_from_attr.attr,
+       &cpu_migration_to_attr.attr,
        &reconnects_attr.attr,
        &rdma_attr.attr,
        &reset_all_attr.attr,
index 6d81aae53df4b05606748e15c4fe6b5b7baa68b3..9afffccff9731c4a6aa2c6f12027ec993af09dc8 100644 (file)
@@ -226,7 +226,8 @@ int rtrs_clt_reset_rdma_lat_distr_stats(struct rtrs_clt_stats *stats,
 ssize_t rtrs_clt_stats_rdma_lat_distr_to_str(struct rtrs_clt_stats *stats,
                                              char *page);
 int rtrs_clt_reset_cpu_migr_stats(struct rtrs_clt_stats *stats, bool enable);
-int rtrs_clt_stats_migration_cnt_to_str(struct rtrs_clt_stats *stats, char *buf);
+int rtrs_clt_stats_migration_from_cnt_to_str(struct rtrs_clt_stats *stats, char *buf);
+int rtrs_clt_stats_migration_to_cnt_to_str(struct rtrs_clt_stats *stats, char *buf);
 int rtrs_clt_reset_reconnects_stat(struct rtrs_clt_stats *stats, bool enable);
 int rtrs_clt_stats_reconnects_to_str(struct rtrs_clt_stats *stats, char *buf);
 int rtrs_clt_reset_rdma_stats(struct rtrs_clt_stats *stats, bool enable);