Home » Mailing lists » Devel » [PATCH] BC: resource beancounters (v2)  
	
		
		
			| [PATCH 6/6] BC: kernel memory accounting (marks) [message #5548 is a reply to message #5542] | 
			Wed, 23 August 2006 11:05    | 
		 
		
			
				
				
				
					
						  
						dev
						 Messages: 1693 Registered: September 2005  Location: Moscow
						
					 | 
					Senior Member  | 
					 
  | 
		 
		 
	 | 
 
	
		Mark some kmem caches with SLAB_BC and some allocations 
with __GFP_BC to cause charging/limiting of appropriate 
kernel resources.  
 
Signed-off-by: Pavel Emelianov <xemul@sw.ru> 
Signed-off-by: Kirill Korotaev <dev@sw.ru> 
 
--- 
 
 arch/i386/kernel/ldt.c           |    4 ++-- 
 arch/i386/mm/init.c              |    4 ++-- 
 arch/i386/mm/pgtable.c           |    6 ++++-- 
 drivers/char/tty_io.c            |   10 +++++----- 
 fs/file.c                        |    8 ++++---- 
 fs/locks.c                       |    2 +- 
 fs/namespace.c                   |    3 ++- 
 fs/select.c                      |    7 ++++--- 
 include/asm-i386/thread_info.h   |    4 ++-- 
 include/asm-ia64/pgalloc.h       |   24 +++++++++++++++++------- 
 include/asm-x86_64/pgalloc.h     |   12 ++++++++---- 
 include/asm-x86_64/thread_info.h |    5 +++-- 
 ipc/msgutil.c                    |    4 ++-- 
 ipc/sem.c                        |    7 ++++--- 
 ipc/util.c                       |    8 ++++---- 
 kernel/fork.c                    |   15 ++++++++------- 
 kernel/posix-timers.c            |    3 ++- 
 kernel/signal.c                  |    2 +- 
 kernel/user.c                    |    2 +- 
 mm/rmap.c                        |    3 ++- 
 mm/shmem.c                       |    3 ++- 
 21 files changed, 80 insertions(+), 56 deletions(-) 
 
--- ./arch/i386/kernel/ldt.c.bcslabs	2006-04-21 11:59:31.000000000 +0400 
+++ ./arch/i386/kernel/ldt.c	2006-08-01 13:22:30.000000000 +0400 
@@ -39,9 +39,9 @@ static int alloc_ldt(mm_context_t *pc, i 
 	oldsize = pc->size; 
 	mincount = (mincount+511)&(~511); 
 	if (mincount*LDT_ENTRY_SIZE > PAGE_SIZE) 
-		newldt = vmalloc(mincount*LDT_ENTRY_SIZE); 
+		newldt = vmalloc_bc(mincount*LDT_ENTRY_SIZE); 
 	else 
-		newldt = kmalloc(mincount*LDT_ENTRY_SIZE, GFP_KERNEL); 
+		newldt = kmalloc(mincount*LDT_ENTRY_SIZE, GFP_KERNEL_BC); 
  
 	if (!newldt) 
 		return -ENOMEM; 
--- ./arch/i386/mm/init.c.bcslabs	2006-07-10 12:39:10.000000000 +0400 
+++ ./arch/i386/mm/init.c	2006-08-01 13:17:07.000000000 +0400 
@@ -680,7 +680,7 @@ void __init pgtable_cache_init(void) 
 		pmd_cache = kmem_cache_create("pmd", 
 					PTRS_PER_PMD*sizeof(pmd_t), 
 					PTRS_PER_PMD*sizeof(pmd_t), 
-					0, 
+					SLAB_BC, 
 					pmd_ctor, 
 					NULL); 
 		if (!pmd_cache) 
@@ -689,7 +689,7 @@ void __init pgtable_cache_init(void) 
 	pgd_cache = kmem_cache_create("pgd", 
 				PTRS_PER_PGD*sizeof(pgd_t), 
 				PTRS_PER_PGD*sizeof(pgd_t), 
-				0, 
+				SLAB_BC, 
 				pgd_ctor, 
 				PTRS_PER_PMD == 1 ? pgd_dtor : NULL); 
 	if (!pgd_cache) 
--- ./arch/i386/mm/pgtable.c.bcslabs	2006-07-10 12:39:10.000000000 +0400 
+++ ./arch/i386/mm/pgtable.c	2006-08-01 13:27:35.000000000 +0400 
@@ -158,9 +158,11 @@ struct page *pte_alloc_one(struct mm_str 
 	struct page *pte; 
  
 #ifdef CONFIG_HIGHPTE 
-	pte =  alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT|__GFP_ZERO , 0); 
+	pte =  alloc_pages(GFP_KERNEL|__GFP_HIGHMEM|__GFP_REPEAT|__GFP_ZERO | 
+			__GFP_BC | __GFP_BC_LIMIT, 0); 
 #else 
-	pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO, 0); 
+	pte = alloc_pages(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO| 
+			__GFP_BC | __GFP_BC_LIMIT, 0); 
 #endif 
 	return pte; 
 } 
--- ./drivers/char/tty_io.c.bcslabs	2006-07-10 12:39:11.000000000 +0400 
+++ ./drivers/char/tty_io.c	2006-08-01 15:21:21.000000000 +0400 
@@ -158,7 +158,7 @@ static struct tty_struct *alloc_tty_stru 
  
 static struct tty_struct *alloc_tty_struct(void) 
 { 
-	return kzalloc(sizeof(struct tty_struct), GFP_KERNEL); 
+	return kzalloc(sizeof(struct tty_struct), GFP_KERNEL_BC); 
 } 
  
 static void tty_buffer_free_all(struct tty_struct *); 
@@ -1495,7 +1495,7 @@ static int init_dev(struct tty_driver *d 
  
 	if (!*tp_loc) { 
 		tp = (struct termios *) kmalloc(sizeof(struct termios), 
-						GFP_KERNEL); 
+						GFP_KERNEL_BC); 
 		if (!tp) 
 			goto free_mem_out; 
 		*tp = driver->init_termios; 
@@ -1503,7 +1503,7 @@ static int init_dev(struct tty_driver *d 
  
 	if (!*ltp_loc) { 
 		ltp = (struct termios *) kmalloc(sizeof(struct termios), 
-						 GFP_KERNEL); 
+						 GFP_KERNEL_BC); 
 		if (!ltp) 
 			goto free_mem_out; 
 		memset(ltp, 0, sizeof(struct termios)); 
@@ -1528,7 +1528,7 @@ static int init_dev(struct tty_driver *d 
  
 		if (!*o_tp_loc) { 
 			o_tp = (struct termios *) 
-				kmalloc(sizeof(struct termios), GFP_KERNEL); 
+				kmalloc(sizeof(struct termios), GFP_KERNEL_BC); 
 			if (!o_tp) 
 				goto free_mem_out; 
 			*o_tp = driver->other->init_termios; 
@@ -1536,7 +1536,7 @@ static int init_dev(struct tty_driver *d 
  
 		if (!*o_ltp_loc) { 
 			o_ltp = (struct termios *) 
-				kmalloc(sizeof(struct termios), GFP_KERNEL); 
+				kmalloc(sizeof(struct termios), GFP_KERNEL_BC); 
 			if (!o_ltp) 
 				goto free_mem_out; 
 			memset(o_ltp, 0, sizeof(struct termios)); 
--- ./fs/file.c.bcslabs	2006-07-17 17:01:12.000000000 +0400 
+++ ./fs/file.c	2006-08-01 15:18:03.000000000 +0400 
@@ -44,9 +44,9 @@ struct file ** alloc_fd_array(int num) 
 	int size = num * sizeof(struct file *); 
  
 	if (size <= PAGE_SIZE) 
-		new_fds = (struct file **) kmalloc(size, GFP_KERNEL); 
+		new_fds = (struct file **) kmalloc(size, GFP_KERNEL_BC); 
 	else  
-		new_fds = (struct file **) vmalloc(size); 
+		new_fds = (struct file **) vmalloc_bc(size); 
 	return new_fds; 
 } 
  
@@ -213,9 +213,9 @@ fd_set * alloc_fdset(int num) 
 	int size = num / 8; 
  
 	if (size <= PAGE_SIZE) 
-		new_fdset = (fd_set *) kmalloc(size, GFP_KERNEL); 
+		new_fdset = (fd_set *) kmalloc(size, GFP_KERNEL_BC); 
 	else 
-		new_fdset = (fd_set *) vmalloc(size); 
+		new_fdset = (fd_set *) vmalloc_bc(size); 
 	return new_fdset; 
 } 
  
--- ./fs/locks.c.bcslabs	2006-07-10 12:39:16.000000000 +0400 
+++ ./fs/locks.c	2006-08-01 12:46:47.000000000 +0400 
@@ -2226,7 +2226,7 @@ EXPORT_SYMBOL(lock_may_write); 
 static int __init filelock_init(void) 
 { 
 	filelock_cache = kmem_cache_create("file_lock_cache", 
-			sizeof(struct file_lock), 0, SLAB_PANIC, 
+			sizeof(struct file_lock), 0, SLAB_PANIC | SLAB_BC, 
 			init_once, NULL); 
 	return 0; 
 } 
--- ./fs/namespace.c.bcslabs	2006-07-10 12:39:16.000000000 +0400 
+++ ./fs/namespace.c	2006-08-01 12:47:12.000000000 +0400 
@@ -1825,7 +1825,8 @@ void __init mnt_init(unsigned long mempa 
 	init_rwsem(&namespace_sem); 
  
 	mnt_cache = kmem_cache_create("mnt_cache", sizeof(struct vfsmount), 
-			0, SLAB_HWCACHE_ALIGN | SLAB_PANIC, NULL, NULL); 
+			0, SLAB_HWCACHE_ALIGN | SLAB_BC | SLAB_PANIC, 
+			NULL, NULL); 
  
 	mount_hashtable = (struct list_head *)__get_free_page(GFP_ATOMIC); 
  
--- ./fs/select.c.bcslabs	2006-07-10 12:39:17.000000000 +0400 
+++ ./fs/select.c	2006-08-01 15:17:01.000000000 +0400 
@@ -103,7 +103,8 @@ static struct poll_table_entry *poll_get 
 	if (!table || POLL_TABLE_FULL(table)) { 
 		struct poll_table_page *new_table; 
  
-		new_table = (struct poll_table_page *) __get_free_page(GFP_KERNEL); 
+		new_table = (struct poll_table_page *) 
+			__get_free_page(GFP_KERNEL_BC); 
 		if (!new_table) { 
 			p->error = -ENOMEM; 
 			__set_current_state(TASK_RUNNING); 
@@ -339,7 +340,7 @@ static int core_sys_select(int n, fd_set 
 	if (size > sizeof(stack_fds) / 6) { 
 		/* Not enough space in on-stack array; must use kmalloc */ 
 		ret = -ENOMEM; 
-		bits = kmalloc(6 * size, GFP_KERNEL); 
+		bits = kmalloc(6 * size, GFP_KERNEL_BC); 
 		if (!bits) 
 			goto out_nofds; 
 	} 
@@ -693,7 +694,7 @@ int do_sys_poll(struct pollfd __user *uf 
 		if (!stack_pp) 
 			stack_pp = pp = (struct poll_list *)stack_pps; 
 		else { 
-			pp = kmalloc(size, GFP_KERNEL); 
+			pp = kmalloc(size, GFP_KERNEL_BC); 
 			if (!pp) 
 				goto out_fds; 
 		} 
--- ./include/asm-i386/thread_info.h.bcslabs	2006-07-10 12:39:19.000000000 +0400 
+++ ./include/asm-i386/thread_info.h	2006-08-01 15:19:50.000000000 +0400 
@@ -99,13 +99,13 @@ static inline struct thread_info *curren 
 	({							\ 
 		struct thread_info *ret;			\ 
 								\ 
-		ret = kmalloc(THREAD_SIZE, GFP_KERNEL);		\ 
+		ret = kmalloc(THREAD_SIZE, GFP_KERNEL_BC);	\ 
 		if (ret)					\ 
 			memset(ret, 0, THREAD_SIZE);		\ 
 		ret;						\ 
 	}) 
 #else 
-#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) 
+#define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL_BC) 
 #endif 
  
 #define free_thread_info(info)	kfree(info) 
--- ./include/asm-ia64/pgalloc.h.bcslabs	2006-07-10 12:39:19.000000000 +0400 
+++ ./include/asm-ia64/pgalloc.h	2006-08-01 13:35:49.000000000 +0400 
@@ -19,6 +19,8 @@ 
 #include <linux/page-flags.h> 
 #include <linux/threads.h> 
  
+#include <bc/kmem.h> 
+ 
 #include <asm/mmu_context.h> 
  
 DECLARE_PER_CPU(unsigned long *, __pgtable_quicklist); 
@@ -37,7 +39,7 @@ static inline long pgtable_quicklist_tot 
 	return ql_size; 
 } 
  
-static inline void *pgtable_quicklist_alloc(void) 
+static inline void *pgtable_quicklist_alloc(int charge) 
 { 
 	unsigned long *ret = NULL; 
  
@@ -45,13 +47,20 @@ static inline void *pgtable_quicklist_al 
  
 	ret = pgtable_quicklist; 
 	if (likely(ret != NULL)) { 
+		if (charge && bc_page_charge(virt_to_page(ret), 
+					0, __GFP_BC_LIMIT)) { 
+			ret = NULL; 
+			goto out; 
+		} 
 		pgtable_quicklist = (unsigned long *)(*ret); 
 		ret[0] = 0; 
 		--pgtable_quicklist_size; 
+out: 
 		preempt_enable(); 
 	} else { 
 		preempt_enable(); 
-		ret = (unsigned long *)__get_free_page(GFP_KERNEL | __GFP_ZERO); 
+		ret = (unsigned long *)__get_free_page(GFP_KERNEL | 
+				__GFP_ZERO | __GFP_BC | __GFP_BC_LIMIT); 
 	} 
  
 	return ret; 
@@ -69,6 +78,7 @@ static inline void pgtable_quicklist_fre 
 #endif 
  
 	preempt_disable(); 
+	bc_page_uncharge(virt_to_page(pgtable_entry), 0); 
 	*(unsigned long *)pgtable_entry = (unsigned long)pgtable_quicklist; 
 	pgtable_quicklist = (unsigned long *)pgtable_entry; 
 	++pgtable_quicklist_size; 
@@ -77,7 +87,7 @@ static inline void pgtable_quicklist_fre 
  
 static inline pgd_t *pgd_alloc(struct mm_struct *mm) 
 { 
-	return pgtable_quicklist_alloc(); 
+	return pgtable_quicklist_alloc(1); 
 } 
  
 static inline void pgd_free(pgd_t * pgd) 
@@ -94,7 +104,7 @@ pgd_populate(struct mm_struct *mm, pgd_t 
  
 static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long addr) 
 { 
-	return pgtable_quicklist_alloc(); 
+	return pgtable
...
  
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
  
 
	
	  | 
	 | 
	
		[PATCH] BC: resource beancounters (v2)
		By:  dev on Wed, 23 August 2006 10:44  
	 | 
 
	  | 
	 | 
	
		[PATCH 1/6] BC: kconfig
		By:  dev on Wed, 23 August 2006 10:59  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 1/6] BC: kconfig
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 1/6] BC: kconfig
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 1/6] BC: kconfig
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 1/6] BC: kconfig
		By:  dev on Fri, 25 August 2006 11:27  
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 1/6] BC: kconfig
		By:  dev on Fri, 25 August 2006 11:31  
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 1/6] BC: kconfig
		By:  rdunlap on Wed, 23 August 2006 22:29  
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 1/6] BC: kconfig
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 1/6] BC: kconfig
		
	 | 
 
	  | 
	 | 
	
		Re: [ckrm-tech] [PATCH 1/6] BC: kconfig
		By:  dev on Thu, 24 August 2006 11:47  
	 | 
 
	  | 
	 | 
	
		Re: [ckrm-tech] [PATCH 1/6] BC: kconfig
		
	 | 
 
	  | 
	 | 
	
		[PATCH 2/6] BC: beancounters core (API)
		By:  dev on Wed, 23 August 2006 11:00  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		By:  dev on Wed, 23 August 2006 13:25  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		By:  dev on Wed, 23 August 2006 13:46  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		By:  dev on Thu, 24 August 2006 12:03  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		By:  dev on Fri, 25 August 2006 10:51  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 2/6] BC: beancounters core (API)
		
	 | 
 
	  | 
	 | 
	
		[PATCH 3/6] BC: context inheriting and changing
		By:  dev on Wed, 23 August 2006 11:02  
	 | 
 
	  | 
	 | 
	
		[PATCH 4/6] BC: user interface (syscalls)
		By:  dev on Wed, 23 August 2006 11:03  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		By:  dev on Wed, 23 August 2006 13:40  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		By:  Alan Cox on Wed, 23 August 2006 17:08  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		By:  Alan Cox on Thu, 24 August 2006 10:42  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		By:  dev on Fri, 25 August 2006 10:54  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 4/6] BC: user interface (syscalls)
		
	 | 
 
	  | 
	 | 
	
		[PATCH 5/6] BC: kernel memory accounting (core)
		By:  dev on Wed, 23 August 2006 11:04  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 5/6] BC: kernel memory accounting (core)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 5/6] BC: kernel memory accounting (core)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH 5/6] BC: kernel memory accounting (core)
		By:  dev on Fri, 25 August 2006 10:06  
	 | 
 
	  | 
	 | 
	
		[PATCH 6/6] BC: kernel memory accounting (marks)
		By:  dev on Wed, 23 August 2006 11:05  
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		By:  dev on Tue, 29 August 2006 09:52  
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		By:  dev on Tue, 29 August 2006 14:34  
	 | 
 
	  | 
	 | 
	
		Re:  [PATCH 6/6] BC: kernel memory accounting (marks)
		By:  dev on Tue, 29 August 2006 15:53  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		By:  dev on Fri, 25 August 2006 11:47  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		By:  dev on Mon, 28 August 2006 08:27  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: BC: resource beancounters (v2)
		By:  Alan Cox on Sat, 26 August 2006 16:16  
	 | 
 
	  | 
	 | 
	
		Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re:  Re: BC: resource beancounters (v2)
		By:  kir on Mon, 28 August 2006 17:40  
	 | 
 
	  | 
	 | 
	
		Re:  Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re:  Re: BC: resource beancounters (v2)
		By:  Alan Cox on Tue, 29 August 2006 10:15  
	 | 
 
	  | 
	 | 
	
		Re:  Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re:  Re: BC: resource beancounters (v2)
		By:  Alan Cox on Tue, 29 August 2006 18:46  
	 | 
 
	  | 
	 | 
	
		Re:  Re: BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		By:  dev on Tue, 29 August 2006 15:33  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		By:  Alan Cox on Thu, 24 August 2006 10:38  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		By:  Alan Cox on Fri, 25 August 2006 15:36  
	 | 
 
	  | 
	 | 
	
		Re: [PATCH] BC: resource beancounters (v2)
		
	 | 
  
Goto Forum:
 
 Current Time: Tue Nov 04 01:56:54 GMT 2025 
 Total time taken to generate the page: 0.34500 seconds 
 |