block: use SLAB_TYPESAFE_BY_RCU for the bio slab
authorChristoph Hellwig <hch@lst.de>
Tue, 12 Oct 2021 11:12:22 +0000 (13:12 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 18 Oct 2021 12:17:36 +0000 (06:17 -0600)
This flags ensures that the pages will not be reused for non-bio
allocations before the end of an RCU grace period.  With that we can
safely use a RCU lookup for bio polling as long as we are fine with
occasionally polling the wrong device.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Mark Wunderlich <mark.wunderlich@intel.com>
Link: https://lore.kernel.org/r/20211012111226.760968-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/bio.c

index d5120451c36a3a14cfec010c2b8d77cd4d2fba31..df45f4b996aca6cd561dbde807e609e4f3dc543c 100644 (file)
@@ -87,7 +87,8 @@ static struct bio_slab *create_bio_slab(unsigned int size)
 
        snprintf(bslab->name, sizeof(bslab->name), "bio-%d", size);
        bslab->slab = kmem_cache_create(bslab->name, size,
-                       ARCH_KMALLOC_MINALIGN, SLAB_HWCACHE_ALIGN, NULL);
+                       ARCH_KMALLOC_MINALIGN,
+                       SLAB_HWCACHE_ALIGN | SLAB_TYPESAFE_BY_RCU, NULL);
        if (!bslab->slab)
                goto fail_alloc_slab;