Messages in this thread | | | Subject | Re: [PATCH 2/4] block/part_stat: use __this_cpu_add() instead of access by smp_processor_id() | From | Konstantin Khlebnikov <> | Date | Mon, 4 May 2020 18:02:28 +0300 |
| |
On 04/05/2020 17.03, Christoph Hellwig wrote: >> +#define __part_stat_add(part, field, addnd) \ >> + (part_stat_get(part, field) += (addnd)) > > Just open coding part_stat_get for the UP side would seems a little > easier to read.
If rewrite filed definition as
#ifdef CONFIG_SMP struct disk_stats __percpu *dkstats; #else struct disk_stats __percpu dkstats[1]; #endif
Then all per-cpu macro should work as is for UP case too. Surprisingly arrow operator (struct->filed) works for arrays too =)
Inlining per-cpu structures should be good for tiny UP systems. Especially if this could be done by few macro only in three places: definition, allocating and freeing.
But sparse still complains.
./include/linux/part_stat.h:45:24: warning: incorrect type in initializer (different address spaces) ./include/linux/part_stat.h:45:24: expected void const [noderef] <asn:3> *__vpp_verify ./include/linux/part_stat.h:45:24: got struct disk_stats [noderef] *
Looks like it cannot assign different address-space to the filed.
> > Otherwise this looks good: > > Reviewed-by: Christoph Hellwig <hch@lst.de> >
| |