From 1972caa6f61c5c64be268e964ddad5cb185a66ce Mon Sep 17 00:00:00 2001 From: Li Yang Date: Wed, 25 Jul 2007 02:03:06 +0800 Subject: [PATCH] --- yaml --- r: 75689 b: refs/heads/master c: 6b2cb91efce215c3c34b1b79b15f30e860761a3e h: refs/heads/master i: 75687: b49e4386b8ba378b403d341892171bf518bfbbcb v: v3 --- [refs] | 2 +- trunk/Documentation/zh_CN/HOWTO | 2 ++ trunk/drivers/isdn/capi/capidrv.c | 9 +++--- trunk/mm/slab.c | 46 +++++++++++++++---------------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/[refs] b/[refs] index 2f02c0ee9f6b..d406235b6b5d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 556a169dab38b5100df6f4a45b655dddd3db94c1 +refs/heads/master: 6b2cb91efce215c3c34b1b79b15f30e860761a3e diff --git a/trunk/Documentation/zh_CN/HOWTO b/trunk/Documentation/zh_CN/HOWTO index 48fc67bfbe3d..c8660da7344e 100644 --- a/trunk/Documentation/zh_CN/HOWTO +++ b/trunk/Documentation/zh_CN/HOWTO @@ -218,6 +218,8 @@ kernel.org网站的pub/linux/kernel/v2.6/目录下找到它。它的开发遵循 时,一个新的-rc版本就会被发布。计划是每周都发布新的-rc版本。 - 这个过程一直持续下去直到内核被认为达到足够稳定的状态,持续时间大概是 6个星期。 + - 以下地址跟踪了在每个-rc发布中发现的退步列表: + http://kernelnewbies.org/known_regressions 关于内核发布,值得一提的是Andrew Morton在linux-kernel邮件列表中如是说: “没有人知道新内核何时会被发布,因为发布是根据已知bug的情况来决定 diff --git a/trunk/drivers/isdn/capi/capidrv.c b/trunk/drivers/isdn/capi/capidrv.c index cb42b690b45e..48c1775ef5b3 100644 --- a/trunk/drivers/isdn/capi/capidrv.c +++ b/trunk/drivers/isdn/capi/capidrv.c @@ -2332,14 +2332,13 @@ static int __init capidrv_init(void) static void __exit capidrv_exit(void) { - char rev[32]; + char rev[10]; char *p; if ((p = strchr(revision, ':')) != 0) { - strncpy(rev, p + 1, sizeof(rev)); - rev[sizeof(rev)-1] = 0; - if ((p = strchr(rev, '$')) != 0) - *p = 0; + strcpy(rev, p + 1); + p = strchr(rev, '$'); + *p = 0; } else { strcpy(rev, " ??? "); } diff --git a/trunk/mm/slab.c b/trunk/mm/slab.c index ff31261fd24f..b03b2e46b806 100644 --- a/trunk/mm/slab.c +++ b/trunk/mm/slab.c @@ -304,11 +304,11 @@ struct kmem_list3 { /* * Need this for bootstrapping a per node allocator. */ -#define NUM_INIT_LISTS (3 * MAX_NUMNODES) +#define NUM_INIT_LISTS (2 * MAX_NUMNODES + 1) struct kmem_list3 __initdata initkmem_list3[NUM_INIT_LISTS]; #define CACHE_CACHE 0 -#define SIZE_AC MAX_NUMNODES -#define SIZE_L3 (2 * MAX_NUMNODES) +#define SIZE_AC 1 +#define SIZE_L3 (1 + MAX_NUMNODES) static int drain_freelist(struct kmem_cache *cache, struct kmem_list3 *l3, int tofree); @@ -1409,22 +1409,6 @@ static void init_list(struct kmem_cache *cachep, struct kmem_list3 *list, local_irq_enable(); } -/* - * For setting up all the kmem_list3s for cache whose buffer_size is same as - * size of kmem_list3. - */ -static void __init set_up_list3s(struct kmem_cache *cachep, int index) -{ - int node; - - for_each_online_node(node) { - cachep->nodelists[node] = &initkmem_list3[index + node]; - cachep->nodelists[node]->next_reap = jiffies + - REAPTIMEOUT_LIST3 + - ((unsigned long)cachep) % REAPTIMEOUT_LIST3; - } -} - /* * Initialisation. Called after the page allocator have been initialised and * before smp_init(). @@ -1448,7 +1432,6 @@ void __init kmem_cache_init(void) if (i < MAX_NUMNODES) cache_cache.nodelists[i] = NULL; } - set_up_list3s(&cache_cache, CACHE_CACHE); /* * Fragmentation resistance on low memory - only use bigger @@ -1604,9 +1587,10 @@ void __init kmem_cache_init(void) { int nid; - for_each_online_node(nid) { - init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], nid); + /* Replace the static kmem_list3 structures for the boot cpu */ + init_list(&cache_cache, &initkmem_list3[CACHE_CACHE], node); + for_each_online_node(nid) { init_list(malloc_sizes[INDEX_AC].cs_cachep, &initkmem_list3[SIZE_AC + nid], nid); @@ -1976,6 +1960,22 @@ static void slab_destroy(struct kmem_cache *cachep, struct slab *slabp) } } +/* + * For setting up all the kmem_list3s for cache whose buffer_size is same as + * size of kmem_list3. + */ +static void __init set_up_list3s(struct kmem_cache *cachep, int index) +{ + int node; + + for_each_online_node(node) { + cachep->nodelists[node] = &initkmem_list3[index + node]; + cachep->nodelists[node]->next_reap = jiffies + + REAPTIMEOUT_LIST3 + + ((unsigned long)cachep) % REAPTIMEOUT_LIST3; + } +} + static void __kmem_cache_destroy(struct kmem_cache *cachep) { int i; @@ -2099,7 +2099,7 @@ static int __init_refok setup_cpu_cache(struct kmem_cache *cachep) g_cpucache_up = PARTIAL_L3; } else { int node; - for_each_online_node(node) { + for_each_node_state(node, N_NORMAL_MEMORY) { cachep->nodelists[node] = kmalloc_node(sizeof(struct kmem_list3), GFP_KERNEL, node);