On 9/24/18 10:06 AM, Christopher Lameter wrote: > On Fri, 21 Sep 2018, Christoph Hellwig wrote: > >> On Fri, Sep 21, 2018 at 03:04:18PM +0200, Vitaly Kuznetsov wrote: >>> Christoph Hellwig <hch@xxxxxx> writes: >>> >>>> On Wed, Sep 19, 2018 at 05:15:43PM +0800, Ming Lei wrote: >>>>> 1) does kmalloc-N slab guarantee to return N-byte aligned buffer? If >>>>> yes, is it a stable rule? >>>> >>>> This is the assumption in a lot of the kernel, so I think if somethings >>>> breaks this we are in a lot of pain. >>> >>> It seems that SLUB debug breaks this assumption. Kernel built with >>> >>> CONFIG_SLUB_DEBUG=y >>> CONFIG_SLUB=y >>> CONFIG_SLUB_DEBUG_ON=y >> >> Looks like we should fix SLUB debug then.. > > Nope. We need to not make unwarranted assumptions. Alignment is guaranteed > to ARCH_KMALLOC_MINALIGN for kmalloc requests. Fantasizing about > alighments and guessing from alignments that result on a particular > hardware and slab configuration that these are general does not work. The summary is that, no, kmalloc(N) is not N-1 aligned and nobody should rely on that. On the block side, a few drivers set DMA alignment to the sector size. Given that things seem to Just Work, even with XFS doing kmalloc(512) and submitting IO with that, I think we can fairly safely assume that most of those drivers are just being overly cautious and are probably quite fine with 4/8 byte alignment. The situation is making me a little uncomfortable, though. If we export such a setting, we really should be honoring it... -- Jens Axboe