On Fri, Jan 15, 2021 at 10:39 AM Peter Lieven <p...@kamp.de> wrote: > > Am 15.01.21 um 16:27 schrieb Jason Dillaman: > > On Thu, Jan 14, 2021 at 2:59 PM Peter Lieven <p...@kamp.de> wrote: > >> Am 14.01.21 um 20:19 schrieb Jason Dillaman: > >>> On Sun, Dec 27, 2020 at 11:42 AM Peter Lieven <p...@kamp.de> wrote: > >>>> since we implement byte interfaces and librbd supports aio on byte > >>>> granularity we can lift > >>>> the 512 byte alignment. > >>>> > >>>> Signed-off-by: Peter Lieven <p...@kamp.de> > >>>> --- > >>>> block/rbd.c | 2 -- > >>>> 1 file changed, 2 deletions(-) > >>>> > >>>> diff --git a/block/rbd.c b/block/rbd.c > >>>> index 27b4404adf..8673e8f553 100644 > >>>> --- a/block/rbd.c > >>>> +++ b/block/rbd.c > >>>> @@ -223,8 +223,6 @@ done: > >>>> static void qemu_rbd_refresh_limits(BlockDriverState *bs, Error **errp) > >>>> { > >>>> BDRVRBDState *s = bs->opaque; > >>>> - /* XXX Does RBD support AIO on less than 512-byte alignment? */ > >>>> - bs->bl.request_alignment = 512; > >>> Just a suggestion, but perhaps improve discard alignment, max discard, > >>> optimal alignment (if that's something QEMU handles internally) if not > >>> overridden by the user. > >> > >> Qemu supports max_discard and discard_alignment. Is there a call to get > >> these limits > >> > >> from librbd? > >> > >> > >> What do you mean by optimal_alignment? The object size? > > krbd does a good job of initializing defaults [1] where optimal and > > discard alignment is 64KiB (can actually be 4KiB now), max IO size for > > writes, discards, and write-zeroes is the object size * the stripe > > count. > > > Okay, I will have a look at it. If qemu issues a write, discard, write_zero > greater than > > obj_size * stripe count will librbd split it internally or will the request > fail?
librbd will handle it as needed. My goal is really just to get the hints down the guest OS. > Regarding the alignment it seems that rbd_dev->opts->alloc_size is something > that comes from the device > > configuration and not from rbd? I don't have that information inside the Qemu > RBD driver. librbd doesn't really have the information either. The 64KiB guess that krbd uses was a compromise since that was the default OSD allocation size for HDDs since Luminous. Starting with Pacific that default is going down to 4KiB. > > Peter > > -- Jason