Messages in this thread | | | Date | Fri, 08 Jun 2007 21:47:38 +0200 | Subject | Re: [patch 00/12] Slab defragmentation V3 | From | Michal Piotrowski <> |
| |
Christoph Lameter pisze: > On Fri, 8 Jun 2007, Christoph Lameter wrote: > >> On Fri, 8 Jun 2007, Michal Piotrowski wrote: >> >>> Yes, it does. Thanks! >> Ahhh... That leds to the discovery more sysfs problems. I need to make >> sure not to be holding locks while calling into sysfs. More cleanup... > > Could you remove the trylock patch and see how this one fares? We may need > both but this should avoid taking the slub_lock around any possible alloc > of sysfs. > >
It's a bit tricky
cat ../sd2.patch | patch -p1 patching file mm/slub.c Hunk #1 succeeded at 2194 (offset 15 lines). Hunk #2 FAILED at 2653. 1 out of 2 hunks FAILED -- saving rejects to file mm/slub.c.rej [michal@bitis-gabonica linux-work3]$ cat mm/slub.c.rej *************** *** 2652,2677 **** */ s->objsize = max(s->objsize, (int)size); s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *))); if (sysfs_slab_alias(s, name)) goto err; - } else { - s = kmalloc(kmem_size, GFP_KERNEL); - if (s && kmem_cache_open(s, GFP_KERNEL, name, size, align, flags, ctor)) { - if (sysfs_slab_add(s)) { - kfree(s); - goto err; - } list_add(&s->list, &slab_caches); raise_kswapd_order(s->order); - } else - kfree(s); } up_write(&slub_lock); - return s;
err: - up_write(&slub_lock); if (flags & SLAB_PANIC) panic("Cannot create slabcache %s\n", name); else --- 2653,2685 ---- */ s->objsize = max(s->objsize, (int)size); s->inuse = max_t(int, s->inuse, ALIGN(size, sizeof(void *))); + up_write(&slub_lock); + if (sysfs_slab_alias(s, name)) goto err; + + return s; + } + + s = kmalloc(kmem_size, GFP_KERNEL); + if (s) { + if (kmem_cache_open(s, GFP_KERNEL, name, size, align, flags, ctor)) { list_add(&s->list, &slab_caches); + up_write(&slub_lock); raise_kswapd_order(s->order); + + if (sysfs_slab_add(s)) + goto err; + + return s; + + } + kfree(s); } up_write(&slub_lock);
err: if (flags & SLAB_PANIC) panic("Cannot create slabcache %s\n", name); else
Regards, Michal
-- "Najbardziej brakowało mi twojego milczenia." -- Andrzej Sapkowski "Coś więcej" - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |