All of lore.kernel.org
 help / color / mirror / Atom feed
* Alignment Issue with Direct IO to NVMe Drive
@ 2012-11-27  0:35 ` Laine Walker-Avina
  0 siblings, 0 replies; 14+ messages in thread
From: Laine Walker-Avina @ 2012-11-27  0:35 UTC (permalink / raw)


Hi all,

We are experiencing an issue with doing direct IO to a NVMe device I'm
helping to develop. Every so often, the physical address given by
sg_dma_address() is aligned to 0x800 instead of 0x1000 as specified by
blk_queue_dma_alignement(queue, 4095) when the queue is initialized.
The request is also split over multiple segments to make up for the
missing space (eg: for a 4k IO it's split into two segments 2k in
size, and for an 8k IO it's split into 3 segments--2k,4k,2k). Our
design requires the physical segments given to the device be aligned
to 4k boundaries and be multiples of 4k in size. When not doing direct
IO the physical addresses appear to always be 4k aligned as expected.
One possible issue is the kernel we're primarily testing against is
2.6.32-220 from CentOS, but we have observed similar behavior from a
vanilla 3.3 kernel as well. Any help would be greatly appreciated.

Thanks,
Laine Walker-Avina

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-11-27 22:25 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-27  0:35 Alignment Issue with Direct IO to NVMe Drive Laine Walker-Avina
2012-11-27  0:35 ` Laine Walker-Avina
2012-11-27 12:09 ` Jens Axboe
2012-11-27 12:09   ` Jens Axboe
2012-11-27 17:05   ` Matthew Wilcox
2012-11-27 17:05     ` Matthew Wilcox
2012-11-27 17:47     ` Laine Walker-Avina
2012-11-27 17:47       ` Laine Walker-Avina
2012-11-27 21:39       ` Matthew Wilcox
2012-11-27 21:39         ` Matthew Wilcox
2012-11-27 22:25         ` Laine Walker-Avina
2012-11-27 22:25           ` Laine Walker-Avina
2012-11-27 17:43   ` Laine Walker-Avina
2012-11-27 17:43     ` Laine Walker-Avina

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.