Thread (8 messages) 8 messages, 2 authors, 2024-07-15

Re: [PATCH v2] blk-cgroup: Replace u64_sync with blkg_stat_lock for stats update

From: Boy Wu (吳勃誼) <hidden>
Date: 2024-07-15 07:15:33
Also in: cgroups, linux-block, linux-mediatek, lkml

On Fri, 2024-07-12 at 08:38 -1000, tj@kernel.org wrote:
 	 
External email : Please do not click links or open attachments until
you have verified the sender or the content.
 Hello, Boy.

On Fri, Jul 12, 2024 at 01:39:51AM +0000, Boy Wu (吳勃誼) wrote:
...
quoted
I agree, but for multiple updaters, we not only need a spin lock
but
quoted
also need u64_sync for 32bit SMP systems because u64_stats_fetch is
not
quoted
protected by the spin lock blkg_stat_lock. If removing u64 sync,
then
quoted
one CPU fetches data while another CPU is updating, may get a 64
bits
quoted
data with only 32 bits updated, while the other 32 bits are not
updated
quoted
yet. We can see that blkcg_iostats_update is protected by both
u64_sync
quoted
and the spin lock blkg_stat_lock in __blkcg_rstat_flush.
Thus, I think we should keep the u64_sync and just add the spin
lock blkg_stat_lock, not replace u64_sync with the spin lock.
I don't get it. The only reader of blkg->iostat is
blkcg_print_one_stat().
It can just grab the same spin lock that the updaters use, right? Why
do we
also need u64_sync for blkg->iostat?

Thanks.

-- 
tejun
I think I get your idea. You want to replace all the u64 sync for
iostat. However, I have one question: why use blkg_stat_lock instead of
adding a spin lock for each iostat like iostat.spinlock? We don't need
to lock between updating different iostats, but only lock when updating
the same iostat.

--
Boy.Wu
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help