mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-21 10:05:00 +08:00
RDMA/hfi1: Stop using seq_get_buf in _driver_stats_seq_show
Just use seq_write to copy the stats into the seq_file buffer instead of poking holes into the seq_file abstraction. Link: https://lore.kernel.org/r/20210810151711.1795374-1-hch@lst.de Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> Tested-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
00c85b6576
commit
4b89451d2c
@ -1358,7 +1358,7 @@ static void _driver_stats_seq_stop(struct seq_file *s, void *v)
|
||||
{
|
||||
}
|
||||
|
||||
static u64 hfi1_sps_ints(void)
|
||||
static void hfi1_sps_show_ints(struct seq_file *s)
|
||||
{
|
||||
unsigned long index, flags;
|
||||
struct hfi1_devdata *dd;
|
||||
@ -1369,24 +1369,19 @@ static u64 hfi1_sps_ints(void)
|
||||
sps_ints += get_all_cpu_total(dd->int_counter);
|
||||
}
|
||||
xa_unlock_irqrestore(&hfi1_dev_table, flags);
|
||||
return sps_ints;
|
||||
seq_write(s, &sps_ints, sizeof(u64));
|
||||
}
|
||||
|
||||
static int _driver_stats_seq_show(struct seq_file *s, void *v)
|
||||
{
|
||||
loff_t *spos = v;
|
||||
char *buffer;
|
||||
u64 *stats = (u64 *)&hfi1_stats;
|
||||
size_t sz = seq_get_buf(s, &buffer);
|
||||
|
||||
if (sz < sizeof(u64))
|
||||
return SEQ_SKIP;
|
||||
/* special case for interrupts */
|
||||
if (*spos == 0)
|
||||
*(u64 *)buffer = hfi1_sps_ints();
|
||||
hfi1_sps_show_ints(s);
|
||||
else
|
||||
*(u64 *)buffer = stats[*spos];
|
||||
seq_commit(s, sizeof(u64));
|
||||
seq_write(s, stats + *spos, sizeof(u64));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user