On Thu, Jan 2, 2020 at 11:02 PM Bart Van Assche <bvanassche@xxxxxxx> wrote: > > On 12/30/19 2:29 AM, Jack Wang wrote: > > +int rtrs_srv_reset_rdma_stats(struct rtrs_srv_stats *stats, bool enable) > > +{ > > + if (enable) { > > + struct rtrs_srv_stats_rdma_stats *r = &stats->rdma_stats; > > + > > + memset(r, 0, sizeof(*r)); > > + return 0; > > + } > > + > > + return -EINVAL; > > +} > > I think the traditional kernel coding style is "if (!enable) return ...". This can be changed. > > > +ssize_t rtrs_srv_stats_rdma_to_str(struct rtrs_srv_stats *stats, > > + char *page, size_t len) > > +{ > > + struct rtrs_srv_stats_rdma_stats *r = &stats->rdma_stats; > > + struct rtrs_srv_sess *sess; > > + > > + sess = container_of(stats, typeof(*sess), stats); > > + > > + return scnprintf(page, len, "%lld %lld %lld %lld %u\n", > > + (s64)atomic64_read(&r->dir[READ].cnt), > > + (s64)atomic64_read(&r->dir[READ].size_total), > > + (s64)atomic64_read(&r->dir[WRITE].cnt), > > + (s64)atomic64_read(&r->dir[WRITE].size_total), > > + atomic_read(&sess->ids_inflight)); > > +} > > Does this follow the sysfs one-value-per-file rule? We have user space tools already depend on it. On the other side one-value-per-file rule is never really enforced, see https://lwn.net/Articles/378884/ I think it doesn't really make sense for the use case. > > > +int rtrs_srv_stats_wc_completion_to_str(struct rtrs_srv_stats *stats, > > + char *buf, size_t len) > > +{ > > + return snprintf(buf, len, "%lld %lld\n", > > + (s64)atomic64_read(&stats->wc_comp.total_wc_cnt), > > + (s64)atomic64_read(&stats->wc_comp.calls)); > > +} > > Same comment here. See comment above. > > Thanks, > > Bart. Thanks Bart