mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 13:16:22 +00:00
- fix warnings about duplicate slab cache names
-----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRnH8MwLyZDhyYfesYTAyx9YGnhbQUCZzItHBQcbXBhdG9ja2FA cmVkaGF0LmNvbQAKCRATAyx9YGnhbRzaAQD0c/ERvaahr7yR3fD7b1pyT6g6LpwE e2P80QUQRKhCPAD9EXwZo1DdpCNQX7g6eU3jtof9oQoAggAdMjJRc4SF+g4= =W477 -----END PGP SIGNATURE----- Merge tag 'for-6.12/dm-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm Pull device mapper fixes from Mikulas Patocka: - fix warnings about duplicate slab cache names * tag 'for-6.12/dm-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm: dm-cache: fix warnings about duplicate slab caches dm-bufio: fix warnings about duplicate slab caches
This commit is contained in:
commit
5456ec9dab
@ -2471,7 +2471,8 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign
|
||||
int r;
|
||||
unsigned int num_locks;
|
||||
struct dm_bufio_client *c;
|
||||
char slab_name[27];
|
||||
char slab_name[64];
|
||||
static atomic_t seqno = ATOMIC_INIT(0);
|
||||
|
||||
if (!block_size || block_size & ((1 << SECTOR_SHIFT) - 1)) {
|
||||
DMERR("%s: block size not specified or is not multiple of 512b", __func__);
|
||||
@ -2522,7 +2523,8 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign
|
||||
(block_size < PAGE_SIZE || !is_power_of_2(block_size))) {
|
||||
unsigned int align = min(1U << __ffs(block_size), (unsigned int)PAGE_SIZE);
|
||||
|
||||
snprintf(slab_name, sizeof(slab_name), "dm_bufio_cache-%u", block_size);
|
||||
snprintf(slab_name, sizeof(slab_name), "dm_bufio_cache-%u-%u",
|
||||
block_size, atomic_inc_return(&seqno));
|
||||
c->slab_cache = kmem_cache_create(slab_name, block_size, align,
|
||||
SLAB_RECLAIM_ACCOUNT, NULL);
|
||||
if (!c->slab_cache) {
|
||||
@ -2531,9 +2533,11 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign
|
||||
}
|
||||
}
|
||||
if (aux_size)
|
||||
snprintf(slab_name, sizeof(slab_name), "dm_bufio_buffer-%u", aux_size);
|
||||
snprintf(slab_name, sizeof(slab_name), "dm_bufio_buffer-%u-%u",
|
||||
aux_size, atomic_inc_return(&seqno));
|
||||
else
|
||||
snprintf(slab_name, sizeof(slab_name), "dm_bufio_buffer");
|
||||
snprintf(slab_name, sizeof(slab_name), "dm_bufio_buffer-%u",
|
||||
atomic_inc_return(&seqno));
|
||||
c->slab_buffer = kmem_cache_create(slab_name, sizeof(struct dm_buffer) + aux_size,
|
||||
0, SLAB_RECLAIM_ACCOUNT, NULL);
|
||||
if (!c->slab_buffer) {
|
||||
|
@ -11,12 +11,6 @@
|
||||
|
||||
#define DM_MSG_PREFIX "dm-background-tracker"
|
||||
|
||||
struct bt_work {
|
||||
struct list_head list;
|
||||
struct rb_node node;
|
||||
struct policy_work work;
|
||||
};
|
||||
|
||||
struct background_tracker {
|
||||
unsigned int max_work;
|
||||
atomic_t pending_promotes;
|
||||
@ -26,10 +20,10 @@ struct background_tracker {
|
||||
struct list_head issued;
|
||||
struct list_head queued;
|
||||
struct rb_root pending;
|
||||
|
||||
struct kmem_cache *work_cache;
|
||||
};
|
||||
|
||||
struct kmem_cache *btracker_work_cache = NULL;
|
||||
|
||||
struct background_tracker *btracker_create(unsigned int max_work)
|
||||
{
|
||||
struct background_tracker *b = kmalloc(sizeof(*b), GFP_KERNEL);
|
||||
@ -48,12 +42,6 @@ struct background_tracker *btracker_create(unsigned int max_work)
|
||||
INIT_LIST_HEAD(&b->queued);
|
||||
|
||||
b->pending = RB_ROOT;
|
||||
b->work_cache = KMEM_CACHE(bt_work, 0);
|
||||
if (!b->work_cache) {
|
||||
DMERR("couldn't create mempool for background work items");
|
||||
kfree(b);
|
||||
b = NULL;
|
||||
}
|
||||
|
||||
return b;
|
||||
}
|
||||
@ -66,10 +54,9 @@ void btracker_destroy(struct background_tracker *b)
|
||||
BUG_ON(!list_empty(&b->issued));
|
||||
list_for_each_entry_safe (w, tmp, &b->queued, list) {
|
||||
list_del(&w->list);
|
||||
kmem_cache_free(b->work_cache, w);
|
||||
kmem_cache_free(btracker_work_cache, w);
|
||||
}
|
||||
|
||||
kmem_cache_destroy(b->work_cache);
|
||||
kfree(b);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(btracker_destroy);
|
||||
@ -180,7 +167,7 @@ static struct bt_work *alloc_work(struct background_tracker *b)
|
||||
if (max_work_reached(b))
|
||||
return NULL;
|
||||
|
||||
return kmem_cache_alloc(b->work_cache, GFP_NOWAIT);
|
||||
return kmem_cache_alloc(btracker_work_cache, GFP_NOWAIT);
|
||||
}
|
||||
|
||||
int btracker_queue(struct background_tracker *b,
|
||||
@ -203,7 +190,7 @@ int btracker_queue(struct background_tracker *b,
|
||||
* There was a race, we'll just ignore this second
|
||||
* bit of work for the same oblock.
|
||||
*/
|
||||
kmem_cache_free(b->work_cache, w);
|
||||
kmem_cache_free(btracker_work_cache, w);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -244,7 +231,7 @@ void btracker_complete(struct background_tracker *b,
|
||||
update_stats(b, &w->work, -1);
|
||||
rb_erase(&w->node, &b->pending);
|
||||
list_del(&w->list);
|
||||
kmem_cache_free(b->work_cache, w);
|
||||
kmem_cache_free(btracker_work_cache, w);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(btracker_complete);
|
||||
|
||||
|
@ -26,6 +26,14 @@
|
||||
* protected with a spinlock.
|
||||
*/
|
||||
|
||||
struct bt_work {
|
||||
struct list_head list;
|
||||
struct rb_node node;
|
||||
struct policy_work work;
|
||||
};
|
||||
|
||||
extern struct kmem_cache *btracker_work_cache;
|
||||
|
||||
struct background_work;
|
||||
struct background_tracker;
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "dm-bio-record.h"
|
||||
#include "dm-cache-metadata.h"
|
||||
#include "dm-io-tracker.h"
|
||||
#include "dm-cache-background-tracker.h"
|
||||
|
||||
#include <linux/dm-io.h>
|
||||
#include <linux/dm-kcopyd.h>
|
||||
@ -2263,7 +2264,7 @@ static int parse_cache_args(struct cache_args *ca, int argc, char **argv,
|
||||
|
||||
/*----------------------------------------------------------------*/
|
||||
|
||||
static struct kmem_cache *migration_cache;
|
||||
static struct kmem_cache *migration_cache = NULL;
|
||||
|
||||
#define NOT_CORE_OPTION 1
|
||||
|
||||
@ -3445,22 +3446,36 @@ static int __init dm_cache_init(void)
|
||||
int r;
|
||||
|
||||
migration_cache = KMEM_CACHE(dm_cache_migration, 0);
|
||||
if (!migration_cache)
|
||||
return -ENOMEM;
|
||||
if (!migration_cache) {
|
||||
r = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
btracker_work_cache = kmem_cache_create("dm_cache_bt_work",
|
||||
sizeof(struct bt_work), __alignof__(struct bt_work), 0, NULL);
|
||||
if (!btracker_work_cache) {
|
||||
r = -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
r = dm_register_target(&cache_target);
|
||||
if (r) {
|
||||
kmem_cache_destroy(migration_cache);
|
||||
return r;
|
||||
goto err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
kmem_cache_destroy(migration_cache);
|
||||
kmem_cache_destroy(btracker_work_cache);
|
||||
return r;
|
||||
}
|
||||
|
||||
static void __exit dm_cache_exit(void)
|
||||
{
|
||||
dm_unregister_target(&cache_target);
|
||||
kmem_cache_destroy(migration_cache);
|
||||
kmem_cache_destroy(btracker_work_cache);
|
||||
}
|
||||
|
||||
module_init(dm_cache_init);
|
||||
|
Loading…
Reference in New Issue
Block a user