Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6
* 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6: slub: Add statistics for this_cmpxchg_double failures slub: Add missing irq restore for the OOM path
This commit is contained in:
commit
01ba825146
|
@ -32,6 +32,7 @@ enum stat_item {
|
|||
DEACTIVATE_TO_TAIL, /* Cpu slab was moved to the tail of partials */
|
||||
DEACTIVATE_REMOTE_FREES,/* Slab contained remotely freed objects */
|
||||
ORDER_FALLBACK, /* Number of times fallback was necessary */
|
||||
CMPXCHG_DOUBLE_CPU_FAIL,/* Failure of this_cpu_cmpxchg_double */
|
||||
NR_SLUB_STAT_ITEMS };
|
||||
|
||||
struct kmem_cache_cpu {
|
||||
|
|
|
@ -217,7 +217,7 @@ static inline void sysfs_slab_remove(struct kmem_cache *s)
|
|||
|
||||
#endif
|
||||
|
||||
static inline void stat(struct kmem_cache *s, enum stat_item si)
|
||||
static inline void stat(const struct kmem_cache *s, enum stat_item si)
|
||||
{
|
||||
#ifdef CONFIG_SLUB_STATS
|
||||
__this_cpu_inc(s->cpu_slab->stat[si]);
|
||||
|
@ -1597,6 +1597,7 @@ static inline void note_cmpxchg_failure(const char *n,
|
|||
printk("for unknown reason: actual=%lx was=%lx target=%lx\n",
|
||||
actual_tid, tid, next_tid(tid));
|
||||
#endif
|
||||
stat(s, CMPXCHG_DOUBLE_CPU_FAIL);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1857,6 +1858,9 @@ new_slab:
|
|||
}
|
||||
if (!(gfpflags & __GFP_NOWARN) && printk_ratelimit())
|
||||
slab_out_of_memory(s, gfpflags, node);
|
||||
#ifdef CONFIG_CMPXCHG_LOCAL
|
||||
local_irq_restore(flags);
|
||||
#endif
|
||||
return NULL;
|
||||
debug:
|
||||
if (!alloc_debug_processing(s, c->page, object, addr))
|
||||
|
|
Loading…
Reference in New Issue