From: Mikulas Patocka <[email protected]>
Various subsystems can ask the bio subsystem to create a bio slab cache
with some free space before the bio. This free space can be used for any
purpose. Device mapper uses this per-bio-data feature to place some
target-specific and device-mapper specific data before the bio, so that
the target-specific data doesn't have to be allocated separately.
This per-bio-data mechanism is used in place of kmalloc, so we need the
allocated slab to have the same memory alignment as memory allocated
with kmalloc.
Change bio_find_or_create_slab() so that it uses ARCH_KMALLOC_MINALIGN
alignment when creating the slab cache. This is needed so that dm-crypt
can use per-bio-data for encryption - the crypto subsystem assumes this
data will have the same alignment as kmalloc'ed memory.
Signed-off-by: Mikulas Patocka <[email protected]>
Signed-off-by: Mike Snitzer <[email protected]>
---
fs/bio.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/bio.c b/fs/bio.c
index b2dd42e..6c94ba6 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -112,7 +112,8 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size)
bslab = &bio_slabs[entry];
snprintf(bslab->name, sizeof(bslab->name), "bio-%d", entry);
- slab = kmem_cache_create(bslab->name, sz, 0, SLAB_HWCACHE_ALIGN, NULL);
+ slab = kmem_cache_create(bslab->name, sz, ARCH_KMALLOC_MINALIGN,
+ SLAB_HWCACHE_ALIGN, NULL);
if (!slab)
goto out_unlock;
--
1.8.1.4
On Wed, Apr 02 2014 at 2:04pm -0400,
Mike Snitzer <[email protected]> wrote:
> From: Mikulas Patocka <[email protected]>
>
> Various subsystems can ask the bio subsystem to create a bio slab cache
> with some free space before the bio. This free space can be used for any
> purpose. Device mapper uses this per-bio-data feature to place some
> target-specific and device-mapper specific data before the bio, so that
> the target-specific data doesn't have to be allocated separately.
>
> This per-bio-data mechanism is used in place of kmalloc, so we need the
> allocated slab to have the same memory alignment as memory allocated
> with kmalloc.
>
> Change bio_find_or_create_slab() so that it uses ARCH_KMALLOC_MINALIGN
> alignment when creating the slab cache. This is needed so that dm-crypt
> can use per-bio-data for encryption - the crypto subsystem assumes this
> data will have the same alignment as kmalloc'ed memory.
>
> Signed-off-by: Mikulas Patocka <[email protected]>
> Signed-off-by: Mike Snitzer <[email protected]>
Hey Jens,
Just wanted to give you a heads up that I staged this patch in
linux-dm.git's 'for-next', here:
https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=for-next&id=cd433c25f43eb054f62b7b48f1d0349f65b1740c
I rebased it to add this yesterday:
Acked-by: Jens Axboe <[email protected]> # via private exchange on facebook
I put this in place because there is a chance I'll still be sending the
improved dm-crypt parallelization patches to Linus for 3.15 this week.
So having this go through linux-dm.git saves the awkward coordination
where otherwise DM would be depending on the block tree.
You OK with this?
On 04/07/2014 12:15 PM, Mike Snitzer wrote:
> On Wed, Apr 02 2014 at 2:04pm -0400,
> Mike Snitzer <[email protected]> wrote:
>
>> From: Mikulas Patocka <[email protected]>
>>
>> Various subsystems can ask the bio subsystem to create a bio slab cache
>> with some free space before the bio. This free space can be used for any
>> purpose. Device mapper uses this per-bio-data feature to place some
>> target-specific and device-mapper specific data before the bio, so that
>> the target-specific data doesn't have to be allocated separately.
>>
>> This per-bio-data mechanism is used in place of kmalloc, so we need the
>> allocated slab to have the same memory alignment as memory allocated
>> with kmalloc.
>>
>> Change bio_find_or_create_slab() so that it uses ARCH_KMALLOC_MINALIGN
>> alignment when creating the slab cache. This is needed so that dm-crypt
>> can use per-bio-data for encryption - the crypto subsystem assumes this
>> data will have the same alignment as kmalloc'ed memory.
>>
>> Signed-off-by: Mikulas Patocka <[email protected]>
>> Signed-off-by: Mike Snitzer <[email protected]>
>
> Hey Jens,
>
> Just wanted to give you a heads up that I staged this patch in
> linux-dm.git's 'for-next', here:
> https://urldefense.proofpoint.com/v1/url?u=https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/commit/?h%3Dfor-next%26id%3Dcd433c25f43eb054f62b7b48f1d0349f65b1740c&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=3JMVyziIyZtZ5cv9eWNLwQ%3D%3D%0A&m=yu%2BvHiMLQp0QZVW7KCcxC6XDci1OzHP9ymRaDDIROdk%3D%0A&s=7ac8f47451490f80d8bacbef2487bfa43c0d7c9a1c968558010f06f92e20caca
>
> I rebased it to add this yesterday:
> Acked-by: Jens Axboe <[email protected]> # via private exchange on facebook
>
> I put this in place because there is a chance I'll still be sending the
> improved dm-crypt parallelization patches to Linus for 3.15 this week.
> So having this go through linux-dm.git saves the awkward coordination
> where otherwise DM would be depending on the block tree.
>
> You OK with this?
Yeah, that's fine.
--
Jens Axboe