Re: [PATCH 05/20] block: Allow bio_iov_iter_get_pages() with bio->bi_bdev unset
From: Christoph Hellwig <hch@infradead.org>
Date: 2023-07-24 17:34:24
Also in:
linux-bcachefs, linux-fsdevel, lkml
From: Christoph Hellwig <hch@infradead.org>
Date: 2023-07-24 17:34:24
Also in:
linux-bcachefs, linux-fsdevel, lkml
On Wed, Jul 12, 2023 at 05:11:00PM -0400, Kent Overstreet wrote:
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.