On Wed, Aug 02, 2023 at 04:47:18AM -0700, Christoph Hellwig wrote: > On Tue, Aug 01, 2023 at 03:04:50PM -0400, Kent Overstreet wrote: > > > Because blk-cgroup not only works at the lowest level in the stack, > > > but also for stackable block devices. It's not a design decision I > > > particularly agree with, but it's been there forever. > > > > You're setting the association only to the highest block device in the > > stack - how on earth is it supposed to work with anything lower? > > Hey, ask the cgroup folks as they come up with it. I'm not going to > defend the logic here. > > > And looking at bio_associate_blkg(), this code looks completely broken. > > It's checking bio->bi_blkg, but that's just been set to NULL in > > bio_init(). > > It's checking bi_blkg because it can also be called from bio_set_dev. So bio_set_dev() has subtly different behaviour than passing the block device to bio_init()? That's just broken. > > > And this is your code, so I think you need to go over this again. > > It's "my code" in the sene of that I did one big round of unwinding > the even bigger mess that was there. There is another few rounds needed > for the code to vaguely make sense. Well, I'll watch for those patches then...