Thread (7 messages) 7 messages, 2 authors, 2023-08-02

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

From: Kent Overstreet <kent.overstreet@linux.dev>
Date: 2023-07-25 02:45:13
Also in: linux-bcachefs, linux-fsdevel, lkml

On Mon, Jul 24, 2023 at 10:34:20AM -0700, Christoph Hellwig wrote:
On Wed, Jul 12, 2023 at 05:11:00PM -0400, Kent Overstreet wrote:
quoted
bio_iov_iter_get_pages() trims the IO based on the block size of the
block device the IO will be issued to.

However, bcachefs is a multi device filesystem; when we're creating the
bio we don't yet know which block device the bio will be submitted to -
we have to handle the alignment checks elsewhere.
So, we've been trying really hard to always make sure to pass a bdev
to anything that allocates a bio, mostly due due the fact that we
actually derive information like the blk-cgroup associations from it.

The whole blk-cgroup stuff is actually a problem for non-trivial
multi-device setups.  XFS gets away fine because each file just
sits on either the main or RT device and no user I/O goes to the
log device, and btrfs papers over it in a weird way by always
associating with the last added device, which is in many ways gross
and wrong, but at least satisfies the assumptions made in blk-cgroup.

How do you plan to deal with this?  Because I really don't want folks
just to go ahead and ignore the issues, we need to actually sort this
out.
Doing the blk-cgroup association at bio alloc time sounds broken to me,
because of stacking block devices - why was the association not done at
generic_make_request() time?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help