Thread (3 messages) 3 messages, 2 authors, 2017-05-18

Re: races between blk-cgroup operations and I/O scheds in blk-mq (?)

From: Paolo Valente <hidden>
Date: 2017-05-18 07:35:23
Also in: lkml

Il giorno 17 mag 2017, alle ore 21:12, Tejun Heo [off-list ref] ha =
scritto:
=20
Hello,
=20
On Mon, May 15, 2017 at 09:49:13PM +0200, Paolo Valente wrote:
quoted
So, unless you tell me that there are other races I haven't seen, or,
even worse, that I'm just talking nonsense, I have thought of a =
simple
quoted
solution to address this issue without resorting to the request_queue
lock: further caching, on blkg lookups, the only policy or blkg data
the scheduler may use, and access this data directly when needed.  By
doing so, the issue is reduced to the occasional use of stale data.
And apparently this already happens, e.g., in cfq when it uses the
weight of a cfq_queue associated with a process whose group has just
been changed (and for which a blkg_lookup has not yet been invoked).
The same should happen when cfq invokes cfq_log_cfqq for such a
cfq_queue, as this function prints the path of the group the =
bfq_queue
quoted
belongs to.
=20
I haven't studied the code but the problem sounds correct to me.  All
of blkcg code assumes the use of rq lock.  And, yeah, none of the hot
paths requires strong synchornization.  All the actual management
operations can be synchronized separately and the hot lookup path can
be protected with rcu and maybe percpu reference counters.
=20
Great, thanks for this ack.  User reports do confirm the problem, and,
so far, the effectiveness of a solution I have implemented.  I'm
finalizing the patch for submission.

Thanks,
Paolo
Thanks.
=20
--=20
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help