• Jens Axboe's avatar
    ublk_drv: set DMA alignment mask to 3 · 928b607d
    Jens Axboe authored
    By default, this will be 511, as that's the block layer default. But
    drivers these days can support memory alignments that aren't tied to
    the sector sizes, instead just being limited by what the DMA engine
    supports. An example is NVMe, where it's generally set to a 32-bit or
    64-bit boundary. As ublk itself doesn't really care, just set it low
    enough that we don't run into issues with NVMe where the required
    O_DIRECT memory alignment is now more restrictive on ublk than it is
    on the underlying device.
    
    This was triggered by spurious -EINVAL returns on O_DIRECT IO on a
    setup with ublk managing NVMe devices, which previously worked just
    fine on the NVMe device itself. With the alignment relaxed, the test
    works fine.
    Reviewed-by: default avatarMing Lei <ming.lei@redhat.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    928b607d
ublk_drv.c 72.9 KB