Re: [PATCH 01/10] blk-cgroup: use cgroup lock and rcu to protect iterating blkcg blkgs

From: Yu Kuai

Date: Sun Sep 28 2025 - 21:02:34 EST


Hi,

在 2025/09/27 1:19, Bart Van Assche 写道:
On 9/25/25 5:57 PM, Yu Kuai wrote:
在 2025/09/26 1:07, Yu Kuai 写道:
在 2025/9/25 23:57, Bart Van Assche 写道:
On 9/25/25 1:15 AM, Yu Kuai wrote:
It's safe to iterate blkgs with cgroup lock or rcu lock held, prevent
nested queue_lock under rcu lock, and prepare to convert protecting
blkcg with blkcg_mutex instead of queuelock.

Iterating blkgs without holding q->queue_lock is safe but accessing the
blkg members without holding that lock is not safe since q->queue_lock
is acquired by all code that modifies blkg members. Should perhaps a new
spinlock be introduced to serialize blkg modifications?

Actually, only blkcg_print_blkgs() is using rcu in this patch, and take
a look at the callers, I don't see anyone have to hold queue_lock. Can
you explain in detail which field from blkg is problematic in this
patch?

I'm not a cgroup expert so I cannot answer the above question. But I
think it's clear that the description of this patch is not sufficient as
motivation for this patch. Removing the blkg->q->queue_lock lock and
unlock calls requires a detailed review of all blkcg_print_blkgs() and
blkcg_print_stat() callers. There is no evidence available in the patch
description that shows that such a review has happened.


Ok, I'll explain more in details in commit message.

Thanks,
Kuai

Thanks,

Bart.
.