Re: [PATCH 05/20] block: Allow bio_iov_iter_get_pages() with bio->bi_bdev unset

From: Kent Overstreet
Date: Wed Aug 02 2023 - 12:44:49 EST


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...