On Mon, May 25, 2015 at 06:02:30PM +0300, Ilya Dryomov wrote:
I'm not Alex, but yeah, we have all the clone/split machinery and so we
can handle a spanning case just fine. I think rbd_merge_bvec() exists
to make sure we don't have to do that unless it's really necessary -
like when a single page gets submitted at an inconvenient offset.
I have a patch that adds a blk_queue_chunk_sectors(object_size) call to
rbd_init_disk() but I haven't had a chance to play with it yet. In any
case, we should be fine with getting rid of rbd_merge_bvec(). If this
ends up a per-driver patchset, I can make rbd_merge_bvec() ->
blk_queue_chunk_sectors() a single patch and push it through
ceph-client.git.
Hmm, looks like the new blk_queue_split_bio ignore the chunk_sectors
value, another thing that needs updating. I forgot how many weird
merging hacks we had to add for nvme..
While I'd like to see per-driver patches we'd still need to merge
them together through the block tree. Note that with this series
there won't be any benefit of using blk_queue_chunk_sectors over just
doing the split in rbd. Maybe we can even remove it again and do
that work in the drivers in the future.