Commit 3f3fe682 authored by Md Haris Iqbal's avatar Md Haris Iqbal Committed by Jason Gunthorpe

RDMA/rtrs-clt: Follow "one entry one value" rule for IO migration stats

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.comSigned-off-by: default avatarMd Haris Iqbal <haris.iqbal@ionos.com>
Reviewed-by: default avatarGioh Kim <gi-oh.kim@ionos.com>
Reviewed-by: default avatarAleksei Marov <aleksei.marov@ionos.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent dea7bb3a
...@@ -37,29 +37,38 @@ void rtrs_clt_inc_failover_cnt(struct rtrs_clt_stats *stats) ...@@ -37,29 +37,38 @@ void rtrs_clt_inc_failover_cnt(struct rtrs_clt_stats *stats)
s->rdma.failover_cnt++; 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; struct rtrs_clt_stats_pcpu *s;
size_t used; size_t used;
int cpu; int cpu;
used = sysfs_emit(buf, " "); used = 0;
for_each_possible_cpu(cpu)
used += sysfs_emit_at(buf, used, " CPU%u", cpu);
used += sysfs_emit_at(buf, used, "\nfrom:");
for_each_possible_cpu(cpu) { for_each_possible_cpu(cpu) {
s = per_cpu_ptr(stats->pcpu_stats, 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)); 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) { for_each_possible_cpu(cpu) {
s = per_cpu_ptr(stats->pcpu_stats, 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"); used += sysfs_emit_at(buf, used, "\n");
return used; return used;
......
...@@ -296,8 +296,12 @@ static struct kobj_attribute rtrs_clt_remove_path_attr = ...@@ -296,8 +296,12 @@ static struct kobj_attribute rtrs_clt_remove_path_attr =
__ATTR(remove_path, 0644, rtrs_clt_remove_path_show, __ATTR(remove_path, 0644, rtrs_clt_remove_path_show,
rtrs_clt_remove_path_store); rtrs_clt_remove_path_store);
STAT_ATTR(struct rtrs_clt_stats, cpu_migration, STAT_ATTR(struct rtrs_clt_stats, cpu_migration_from,
rtrs_clt_stats_migration_cnt_to_str, 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); rtrs_clt_reset_cpu_migr_stats);
STAT_ATTR(struct rtrs_clt_stats, reconnects, STAT_ATTR(struct rtrs_clt_stats, reconnects,
...@@ -313,7 +317,8 @@ STAT_ATTR(struct rtrs_clt_stats, reset_all, ...@@ -313,7 +317,8 @@ STAT_ATTR(struct rtrs_clt_stats, reset_all,
rtrs_clt_reset_all_stats); rtrs_clt_reset_all_stats);
static struct attribute *rtrs_clt_stats_attrs[] = { static struct attribute *rtrs_clt_stats_attrs[] = {
&cpu_migration_attr.attr, &cpu_migration_from_attr.attr,
&cpu_migration_to_attr.attr,
&reconnects_attr.attr, &reconnects_attr.attr,
&rdma_attr.attr, &rdma_attr.attr,
&reset_all_attr.attr, &reset_all_attr.attr,
......
...@@ -226,7 +226,8 @@ int rtrs_clt_reset_rdma_lat_distr_stats(struct rtrs_clt_stats *stats, ...@@ -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, ssize_t rtrs_clt_stats_rdma_lat_distr_to_str(struct rtrs_clt_stats *stats,
char *page); char *page);
int rtrs_clt_reset_cpu_migr_stats(struct rtrs_clt_stats *stats, bool enable); 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_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_stats_reconnects_to_str(struct rtrs_clt_stats *stats, char *buf);
int rtrs_clt_reset_rdma_stats(struct rtrs_clt_stats *stats, bool enable); int rtrs_clt_reset_rdma_stats(struct rtrs_clt_stats *stats, bool enable);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment