From: Keith Busch <kbusch@xxxxxxxxxx> Here is the 3rd version enabling non-block aligned user space addresses for O_DIRECT. Changes since v2: Folded in improvements cleanin gup zone append pages (Christoph) Added documentation the exported attribute (Bart) Split bdev_dma_alignment() into its own patch (Christoph) Removed fs/ from implementing support for these address offsets for now Fixed up a couple places assuming SECTOR_SIZE multiple bv_len On that last point, I searched through much of the code and found a few other places that also assumed this bv_len size, but they didn't apply to this change since they don't set 'dma_alignment'. This got me thinking, though, should this be a new attribute, 'dio_alignment', instead of using the pre-existing 'dma_alignment' for this purpose? Or is it clear enough that drivers setting the existing attribute ought to know what they're getting into? Keith Busch (6): block/bio: remove duplicate append pages code block: export dma_alignment attribute block: introduce bdev_dma_alignment helper block/merge: count bytes instead of sectors block/bounce: count bytes instead of sectors block: relax direct io memory alignment Documentation/ABI/stable/sysfs-block | 9 ++ block/bio.c | 118 +++++++++++++-------------- block/blk-merge.c | 35 ++++---- block/blk-sysfs.c | 7 ++ block/bounce.c | 5 +- block/fops.c | 41 +++++++--- include/linux/blkdev.h | 5 ++ 7 files changed, 127 insertions(+), 93 deletions(-) -- 2.30.2