slab: warn about duplicated KMC names when tracing
Instead of during creation. The IOAT driver creates a KMC call
'completion_pool' for every device. I'm not going to bother giving them
separate names. The only thing we used duplicate names for was
debugging and slab_trace.
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/drivers/dev/mem.c b/kern/drivers/dev/mem.c
index 5711c24..5379c50 100644
--- a/kern/drivers/dev/mem.c
+++ b/kern/drivers/dev/mem.c
@@ -424,7 +424,7 @@
{
ERRSTACK(1);
struct sized_alloc *sza, *old_sza;
- struct kmem_cache *kc;
+ struct kmem_cache *kc = NULL, *kc_i;
if (cb->nf < 2)
error(EFAIL, SLAB_TRACE_USAGE);
@@ -434,9 +434,16 @@
qunlock(&arenas_and_slabs_lock);
nexterror();
}
- TAILQ_FOREACH(kc, &all_kmem_caches, all_kmc_link)
- if (!strcmp(kc->name, cb->f[1]))
- break;
+ TAILQ_FOREACH(kc_i, &all_kmem_caches, all_kmc_link) {
+ if (!strcmp(kc_i->name, cb->f[1])) {
+ if (kc) {
+ printk("[kernel] Multiple KC's named %s, tracing the first one\n",
+ kc->name);
+ break;
+ }
+ kc = kc_i;
+ }
+ }
if (!kc)
error(ENOENT, "No such slab %s", cb->f[1]);
/* Note that the only time we have a real sza is when printing.
diff --git a/kern/src/slab.c b/kern/src/slab.c
index 0ebc730..eba20b5 100644
--- a/kern/src/slab.c
+++ b/kern/src/slab.c
@@ -104,11 +104,6 @@
struct kmem_cache *kc_i;
qlock(&arenas_and_slabs_lock);
- TAILQ_FOREACH(kc_i, &all_kmem_caches, all_kmc_link) {
- if (!strcmp(kc->name, kc_i->name))
- warn("Creatgin KMC %s, but one with that name exists!",
- kc->name);
- }
TAILQ_INSERT_TAIL(&all_kmem_caches, kc, all_kmc_link);
qunlock(&arenas_and_slabs_lock);
}