Thread (30 messages) 30 messages, 8 authors, 2019-03-08

Re: [PATCH] xfs: allocate sector sized IO buffer via page_frag_alloc

From: Vlastimil Babka <hidden>
Date: 2019-02-27 07:10:47
Also in: linux-fsdevel, linux-mm, linux-xfs

On 2/26/19 5:19 PM, Matthew Wilcox wrote:
On Tue, Feb 26, 2019 at 08:14:33AM -0800, Darrick J. Wong wrote:
quoted
On Tue, Feb 26, 2019 at 06:04:40AM -0800, Matthew Wilcox wrote:
Wait a minute, are you all saying that /directio/ is broken on XFS too??
XFS doesn't use blockdev_direct_IO anymore.

I thought we were talking about alignment of XFS metadata buffers
(xfs_buf.c), which is a very different topic.

As I understand the problem, in non-debug mode the slab caches give
xfs_buf chunks of memory that are aligned well enough to work, but in
debug mode the slabs allocate slightly more bytes to carry debug
information which pushes the returned address up slightly, thus breaking
the alignment requirements.

So why can't we just move the debug info to the end of the object?  If
our 512 byte allocation turns into a (512 + a few more) bytes we'll end
up using 1024 bytes on the allocation regardless, so it shouldn't matter
to put the debug info at offset 512.  If the reason is fear that kernel
code will scribble off the end of the object, then return (*obj + 512).
Maybe you all have already covered this, though?
I don't know _what_ Ming Lei is saying.  I thought the problem was
with slab redzones, which need to be before and after each object,
but apparently the problem is with KASAN as well.
That's what I thought as well. But if we can solve it for caches created
by kmem_cache_create(..., align, ...) then IMHO we could guarantee
natural alignment for power-of-two kmalloc caches as well.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help