[kernel] r6180 - in dists/trunk/linux-2.6/debian: arch/amd64 arch/i386 arch/powerpc patches patches/series

Bastian Blank waldi at costa.debian.org
Mon Mar 13 13:23:31 UTC 2006


Author: waldi
Date: Mon Mar 13 13:23:26 2006
New Revision: 6180

Added:
   dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc12.patch
      - copied, changed from r5994, dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc10.patch
Removed:
   dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc10.patch
Modified:
   dists/trunk/linux-2.6/debian/arch/amd64/defines
   dists/trunk/linux-2.6/debian/arch/i386/defines
   dists/trunk/linux-2.6/debian/arch/powerpc/defines
   dists/trunk/linux-2.6/debian/patches/series/0experimental.1-extra
Log:
* debian/arch/amd64/defines, debian/arch/i386/defines,
  debian/arch/powerpc/defines: Reenable vserver.
* debian/patches/series/0experimental.1-extra
  - Use new vserver patch.
  - Use wildcards.
* debian/patches/vserver-vs2.0.2-rc10.patch: Remove.
* debian/patches/vserver-vs2.0.2-rc12.patch: Add.


Modified: dists/trunk/linux-2.6/debian/arch/amd64/defines
==============================================================================
--- dists/trunk/linux-2.6/debian/arch/amd64/defines	(original)
+++ dists/trunk/linux-2.6/debian/arch/amd64/defines	Mon Mar 13 13:23:26 2006
@@ -8,7 +8,7 @@
 kernel-arch: x86_64
 kernel-header-dirs: x86_64
 subarches:
-# vserver
+ vserver
 # xen
 
 [image]

Modified: dists/trunk/linux-2.6/debian/arch/i386/defines
==============================================================================
--- dists/trunk/linux-2.6/debian/arch/i386/defines	(original)
+++ dists/trunk/linux-2.6/debian/arch/i386/defines	Mon Mar 13 13:23:26 2006
@@ -8,7 +8,7 @@
 kernel-arch: i386
 kernel-header-dirs: i386
 subarches:
-# vserver
+ vserver
 # xen
 
 [image]

Modified: dists/trunk/linux-2.6/debian/arch/powerpc/defines
==============================================================================
--- dists/trunk/linux-2.6/debian/arch/powerpc/defines	(original)
+++ dists/trunk/linux-2.6/debian/arch/powerpc/defines	Mon Mar 13 13:23:26 2006
@@ -8,7 +8,7 @@
 kernel-arch: powerpc
 kpkg-subarch: ppc
 subarches:
-# vserver
+ vserver
 
 [image]
 

Modified: dists/trunk/linux-2.6/debian/patches/series/0experimental.1-extra
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/0experimental.1-extra	(original)
+++ dists/trunk/linux-2.6/debian/patches/series/0experimental.1-extra	Mon Mar 13 13:23:26 2006
@@ -1,7 +1,7 @@
 + maclist.patch arm armeb
 + arm-nslu2-maclist.patch arm armeb
-+ vserver-version.patch amd64_vserver i386_vserver hppa_vserver powerpc_vserver
-+ vserver-vs2.0.2-rc10.patch amd64_vserver i386_vserver powerpc_vserver
++ vserver-version.patch *_vserver
++ vserver-vs2.0.2-rc12.patch *_vserver
 + xen-tree-merge-21940.patch amd64_xen i386_xen
 + mips-tulip.patch mipsel
 + mips-tulip_dc21143.patch mipsel

Copied: dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc12.patch (from r5994, dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc10.patch)
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc10.patch	(original)
+++ dists/trunk/linux-2.6/debian/patches/vserver-vs2.0.2-rc12.patch	Mon Mar 13 13:23:26 2006
@@ -1,6 +1,7 @@
-diff -NurpP --minimal linux-2.6.16-rc5/arch/alpha/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/Kconfig
---- linux-2.6.16-rc5/arch/alpha/Kconfig	2006-02-28 15:01:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
+index eedf41b..816a4d5 100644
+--- a/arch/alpha/Kconfig
++++ b/arch/alpha/Kconfig
 @@ -619,6 +619,8 @@ source "arch/alpha/oprofile/Kconfig"
  
  source "arch/alpha/Kconfig.debug"
@@ -10,9 +11,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/alpha/kernel/entry.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/kernel/entry.S
---- linux-2.6.16-rc5/arch/alpha/kernel/entry.S	2006-02-28 15:01:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/kernel/entry.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S
+index 7af15bf..780cb93 100644
+--- a/arch/alpha/kernel/entry.S
++++ b/arch/alpha/kernel/entry.S
 @@ -874,24 +874,15 @@ sys_getxgid:
  	.globl	sys_getxpid
  	.ent	sys_getxpid
@@ -45,9 +47,10 @@
  	ret
  .end sys_getxpid
  
-diff -NurpP --minimal linux-2.6.16-rc5/arch/alpha/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/alpha/kernel/ptrace.c	2006-02-28 15:01:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c
+index 0cd0605..edb3086 100644
+--- a/arch/alpha/kernel/ptrace.c
++++ b/arch/alpha/kernel/ptrace.c
 @@ -15,6 +15,7 @@
  #include <linux/slab.h>
  #include <linux/security.h>
@@ -68,9 +71,10 @@
  	if (request == PTRACE_ATTACH) {
  		ret = ptrace_attach(child);
  		goto out;
-diff -NurpP --minimal linux-2.6.16-rc5/arch/alpha/kernel/systbls.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/kernel/systbls.S
---- linux-2.6.16-rc5/arch/alpha/kernel/systbls.S	2005-08-29 22:24:49 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/kernel/systbls.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
+index 4342cea..1c5c9e3 100644
+--- a/arch/alpha/kernel/systbls.S
++++ b/arch/alpha/kernel/systbls.S
 @@ -447,7 +447,7 @@ sys_call_table:
  	.quad sys_stat64			/* 425 */
  	.quad sys_lstat64
@@ -80,9 +84,10 @@
  	.quad sys_ni_syscall			/* sys_mbind */
  	.quad sys_ni_syscall			/* sys_get_mempolicy */
  	.quad sys_ni_syscall			/* sys_set_mempolicy */
-diff -NurpP --minimal linux-2.6.16-rc5/arch/alpha/mm/init.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/mm/init.c
---- linux-2.6.16-rc5/arch/alpha/mm/init.c	2006-02-28 15:01:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/alpha/mm/init.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
+index 486d794..038f38e 100644
+--- a/arch/alpha/mm/init.c
++++ b/arch/alpha/mm/init.c
 @@ -21,6 +21,7 @@
  #include <linux/init.h>
  #include <linux/bootmem.h> /* max_low_pfn */
@@ -91,9 +96,10 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/arm/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm/Kconfig
---- linux-2.6.16-rc5/arch/arm/Kconfig	2006-02-28 15:01:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index 9f80fa5..189262b 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
 @@ -825,6 +825,8 @@ source "arch/arm/oprofile/Kconfig"
  
  source "arch/arm/Kconfig.debug"
@@ -103,9 +109,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/arm/kernel/calls.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm/kernel/calls.S
---- linux-2.6.16-rc5/arch/arm/kernel/calls.S	2006-02-28 15:01:58 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm/kernel/calls.S	2006-02-18 15:22:48 +0100
+diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
+index 3173924..83c02a7 100644
+--- a/arch/arm/kernel/calls.S
++++ b/arch/arm/kernel/calls.S
 @@ -322,7 +322,7 @@
  /* 310 */	CALL(sys_request_key)
  		CALL(sys_keyctl)
@@ -115,9 +122,10 @@
  		CALL(sys_ioprio_set)
  /* 315 */	CALL(sys_ioprio_get)
  		CALL(sys_inotify_init)
-diff -NurpP --minimal linux-2.6.16-rc5/arch/arm26/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm26/Kconfig
---- linux-2.6.16-rc5/arch/arm26/Kconfig	2006-02-28 15:02:01 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm26/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/arm26/Kconfig b/arch/arm26/Kconfig
+index dee23d8..76d4054 100644
+--- a/arch/arm26/Kconfig
++++ b/arch/arm26/Kconfig
 @@ -230,6 +230,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/arm26/Kconfig.debug"
@@ -127,9 +135,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/arm26/kernel/calls.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm26/kernel/calls.S
---- linux-2.6.16-rc5/arch/arm26/kernel/calls.S	2005-03-02 12:38:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm26/kernel/calls.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/arm26/kernel/calls.S b/arch/arm26/kernel/calls.S
+index e3d2768..3e8672a 100644
+--- a/arch/arm26/kernel/calls.S
++++ b/arch/arm26/kernel/calls.S
 @@ -257,6 +257,11 @@ __syscall_start:
  		.long	sys_lremovexattr
  		.long	sys_fremovexattr
@@ -142,9 +151,10 @@
  __syscall_end:
  
  		.rept	NR_syscalls - (__syscall_end - __syscall_start) / 4
-diff -NurpP --minimal linux-2.6.16-rc5/arch/arm26/kernel/traps.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm26/kernel/traps.c
---- linux-2.6.16-rc5/arch/arm26/kernel/traps.c	2006-02-28 15:02:01 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/arm26/kernel/traps.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/arm26/kernel/traps.c b/arch/arm26/kernel/traps.c
+index 5847ea5..4110862 100644
+--- a/arch/arm26/kernel/traps.c
++++ b/arch/arm26/kernel/traps.c
 @@ -186,8 +186,9 @@ NORET_TYPE void die(const char *str, str
  	printk("Internal error: %s: %x\n", str, err);
  	printk("CPU: %d\n", smp_processor_id());
@@ -157,9 +167,10 @@
  
  	if (!user_mode(regs) || in_interrupt()) {
  		__dump_stack(tsk, (unsigned long)(regs + 1));
-diff -NurpP --minimal linux-2.6.16-rc5/arch/cris/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/cris/Kconfig
---- linux-2.6.16-rc5/arch/cris/Kconfig	2006-02-28 15:02:01 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/cris/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
+index b832619..4afa431 100644
+--- a/arch/cris/Kconfig
++++ b/arch/cris/Kconfig
 @@ -173,6 +173,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/cris/Kconfig.debug"
@@ -169,9 +180,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/frv/mm/mmu-context.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/frv/mm/mmu-context.c
---- linux-2.6.16-rc5/arch/frv/mm/mmu-context.c	2005-03-02 12:38:20 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/frv/mm/mmu-context.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/frv/mm/mmu-context.c b/arch/frv/mm/mmu-context.c
+index f2c6866..6983198 100644
+--- a/arch/frv/mm/mmu-context.c
++++ b/arch/frv/mm/mmu-context.c
 @@ -11,6 +11,7 @@
  
  #include <linux/sched.h>
@@ -180,9 +192,10 @@
  #include <asm/tlbflush.h>
  
  #define NR_CXN	4096
-diff -NurpP --minimal linux-2.6.16-rc5/arch/h8300/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/h8300/Kconfig
---- linux-2.6.16-rc5/arch/h8300/Kconfig	2006-02-28 15:02:01 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/h8300/Kconfig	2006-02-18 15:22:48 +0100
+diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
+index 98308b0..a6038b0 100644
+--- a/arch/h8300/Kconfig
++++ b/arch/h8300/Kconfig
 @@ -191,6 +191,8 @@ source "fs/Kconfig"
  
  source "arch/h8300/Kconfig.debug"
@@ -192,9 +205,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/i386/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/Kconfig
---- linux-2.6.16-rc5/arch/i386/Kconfig	2006-02-28 15:02:01 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/Kconfig	2006-02-28 15:21:26 +0100
+diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
+index 5b1a7d4..e37c177 100644
+--- a/arch/i386/Kconfig
++++ b/arch/i386/Kconfig
 @@ -466,23 +466,43 @@ choice
  	  will also likely make your kernel incompatible with binary-only
  	  kernel modules.
@@ -256,9 +270,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/i386/boot/compressed/misc.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/boot/compressed/misc.c
---- linux-2.6.16-rc5/arch/i386/boot/compressed/misc.c	2006-02-28 15:02:01 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/boot/compressed/misc.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/i386/boot/compressed/misc.c b/arch/i386/boot/compressed/misc.c
+index f19f3a7..6f96229 100644
+--- a/arch/i386/boot/compressed/misc.c
++++ b/arch/i386/boot/compressed/misc.c
 @@ -309,7 +309,7 @@ static void setup_normal_output_buffer(v
  #else
  	if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) < 1024) error("Less than 2MB of memory");
@@ -279,9 +294,10 @@
  		mv->hcount = 0; /* say: we need not to move high_buffer */
  	}
  	else mv->hcount = -1;
-diff -NurpP --minimal linux-2.6.16-rc5/arch/i386/kernel/setup.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/setup.c
---- linux-2.6.16-rc5/arch/i386/kernel/setup.c	2006-02-28 15:02:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/setup.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
+index ab62a9f..0fc23c0 100644
+--- a/arch/i386/kernel/setup.c
++++ b/arch/i386/kernel/setup.c
 @@ -1192,8 +1192,8 @@ void __init setup_bootmem_allocator(void
  	 * the (very unlikely) case of us accidentally initializing the
  	 * bootmem allocator with an invalid RAM area.
@@ -293,9 +309,10 @@
  
  	/*
  	 * reserve physical page 0 - it's a special BIOS page on many boxes,
-diff -NurpP --minimal linux-2.6.16-rc5/arch/i386/kernel/sys_i386.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/sys_i386.c
---- linux-2.6.16-rc5/arch/i386/kernel/sys_i386.c	2004-08-14 12:56:23 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/sys_i386.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/i386/kernel/sys_i386.c b/arch/i386/kernel/sys_i386.c
+index a4a6197..e68b2ba 100644
+--- a/arch/i386/kernel/sys_i386.c
++++ b/arch/i386/kernel/sys_i386.c
 @@ -19,6 +19,7 @@
  #include <linux/mman.h>
  #include <linux/file.h>
@@ -343,9 +360,10 @@
  	error |= __put_user(0,name->machine+__OLD_UTS_LEN);
  	
  	up_read(&uts_sem);
-diff -NurpP --minimal linux-2.6.16-rc5/arch/i386/kernel/syscall_table.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/syscall_table.S
---- linux-2.6.16-rc5/arch/i386/kernel/syscall_table.S	2006-02-28 15:02:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/syscall_table.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/i386/kernel/syscall_table.S b/arch/i386/kernel/syscall_table.S
+index ac687d0..5c2afb2 100644
+--- a/arch/i386/kernel/syscall_table.S
++++ b/arch/i386/kernel/syscall_table.S
 @@ -272,7 +272,7 @@ ENTRY(sys_call_table)
  	.long sys_tgkill	/* 270 */
  	.long sys_utimes
@@ -355,9 +373,10 @@
  	.long sys_mbind
  	.long sys_get_mempolicy
  	.long sys_set_mempolicy
-diff -NurpP --minimal linux-2.6.16-rc5/arch/i386/kernel/traps.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/traps.c
---- linux-2.6.16-rc5/arch/i386/kernel/traps.c	2006-02-28 15:02:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/i386/kernel/traps.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
+index b814dbd..610d2f9 100644
+--- a/arch/i386/kernel/traps.c
++++ b/arch/i386/kernel/traps.c
 @@ -53,6 +53,7 @@
  #include <asm/kdebug.h>
  
@@ -398,9 +417,10 @@
    	} else
  		printk(KERN_EMERG "Recursive die() failure, output suppressed\n");
  
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/Kconfig
---- linux-2.6.16-rc5/arch/ia64/Kconfig	2006-02-28 15:02:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/Kconfig	2006-02-28 15:21:26 +0100
+diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
+index a85ea9d..0a36092 100644
+--- a/arch/ia64/Kconfig
++++ b/arch/ia64/Kconfig
 @@ -464,6 +464,8 @@ endmenu
  
  source "arch/ia64/Kconfig.debug"
@@ -410,9 +430,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/ia32/binfmt_elf32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/ia32/binfmt_elf32.c
---- linux-2.6.16-rc5/arch/ia64/ia32/binfmt_elf32.c	2006-01-03 17:29:09 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/ia32/binfmt_elf32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/ia64/ia32/binfmt_elf32.c b/arch/ia64/ia32/binfmt_elf32.c
+index 4e7a6a1..96b3e14 100644
+--- a/arch/ia64/ia32/binfmt_elf32.c
++++ b/arch/ia64/ia32/binfmt_elf32.c
 @@ -236,7 +236,8 @@ ia32_setup_arg_pages (struct linux_binpr
  			kmem_cache_free(vm_area_cachep, mpnt);
  			return ret;
@@ -423,9 +444,10 @@
  	}
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/ia32/ia32_entry.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/ia32/ia32_entry.S
---- linux-2.6.16-rc5/arch/ia64/ia32/ia32_entry.S	2006-02-28 15:02:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/ia32/ia32_entry.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/ia64/ia32/ia32_entry.S b/arch/ia64/ia32/ia32_entry.S
+index 95fe044..f51b6c9 100644
+--- a/arch/ia64/ia32/ia32_entry.S
++++ b/arch/ia64/ia32/ia32_entry.S
 @@ -483,7 +483,7 @@ ia32_syscall_table:
   	data8 sys_tgkill	/* 270 */
   	data8 compat_sys_utimes
@@ -435,9 +457,10 @@
    	data8 sys_ni_syscall
   	data8 sys_ni_syscall	/* 275 */
    	data8 sys_ni_syscall
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/kernel/entry.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/entry.S
---- linux-2.6.16-rc5/arch/ia64/kernel/entry.S	2006-02-28 15:02:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/entry.S	2006-02-18 15:22:49 +0100
+diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S
+index 930fdfc..f1f3cc1 100644
+--- a/arch/ia64/kernel/entry.S
++++ b/arch/ia64/kernel/entry.S
 @@ -1591,7 +1591,7 @@ sys_call_table:
  	data8 sys_mq_notify
  	data8 sys_mq_getsetattr
@@ -447,9 +470,10 @@
  	data8 sys_waitid			// 1270
  	data8 sys_add_key
  	data8 sys_request_key
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/kernel/perfmon.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/perfmon.c
---- linux-2.6.16-rc5/arch/ia64/kernel/perfmon.c	2006-02-28 15:02:04 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/perfmon.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c
+index 9c5194b..1c3017c 100644
+--- a/arch/ia64/kernel/perfmon.c
++++ b/arch/ia64/kernel/perfmon.c
 @@ -41,6 +41,8 @@
  #include <linux/capability.h>
  #include <linux/rcupdate.h>
@@ -468,9 +492,10 @@
  	vm_stat_account(vma->vm_mm, vma->vm_flags, vma->vm_file,
  							vma_pages(vma));
  	up_write(&task->mm->mmap_sem);
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/ia64/kernel/ptrace.c	2006-02-28 15:02:04 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c
+index eaed14a..7c8db71 100644
+--- a/arch/ia64/kernel/ptrace.c
++++ b/arch/ia64/kernel/ptrace.c
 @@ -18,6 +18,7 @@
  #include <linux/security.h>
  #include <linux/audit.h>
@@ -489,9 +514,10 @@
  	ret = -EPERM;
  	if (pid == 1)		/* no messing around with init! */
  		goto out_tsk;
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/kernel/signal.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/signal.c
---- linux-2.6.16-rc5/arch/ia64/kernel/signal.c	2006-02-28 15:02:04 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/kernel/signal.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/ia64/kernel/signal.c b/arch/ia64/kernel/signal.c
+index 463f6bb..0b00de6 100644
+--- a/arch/ia64/kernel/signal.c
++++ b/arch/ia64/kernel/signal.c
 @@ -21,6 +21,7 @@
  #include <linux/binfmts.h>
  #include <linux/unistd.h>
@@ -500,9 +526,10 @@
  
  #include <asm/ia32.h>
  #include <asm/intrinsics.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/mm/fault.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/mm/fault.c
---- linux-2.6.16-rc5/arch/ia64/mm/fault.c	2006-01-03 17:29:09 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/mm/fault.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
+index af7eb08..ea0308f 100644
+--- a/arch/ia64/mm/fault.c
++++ b/arch/ia64/mm/fault.c
 @@ -10,6 +10,7 @@
  #include <linux/smp_lock.h>
  #include <linux/interrupt.h>
@@ -511,9 +538,10 @@
  
  #include <asm/pgtable.h>
  #include <asm/processor.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ia64/sn/kernel/xpc_main.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/sn/kernel/xpc_main.c
---- linux-2.6.16-rc5/arch/ia64/sn/kernel/xpc_main.c	2006-02-28 15:02:05 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ia64/sn/kernel/xpc_main.c	2006-02-18 15:22:49 +0100
+diff --git a/arch/ia64/sn/kernel/xpc_main.c b/arch/ia64/sn/kernel/xpc_main.c
+index 8cbf164..9b6ca24 100644
+--- a/arch/ia64/sn/kernel/xpc_main.c
++++ b/arch/ia64/sn/kernel/xpc_main.c
 @@ -109,6 +109,7 @@ static ctl_table xpc_sys_xpc_hb_dir[] = 
  		0644,
  		NULL,
@@ -538,9 +566,10 @@
  		&sysctl_intvec,
  		NULL,
  		&xpc_disengage_request_min_timelimit,
-diff -NurpP --minimal linux-2.6.16-rc5/arch/m32r/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/m32r/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/m32r/kernel/ptrace.c	2006-02-28 15:02:05 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/m32r/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c
+index 340a3bf..aed14f3 100644
+--- a/arch/m32r/kernel/ptrace.c
++++ b/arch/m32r/kernel/ptrace.c
 @@ -25,6 +25,7 @@
  #include <linux/user.h>
  #include <linux/string.h>
@@ -549,9 +578,10 @@
  
  #include <asm/cacheflush.h>
  #include <asm/io.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/m68k/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/m68k/Kconfig
---- linux-2.6.16-rc5/arch/m68k/Kconfig	2006-02-28 15:02:05 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/m68k/Kconfig	2006-02-18 15:22:49 +0100
+diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
+index 8849439..c83a593 100644
+--- a/arch/m68k/Kconfig
++++ b/arch/m68k/Kconfig
 @@ -650,6 +650,8 @@ source "fs/Kconfig"
  
  source "arch/m68k/Kconfig.debug"
@@ -561,9 +591,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/m68k/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/m68k/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/m68k/kernel/ptrace.c	2006-01-03 17:29:10 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/m68k/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c
+index 540638c..deddf39 100644
+--- a/arch/m68k/kernel/ptrace.c
++++ b/arch/m68k/kernel/ptrace.c
 @@ -280,6 +280,8 @@ long arch_ptrace(struct task_struct *chi
  		ret = ptrace_request(child, request, addr, data);
  		break;
@@ -573,9 +604,10 @@
  
  	return ret;
  out_eio:
-diff -NurpP --minimal linux-2.6.16-rc5/arch/m68knommu/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/m68knommu/Kconfig
---- linux-2.6.16-rc5/arch/m68knommu/Kconfig	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/m68knommu/Kconfig	2006-02-18 15:22:49 +0100
+diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
+index e50858d..1ae18d8 100644
+--- a/arch/m68knommu/Kconfig
++++ b/arch/m68knommu/Kconfig
 @@ -646,6 +646,8 @@ source "fs/Kconfig"
  
  source "arch/m68knommu/Kconfig.debug"
@@ -585,10 +617,11 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/Kconfig
---- linux-2.6.16-rc5/arch/mips/Kconfig	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/Kconfig	2006-02-17 22:18:50 +0100
-@@ -1810,6 +1810,8 @@ source "arch/mips/oprofile/Kconfig"
+diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
+index 3a0f89d..8158f36 100644
+--- a/arch/mips/Kconfig
++++ b/arch/mips/Kconfig
+@@ -1814,6 +1814,8 @@ source "arch/mips/oprofile/Kconfig"
  
  source "arch/mips/Kconfig.debug"
  
@@ -597,9 +630,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/linux32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/linux32.c
---- linux-2.6.16-rc5/arch/mips/kernel/linux32.c	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/linux32.c	2006-02-28 15:21:26 +0100
+diff --git a/arch/mips/kernel/linux32.c b/arch/mips/kernel/linux32.c
+index e00e5f6..b98d134 100644
+--- a/arch/mips/kernel/linux32.c
++++ b/arch/mips/kernel/linux32.c
 @@ -37,6 +37,7 @@
  #include <linux/security.h>
  #include <linux/compat.h>
@@ -608,7 +642,7 @@
  
  #include <net/sock.h>
  #include <net/scm.h>
-@@ -1153,7 +1154,7 @@ asmlinkage long sys32_newuname(struct ne
+@@ -1099,7 +1100,7 @@ asmlinkage long sys32_newuname(struct ne
  	int ret = 0;
  
  	down_read(&uts_sem);
@@ -617,9 +651,10 @@
  		ret = -EFAULT;
  	up_read(&uts_sem);
  
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/mips/kernel/ptrace.c	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c
+index f838b36..0d533ef 100644
+--- a/arch/mips/kernel/ptrace.c
++++ b/arch/mips/kernel/ptrace.c
 @@ -476,6 +476,8 @@ asmlinkage void do_syscall_trace(struct 
  		goto out;
  	if (!test_thread_flag(TIF_SYSCALL_TRACE))
@@ -629,9 +664,10 @@
  
  	/* The 0x80 provides a way for the tracing parent to distinguish
  	   between a syscall stop and SIGTRAP delivery */
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/ptrace32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/ptrace32.c
---- linux-2.6.16-rc5/arch/mips/kernel/ptrace32.c	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/ptrace32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c
+index 0d5cf97..b375e8d 100644
+--- a/arch/mips/kernel/ptrace32.c
++++ b/arch/mips/kernel/ptrace32.c
 @@ -24,6 +24,7 @@
  #include <linux/smp_lock.h>
  #include <linux/user.h>
@@ -640,9 +676,10 @@
  
  #include <asm/cpu.h>
  #include <asm/dsp.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/scall32-o32.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall32-o32.S
---- linux-2.6.16-rc5/arch/mips/kernel/scall32-o32.S	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall32-o32.S	2006-02-28 15:21:26 +0100
+diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S
+index 2f2dc54..200b74d 100644
+--- a/arch/mips/kernel/scall32-o32.S
++++ b/arch/mips/kernel/scall32-o32.S
 @@ -607,7 +607,7 @@ einval:	li	v0, -EINVAL
  	sys	sys_mq_timedreceive	5
  	sys	sys_mq_notify		2	/* 4275 */
@@ -652,9 +689,10 @@
  	sys	sys_waitid		5
  	sys	sys_ni_syscall		0	/* available, was setaltroot */
  	sys	sys_add_key		5	/* 4280 */
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/scall64-64.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall64-64.S
---- linux-2.6.16-rc5/arch/mips/kernel/scall64-64.S	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall64-64.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S
+index 98bf25d..da9bb04 100644
+--- a/arch/mips/kernel/scall64-64.S
++++ b/arch/mips/kernel/scall64-64.S
 @@ -433,7 +433,7 @@ sys_call_table:
  	PTR	sys_mq_timedreceive
  	PTR	sys_mq_notify
@@ -664,9 +702,10 @@
  	PTR	sys_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/scall64-n32.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall64-n32.S
---- linux-2.6.16-rc5/arch/mips/kernel/scall64-n32.S	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall64-n32.S	2006-02-28 15:21:26 +0100
+diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S
+index 02c8267..bd8b965 100644
+--- a/arch/mips/kernel/scall64-n32.S
++++ b/arch/mips/kernel/scall64-n32.S
 @@ -359,7 +359,7 @@ EXPORT(sysn32_call_table)
  	PTR	compat_sys_mq_timedreceive
  	PTR	compat_sys_mq_notify
@@ -676,9 +715,10 @@
  	PTR	sysn32_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/scall64-o32.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall64-o32.S
---- linux-2.6.16-rc5/arch/mips/kernel/scall64-o32.S	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/scall64-o32.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
+index 797e0d8..3bc13a4 100644
+--- a/arch/mips/kernel/scall64-o32.S
++++ b/arch/mips/kernel/scall64-o32.S
 @@ -481,7 +481,7 @@ sys_call_table:
  	PTR	compat_sys_mq_timedreceive
  	PTR	compat_sys_mq_notify		/* 4275 */
@@ -688,9 +728,10 @@
  	PTR	sys32_waitid
  	PTR	sys_ni_syscall			/* available, was setaltroot */
  	PTR	sys_add_key			/* 4280 */
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/syscall.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/syscall.c
---- linux-2.6.16-rc5/arch/mips/kernel/syscall.c	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/syscall.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c
+index 1da2eeb..3838796 100644
+--- a/arch/mips/kernel/syscall.c
++++ b/arch/mips/kernel/syscall.c
 @@ -29,6 +29,7 @@
  #include <linux/shm.h>
  #include <linux/compiler.h>
@@ -751,9 +792,10 @@
  		up_write(&uts_sem);
  		return 0;
  	}
-diff -NurpP --minimal linux-2.6.16-rc5/arch/mips/kernel/sysirix.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/sysirix.c
---- linux-2.6.16-rc5/arch/mips/kernel/sysirix.c	2006-02-28 15:02:06 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/mips/kernel/sysirix.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c
+index 0fc3730..338a7a1 100644
+--- a/arch/mips/kernel/sysirix.c
++++ b/arch/mips/kernel/sysirix.c
 @@ -31,6 +31,7 @@
  #include <linux/socket.h>
  #include <linux/security.h>
@@ -762,9 +804,10 @@
  
  #include <asm/ptrace.h>
  #include <asm/page.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/parisc/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/parisc/Kconfig
---- linux-2.6.16-rc5/arch/parisc/Kconfig	2006-02-28 15:02:10 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/parisc/Kconfig	2006-02-18 15:22:49 +0100
+diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
+index eca33cf..5284537 100644
+--- a/arch/parisc/Kconfig
++++ b/arch/parisc/Kconfig
 @@ -213,6 +213,8 @@ source "arch/parisc/oprofile/Kconfig"
  
  source "arch/parisc/Kconfig.debug"
@@ -774,9 +817,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/parisc/kernel/sys_parisc32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/parisc/kernel/sys_parisc32.c
---- linux-2.6.16-rc5/arch/parisc/kernel/sys_parisc32.c	2005-06-22 02:37:56 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/parisc/kernel/sys_parisc32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
+index 6135690..12d9384 100644
+--- a/arch/parisc/kernel/sys_parisc32.c
++++ b/arch/parisc/kernel/sys_parisc32.c
 @@ -657,6 +657,7 @@ asmlinkage int sys32_sysinfo(struct sysi
  
  	do {
@@ -785,9 +829,10 @@
  		val.uptime = jiffies / HZ;
  
  		val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
-diff -NurpP --minimal linux-2.6.16-rc5/arch/parisc/kernel/syscall_table.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/parisc/kernel/syscall_table.S
---- linux-2.6.16-rc5/arch/parisc/kernel/syscall_table.S	2006-02-28 15:02:10 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/parisc/kernel/syscall_table.S	2006-02-18 15:22:49 +0100
+diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
+index 71011ea..4e2d76e 100644
+--- a/arch/parisc/kernel/syscall_table.S
++++ b/arch/parisc/kernel/syscall_table.S
 @@ -368,7 +368,7 @@
  	ENTRY_COMP(mbind)		/* 260 */
  	ENTRY_COMP(get_mempolicy)
@@ -797,9 +842,10 @@
  	ENTRY_SAME(add_key)
  	ENTRY_SAME(request_key)		/* 265 */
  	ENTRY_SAME(keyctl)
-diff -NurpP --minimal linux-2.6.16-rc5/arch/powerpc/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/Kconfig
---- linux-2.6.16-rc5/arch/powerpc/Kconfig	2006-02-28 15:02:10 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/Kconfig	2006-02-28 15:21:26 +0100
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index a834f9e..502a4bc 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
 @@ -974,6 +974,8 @@ endmenu
  
  source "arch/powerpc/Kconfig.debug"
@@ -809,9 +855,10 @@
  source "security/Kconfig"
  
  config KEYS_COMPAT
-diff -NurpP --minimal linux-2.6.16-rc5/arch/powerpc/kernel/process.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/process.c
---- linux-2.6.16-rc5/arch/powerpc/kernel/process.c	2006-02-28 15:02:11 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/process.c	2006-02-28 15:21:26 +0100
+diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
+index c225cf1..edec59b 100644
+--- a/arch/powerpc/kernel/process.c
++++ b/arch/powerpc/kernel/process.c
 @@ -425,8 +425,9 @@ void show_regs(struct pt_regs * regs)
  	trap = TRAP(regs);
  	if (trap == 0x300 || trap == 0x600)
@@ -824,9 +871,10 @@
  
  #ifdef CONFIG_SMP
  	printk(" CPU: %d", smp_processor_id());
-diff -NurpP --minimal linux-2.6.16-rc5/arch/powerpc/kernel/ptrace32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/ptrace32.c
---- linux-2.6.16-rc5/arch/powerpc/kernel/ptrace32.c	2006-02-28 15:02:11 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/ptrace32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/powerpc/kernel/ptrace32.c b/arch/powerpc/kernel/ptrace32.c
+index 826ee3d..94e0076 100644
+--- a/arch/powerpc/kernel/ptrace32.c
++++ b/arch/powerpc/kernel/ptrace32.c
 @@ -28,6 +28,7 @@
  #include <linux/user.h>
  #include <linux/security.h>
@@ -835,9 +883,10 @@
  
  #include <asm/uaccess.h>
  #include <asm/page.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/powerpc/kernel/syscalls.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/syscalls.c
---- linux-2.6.16-rc5/arch/powerpc/kernel/syscalls.c	2006-02-28 15:02:11 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/syscalls.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c
+index ad895c9..7db2919 100644
+--- a/arch/powerpc/kernel/syscalls.c
++++ b/arch/powerpc/kernel/syscalls.c
 @@ -36,6 +36,7 @@
  #include <linux/file.h>
  #include <linux/init.h>
@@ -897,9 +946,10 @@
  	error |= override_machine(name->machine);
  	up_read(&uts_sem);
  
-diff -NurpP --minimal linux-2.6.16-rc5/arch/powerpc/kernel/systbl.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/systbl.S
---- linux-2.6.16-rc5/arch/powerpc/kernel/systbl.S	2006-02-28 15:02:11 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/systbl.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S
+index 1ad55f0..0bf1062 100644
+--- a/arch/powerpc/kernel/systbl.S
++++ b/arch/powerpc/kernel/systbl.S
 @@ -296,7 +296,7 @@ COMPAT_SYS(fstatfs64)
  SYSX(sys_ni_syscall, ppc_fadvise64_64, ppc_fadvise64_64)
  PPC_SYS(rtas)
@@ -909,9 +959,10 @@
  SYSCALL(ni_syscall)
  COMPAT_SYS(mbind)
  COMPAT_SYS(get_mempolicy)
-diff -NurpP --minimal linux-2.6.16-rc5/arch/powerpc/kernel/vdso.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/vdso.c
---- linux-2.6.16-rc5/arch/powerpc/kernel/vdso.c	2006-01-03 17:29:13 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/powerpc/kernel/vdso.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
+index 04f7df3..41ec594 100644
+--- a/arch/powerpc/kernel/vdso.c
++++ b/arch/powerpc/kernel/vdso.c
 @@ -25,6 +25,7 @@
  #include <linux/elf.h>
  #include <linux/security.h>
@@ -929,9 +980,10 @@
  	up_write(&mm->mmap_sem);
  
  	return 0;
-diff -NurpP --minimal linux-2.6.16-rc5/arch/ppc/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/ppc/Kconfig
---- linux-2.6.16-rc5/arch/ppc/Kconfig	2006-02-28 15:02:11 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/ppc/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
+index 11899f0..a598ec3 100644
+--- a/arch/ppc/Kconfig
++++ b/arch/ppc/Kconfig
 @@ -1394,6 +1394,8 @@ source "arch/powerpc/oprofile/Kconfig"
  
  source "arch/ppc/Kconfig.debug"
@@ -941,9 +993,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/s390/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/Kconfig
---- linux-2.6.16-rc5/arch/s390/Kconfig	2006-02-28 15:02:16 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/Kconfig	2006-02-18 15:22:49 +0100
+diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
+index b7ca5bf..13dbfd3 100644
+--- a/arch/s390/Kconfig
++++ b/arch/s390/Kconfig
 @@ -472,6 +472,8 @@ source "arch/s390/oprofile/Kconfig"
  
  source "arch/s390/Kconfig.debug"
@@ -953,9 +1006,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/s390/kernel/process.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/kernel/process.c
---- linux-2.6.16-rc5/arch/s390/kernel/process.c	2006-02-28 15:02:17 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/kernel/process.c	2006-02-18 15:22:49 +0100
+diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
+index da6fbae..476e064 100644
+--- a/arch/s390/kernel/process.c
++++ b/arch/s390/kernel/process.c
 @@ -164,9 +164,9 @@ void show_regs(struct pt_regs *regs)
  	struct task_struct *tsk = current;
  
@@ -969,9 +1023,10 @@
  
  	show_registers(regs);
  	/* Show stack backtrace if pt_regs is from kernel mode */
-diff -NurpP --minimal linux-2.6.16-rc5/arch/s390/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/s390/kernel/ptrace.c	2006-02-28 15:02:17 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c
+index 37dfe33..335754b 100644
+--- a/arch/s390/kernel/ptrace.c
++++ b/arch/s390/kernel/ptrace.c
 @@ -33,6 +33,7 @@
  #include <linux/security.h>
  #include <linux/audit.h>
@@ -994,9 +1049,10 @@
  	put_task_struct(child);
  out:
  	unlock_kernel();
-diff -NurpP --minimal linux-2.6.16-rc5/arch/s390/kernel/syscalls.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/kernel/syscalls.S
---- linux-2.6.16-rc5/arch/s390/kernel/syscalls.S	2006-02-28 15:02:17 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/s390/kernel/syscalls.S	2006-02-18 15:22:49 +0100
+diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S
+index 7c88d85..4280067 100644
+--- a/arch/s390/kernel/syscalls.S
++++ b/arch/s390/kernel/syscalls.S
 @@ -271,7 +271,7 @@ SYSCALL(sys_clock_settime,sys_clock_sett
  SYSCALL(sys_clock_gettime,sys_clock_gettime,sys32_clock_gettime_wrapper)	/* 260 */
  SYSCALL(sys_clock_getres,sys_clock_getres,sys32_clock_getres_wrapper)
@@ -1006,9 +1062,10 @@
  SYSCALL(s390_fadvise64_64,sys_ni_syscall,sys32_fadvise64_64_wrapper)
  SYSCALL(sys_statfs64,sys_statfs64,compat_sys_statfs64_wrapper)
  SYSCALL(sys_fstatfs64,sys_fstatfs64,compat_sys_fstatfs64_wrapper)
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sh/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/sh/Kconfig
---- linux-2.6.16-rc5/arch/sh/Kconfig	2006-02-28 15:02:17 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sh/Kconfig	2006-02-18 15:22:49 +0100
+diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
+index e9b275d..68b398e 100644
+--- a/arch/sh/Kconfig
++++ b/arch/sh/Kconfig
 @@ -633,6 +633,8 @@ source "arch/sh/oprofile/Kconfig"
  
  source "arch/sh/Kconfig.debug"
@@ -1018,9 +1075,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sh/kernel/kgdb_stub.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sh/kernel/kgdb_stub.c
---- linux-2.6.16-rc5/arch/sh/kernel/kgdb_stub.c	2004-08-14 12:54:51 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sh/kernel/kgdb_stub.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sh/kernel/kgdb_stub.c b/arch/sh/kernel/kgdb_stub.c
+index 42638b9..6c0370f 100644
+--- a/arch/sh/kernel/kgdb_stub.c
++++ b/arch/sh/kernel/kgdb_stub.c
 @@ -412,7 +412,7 @@ static struct task_struct *get_thread(in
  	if (pid == PID_MAX) pid = 0;
  
@@ -1030,9 +1088,10 @@
  
  	if (thread)
  		return thread;
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/Kconfig
---- linux-2.6.16-rc5/arch/sparc/Kconfig	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
+index f944b58..60aa2b7 100644
+--- a/arch/sparc/Kconfig
++++ b/arch/sparc/Kconfig
 @@ -284,6 +284,8 @@ source "fs/Kconfig"
  
  source "arch/sparc/Kconfig.debug"
@@ -1042,9 +1101,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/sparc/kernel/ptrace.c	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc/kernel/ptrace.c b/arch/sparc/kernel/ptrace.c
+index 1baf13e..d4dc454 100644
+--- a/arch/sparc/kernel/ptrace.c
++++ b/arch/sparc/kernel/ptrace.c
 @@ -19,6 +19,7 @@
  #include <linux/smp_lock.h>
  #include <linux/security.h>
@@ -1064,9 +1124,10 @@
  
  	if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
  	    || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc/kernel/sys_sparc.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/kernel/sys_sparc.c
---- linux-2.6.16-rc5/arch/sparc/kernel/sys_sparc.c	2005-06-22 02:37:59 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/kernel/sys_sparc.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc/kernel/sys_sparc.c b/arch/sparc/kernel/sys_sparc.c
+index 0cdfc9d..8fa541c 100644
+--- a/arch/sparc/kernel/sys_sparc.c
++++ b/arch/sparc/kernel/sys_sparc.c
 @@ -21,6 +21,7 @@
  #include <linux/utsname.h>
  #include <linux/smp.h>
@@ -1091,9 +1152,10 @@
  		goto done;
  	err = 0;
  done:
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc/kernel/systbls.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/kernel/systbls.S
---- linux-2.6.16-rc5/arch/sparc/kernel/systbls.S	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc/kernel/systbls.S	2006-02-18 15:22:49 +0100
+diff --git a/arch/sparc/kernel/systbls.S b/arch/sparc/kernel/systbls.S
+index 768de64..fab6bfd 100644
+--- a/arch/sparc/kernel/systbls.S
++++ b/arch/sparc/kernel/systbls.S
 @@ -72,7 +72,7 @@ sys_call_table:
  /*250*/	.long sparc_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl
  /*255*/	.long sys_nis_syscall, sys_clock_settime, sys_clock_gettime, sys_clock_getres, sys_clock_nanosleep
@@ -1103,9 +1165,10 @@
  /*270*/	.long sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
  /*275*/	.long sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
  /*280*/	.long sys_ni_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc64/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/Kconfig
---- linux-2.6.16-rc5/arch/sparc64/Kconfig	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/Kconfig	2006-02-28 15:21:26 +0100
+diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
+index 4c0a50a..eb58ca4 100644
+--- a/arch/sparc64/Kconfig
++++ b/arch/sparc64/Kconfig
 @@ -394,6 +394,8 @@ endmenu
  
  source "arch/sparc64/Kconfig.debug"
@@ -1115,9 +1178,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc64/kernel/binfmt_aout32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/binfmt_aout32.c
---- linux-2.6.16-rc5/arch/sparc64/kernel/binfmt_aout32.c	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/binfmt_aout32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc64/kernel/binfmt_aout32.c b/arch/sparc64/kernel/binfmt_aout32.c
+index 202a80c..0a6331c 100644
+--- a/arch/sparc64/kernel/binfmt_aout32.c
++++ b/arch/sparc64/kernel/binfmt_aout32.c
 @@ -27,6 +27,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1126,9 +1190,10 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc64/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/sparc64/kernel/ptrace.c	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c
+index 3f9746f..5a1eb33 100644
+--- a/arch/sparc64/kernel/ptrace.c
++++ b/arch/sparc64/kernel/ptrace.c
 @@ -22,6 +22,7 @@
  #include <linux/seccomp.h>
  #include <linux/audit.h>
@@ -1148,9 +1213,10 @@
  
  	if ((current->personality == PER_SUNOS && request == PTRACE_SUNATTACH)
  	    || (current->personality != PER_SUNOS && request == PTRACE_ATTACH)) {
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc64/kernel/sys_sparc.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/sys_sparc.c
---- linux-2.6.16-rc5/arch/sparc64/kernel/sys_sparc.c	2005-08-29 22:24:56 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/sys_sparc.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c
+index 5f8c822..781027a 100644
+--- a/arch/sparc64/kernel/sys_sparc.c
++++ b/arch/sparc64/kernel/sys_sparc.c
 @@ -25,6 +25,7 @@
  #include <linux/syscalls.h>
  #include <linux/ipc.h>
@@ -1175,9 +1241,10 @@
  		goto done;
  	err = 0;
  done:
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc64/kernel/systbls.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/systbls.S
---- linux-2.6.16-rc5/arch/sparc64/kernel/systbls.S	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/kernel/systbls.S	2006-02-18 15:22:49 +0100
+diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S
+index c3adb7a..294e1a2 100644
+--- a/arch/sparc64/kernel/systbls.S
++++ b/arch/sparc64/kernel/systbls.S
 @@ -73,7 +73,7 @@ sys_call_table32:
  /*250*/	.word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
  	.word sys_ni_syscall, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
@@ -1196,9 +1263,10 @@
  /*270*/	.word sys_io_submit, sys_io_cancel, sys_io_getevents, sys_mq_open, sys_mq_unlink
  	.word sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, sys_mq_getsetattr, sys_waitid
  /*280*/	.word sys_nis_syscall, sys_add_key, sys_request_key, sys_keyctl, sys_openat
-diff -NurpP --minimal linux-2.6.16-rc5/arch/sparc64/solaris/fs.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/solaris/fs.c
---- linux-2.6.16-rc5/arch/sparc64/solaris/fs.c	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/sparc64/solaris/fs.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/sparc64/solaris/fs.c b/arch/sparc64/solaris/fs.c
+index 4885ca6..612477d 100644
+--- a/arch/sparc64/solaris/fs.c
++++ b/arch/sparc64/solaris/fs.c
 @@ -363,7 +363,7 @@ static int report_statvfs(struct vfsmoun
  		int j = strlen (p);
  		
@@ -1217,9 +1285,10 @@
  		if (mnt->mnt_flags & MNT_NOSUID) i |= 2;
  		if (!sysv_valid_dev(inode->i_sb->s_dev))
  			return -EOVERFLOW;
-diff -NurpP --minimal linux-2.6.16-rc5/arch/um/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/Kconfig
---- linux-2.6.16-rc5/arch/um/Kconfig	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/arch/um/Kconfig b/arch/um/Kconfig
+index 5982fe2..bdf4519 100644
+--- a/arch/um/Kconfig
++++ b/arch/um/Kconfig
 @@ -290,6 +290,8 @@ source "drivers/connector/Kconfig"
  
  source "fs/Kconfig"
@@ -1229,9 +1298,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/um/drivers/mconsole_kern.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/drivers/mconsole_kern.c
---- linux-2.6.16-rc5/arch/um/drivers/mconsole_kern.c	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/drivers/mconsole_kern.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/um/drivers/mconsole_kern.c b/arch/um/drivers/mconsole_kern.c
+index 54388d1..6e85bbf 100644
+--- a/arch/um/drivers/mconsole_kern.c
++++ b/arch/um/drivers/mconsole_kern.c
 @@ -21,6 +21,7 @@
  #include "linux/proc_fs.h"
  #include "linux/syscalls.h"
@@ -1240,9 +1310,10 @@
  #include "asm/irq.h"
  #include "asm/uaccess.h"
  #include "user_util.h"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/um/kernel/process_kern.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/kernel/process_kern.c
---- linux-2.6.16-rc5/arch/um/kernel/process_kern.c	2006-02-28 15:02:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/kernel/process_kern.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/um/kernel/process_kern.c b/arch/um/kernel/process_kern.c
+index 3113cab..ea4a9e3 100644
+--- a/arch/um/kernel/process_kern.c
++++ b/arch/um/kernel/process_kern.c
 @@ -23,6 +23,8 @@
  #include "linux/proc_fs.h"
  #include "linux/ptrace.h"
@@ -1252,9 +1323,10 @@
  #include "asm/unistd.h"
  #include "asm/mman.h"
  #include "asm/segment.h"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/um/kernel/syscall_kern.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/kernel/syscall_kern.c
---- linux-2.6.16-rc5/arch/um/kernel/syscall_kern.c	2005-08-29 22:24:56 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/um/kernel/syscall_kern.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/um/kernel/syscall_kern.c b/arch/um/kernel/syscall_kern.c
+index 8e1a350..d144baa 100644
+--- a/arch/um/kernel/syscall_kern.c
++++ b/arch/um/kernel/syscall_kern.c
 @@ -15,6 +15,8 @@
  #include "linux/unistd.h"
  #include "linux/slab.h"
@@ -1307,9 +1379,10 @@
  				__OLD_UTS_LEN);
  	error |= __put_user(0,name->machine+__OLD_UTS_LEN);
  	
-diff -NurpP --minimal linux-2.6.16-rc5/arch/v850/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/v850/Kconfig
---- linux-2.6.16-rc5/arch/v850/Kconfig	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/v850/Kconfig	2006-02-18 15:22:49 +0100
+diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig
+index e7fc3e5..10f31fa 100644
+--- a/arch/v850/Kconfig
++++ b/arch/v850/Kconfig
 @@ -320,6 +320,8 @@ source "drivers/usb/Kconfig"
  
  source "arch/v850/Kconfig.debug"
@@ -1319,9 +1392,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/v850/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/v850/kernel/ptrace.c
---- linux-2.6.16-rc5/arch/v850/kernel/ptrace.c	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/v850/kernel/ptrace.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/v850/kernel/ptrace.c b/arch/v850/kernel/ptrace.c
+index 67e0575..061bd4d 100644
+--- a/arch/v850/kernel/ptrace.c
++++ b/arch/v850/kernel/ptrace.c
 @@ -137,6 +137,8 @@ long arch_ptrace(struct task_struct *chi
  			break;
  		rval = -EIO;
@@ -1331,9 +1405,10 @@
  
  	/* Read/write the word at location ADDR in the registers.  */
  	case PTRACE_PEEKUSR:
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/Kconfig
---- linux-2.6.16-rc5/arch/x86_64/Kconfig	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/Kconfig	2006-02-28 15:21:26 +0100
+diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
+index e18eb79..196fae7 100644
+--- a/arch/x86_64/Kconfig
++++ b/arch/x86_64/Kconfig
 @@ -588,6 +588,8 @@ endmenu
  
  source "arch/x86_64/Kconfig.debug"
@@ -1343,9 +1418,10 @@
  source "security/Kconfig"
  
  source "crypto/Kconfig"
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/ia32/ia32_aout.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ia32_aout.c
---- linux-2.6.16-rc5/arch/x86_64/ia32/ia32_aout.c	2006-01-03 17:29:20 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ia32_aout.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/ia32/ia32_aout.c b/arch/x86_64/ia32/ia32_aout.c
+index 3bf58af..7aac2ca 100644
+--- a/arch/x86_64/ia32/ia32_aout.c
++++ b/arch/x86_64/ia32/ia32_aout.c
 @@ -25,6 +25,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1354,9 +1430,10 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/ia32/ia32_binfmt.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ia32_binfmt.c
---- linux-2.6.16-rc5/arch/x86_64/ia32/ia32_binfmt.c	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ia32_binfmt.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/ia32/ia32_binfmt.c b/arch/x86_64/ia32/ia32_binfmt.c
+index 572b3b2..4cccf13 100644
+--- a/arch/x86_64/ia32/ia32_binfmt.c
++++ b/arch/x86_64/ia32/ia32_binfmt.c
 @@ -371,7 +371,8 @@ int ia32_setup_arg_pages(struct linux_bi
  			kmem_cache_free(vm_area_cachep, mpnt);
  			return ret;
@@ -1367,9 +1444,10 @@
  	} 
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/ia32/ia32entry.S linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ia32entry.S
---- linux-2.6.16-rc5/arch/x86_64/ia32/ia32entry.S	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ia32entry.S	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S
+index 00dee17..f331a49 100644
+--- a/arch/x86_64/ia32/ia32entry.S
++++ b/arch/x86_64/ia32/ia32entry.S
 @@ -650,7 +650,7 @@ ia32_sys_call_table:
  	.quad sys_tgkill		/* 270 */
  	.quad compat_sys_utimes
@@ -1379,9 +1457,10 @@
  	.quad sys_mbind
  	.quad compat_sys_get_mempolicy	/* 275 */
  	.quad sys_set_mempolicy
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/ia32/ptrace32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ptrace32.c
---- linux-2.6.16-rc5/arch/x86_64/ia32/ptrace32.c	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/ptrace32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/ia32/ptrace32.c b/arch/x86_64/ia32/ptrace32.c
+index 23a4515..8945338 100644
+--- a/arch/x86_64/ia32/ptrace32.c
++++ b/arch/x86_64/ia32/ptrace32.c
 @@ -18,6 +18,7 @@
  #include <linux/unistd.h>
  #include <linux/mm.h>
@@ -1390,9 +1469,10 @@
  #include <asm/ptrace.h>
  #include <asm/compat.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/ia32/sys_ia32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/sys_ia32.c
---- linux-2.6.16-rc5/arch/x86_64/ia32/sys_ia32.c	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/sys_ia32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/ia32/sys_ia32.c b/arch/x86_64/ia32/sys_ia32.c
+index 2bc55af..f3d4615 100644
+--- a/arch/x86_64/ia32/sys_ia32.c
++++ b/arch/x86_64/ia32/sys_ia32.c
 @@ -62,6 +62,7 @@
  #include <linux/highuid.h>
  #include <linux/vmalloc.h>
@@ -1437,9 +1517,10 @@
  	up_read(&uts_sem);
  	if (personality(current->personality) == PER_LINUX32) 
  		err |= copy_to_user(&name->machine, "i686", 5);
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/ia32/syscall32.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/syscall32.c
---- linux-2.6.16-rc5/arch/x86_64/ia32/syscall32.c	2005-10-28 20:49:18 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/ia32/syscall32.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/ia32/syscall32.c b/arch/x86_64/ia32/syscall32.c
+index 3a01329..cba1692 100644
+--- a/arch/x86_64/ia32/syscall32.c
++++ b/arch/x86_64/ia32/syscall32.c
 @@ -10,6 +10,7 @@
  #include <linux/init.h>
  #include <linux/stringify.h>
@@ -1457,9 +1538,10 @@
  	up_write(&mm->mmap_sem);
  	return 0;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/kernel/sys_x86_64.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/kernel/sys_x86_64.c
---- linux-2.6.16-rc5/arch/x86_64/kernel/sys_x86_64.c	2006-01-03 17:29:20 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/kernel/sys_x86_64.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/kernel/sys_x86_64.c b/arch/x86_64/kernel/sys_x86_64.c
+index 6449ea8..142fbf7 100644
+--- a/arch/x86_64/kernel/sys_x86_64.c
++++ b/arch/x86_64/kernel/sys_x86_64.c
 @@ -16,6 +16,7 @@
  #include <linux/file.h>
  #include <linux/utsname.h>
@@ -1477,9 +1559,10 @@
  	up_read(&uts_sem);
  	if (personality(current->personality) == PER_LINUX32) 
  		err |= copy_to_user(&name->machine, "i686", 5); 		
-diff -NurpP --minimal linux-2.6.16-rc5/arch/x86_64/kernel/traps.c linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/kernel/traps.c
---- linux-2.6.16-rc5/arch/x86_64/kernel/traps.c	2006-02-28 15:02:19 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/arch/x86_64/kernel/traps.c	2006-02-17 22:18:50 +0100
+diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
+index 28d50dc..906be26 100644
+--- a/arch/x86_64/kernel/traps.c
++++ b/arch/x86_64/kernel/traps.c
 @@ -321,8 +321,9 @@ void show_registers(struct pt_regs *regs
  
  	printk("CPU %d ", cpu);
@@ -1492,9 +1575,10 @@
  
  	/*
  	 * When in-kernel, we also print out the stack and code at the
-diff -NurpP --minimal linux-2.6.16-rc5/drivers/block/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/drivers/block/Kconfig
---- linux-2.6.16-rc5/drivers/block/Kconfig	2006-02-28 15:02:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/drivers/block/Kconfig	2006-02-17 22:18:50 +0100
+diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
+index 8b13316..3e1f17f 100644
+--- a/drivers/block/Kconfig
++++ b/drivers/block/Kconfig
 @@ -315,6 +315,13 @@ config BLK_DEV_CRYPTOLOOP
  	  instead, which can be configured to be on-disk compatible with the
  	  cryptoloop device.
@@ -1509,18 +1593,21 @@
  config BLK_DEV_NBD
  	tristate "Network block device support"
  	depends on NET
-diff -NurpP --minimal linux-2.6.16-rc5/drivers/block/Makefile linux-2.6.16-rc5-vs2.0.2-rc10/drivers/block/Makefile
---- linux-2.6.16-rc5/drivers/block/Makefile	2006-01-03 17:29:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/drivers/block/Makefile	2006-02-17 22:18:50 +0100
+diff --git a/drivers/block/Makefile b/drivers/block/Makefile
+index 3ec1f8d..00f2e4e 100644
+--- a/drivers/block/Makefile
++++ b/drivers/block/Makefile
 @@ -30,4 +30,5 @@ obj-$(CONFIG_BLK_DEV_CRYPTOLOOP) += cryp
  obj-$(CONFIG_VIODASD)		+= viodasd.o
  obj-$(CONFIG_BLK_DEV_SX8)	+= sx8.o
  obj-$(CONFIG_BLK_DEV_UB)	+= ub.o
 +obj-$(CONFIG_BLK_DEV_VROOT)	+= vroot.o
  
-diff -NurpP --minimal linux-2.6.16-rc5/drivers/block/vroot.c linux-2.6.16-rc5-vs2.0.2-rc10/drivers/block/vroot.c
---- linux-2.6.16-rc5/drivers/block/vroot.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/drivers/block/vroot.c	2006-02-17 22:18:50 +0100
+diff --git a/drivers/block/vroot.c b/drivers/block/vroot.c
+new file mode 100644
+index 0000000..ac4441c
+--- /dev/null
++++ b/drivers/block/vroot.c
 @@ -0,0 +1,289 @@
 +/*
 + *  linux/drivers/block/vroot.c
@@ -1811,9 +1898,10 @@
 +
 +#endif
 +
-diff -NurpP --minimal linux-2.6.16-rc5/drivers/char/random.c linux-2.6.16-rc5-vs2.0.2-rc10/drivers/char/random.c
---- linux-2.6.16-rc5/drivers/char/random.c	2006-02-28 15:02:29 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/drivers/char/random.c	2006-02-17 22:18:50 +0100
+diff --git a/drivers/char/random.c b/drivers/char/random.c
+index 86be04b..05c343f 100644
+--- a/drivers/char/random.c
++++ b/drivers/char/random.c
 @@ -1174,7 +1174,7 @@ static char sysctl_bootid[16];
  static int proc_do_uuid(ctl_table *table, int write, struct file *filp,
  			void __user *buffer, size_t *lenp, loff_t *ppos)
@@ -1823,9 +1911,10 @@
  	unsigned char buf[64], tmp_uuid[16], *uuid;
  
  	uuid = table->data;
-diff -NurpP --minimal linux-2.6.16-rc5/drivers/char/tty_io.c linux-2.6.16-rc5-vs2.0.2-rc10/drivers/char/tty_io.c
---- linux-2.6.16-rc5/drivers/char/tty_io.c	2006-02-28 15:02:32 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/drivers/char/tty_io.c	2006-02-18 15:22:49 +0100
+diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
+index 53d3d06..7f47d83 100644
+--- a/drivers/char/tty_io.c
++++ b/drivers/char/tty_io.c
 @@ -103,6 +103,7 @@
  #include <linux/vt_kern.h>
  #include <linux/selection.h>
@@ -1861,9 +1950,10 @@
  	if (pgrp < 0)
  		return -EINVAL;
  	if (session_of_pgrp(pgrp) != current->signal->session)
-diff -NurpP --minimal linux-2.6.16-rc5/drivers/infiniband/core/uverbs_mem.c linux-2.6.16-rc5-vs2.0.2-rc10/drivers/infiniband/core/uverbs_mem.c
---- linux-2.6.16-rc5/drivers/infiniband/core/uverbs_mem.c	2005-10-28 20:49:23 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/drivers/infiniband/core/uverbs_mem.c	2006-02-17 22:18:50 +0100
+diff --git a/drivers/infiniband/core/uverbs_mem.c b/drivers/infiniband/core/uverbs_mem.c
+index 36a32c3..a945edd 100644
+--- a/drivers/infiniband/core/uverbs_mem.c
++++ b/drivers/infiniband/core/uverbs_mem.c
 @@ -36,6 +36,7 @@
  
  #include <linux/mm.h>
@@ -1901,9 +1991,10 @@
  	up_write(&work->mm->mmap_sem);
  	mmput(work->mm);
  	kfree(work);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/attr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/attr.c
---- linux-2.6.16-rc5/fs/attr.c	2006-02-28 15:03:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/attr.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/attr.c b/fs/attr.c
+index 97de946..bb1c58c 100644
+--- a/fs/attr.c
++++ b/fs/attr.c
 @@ -15,6 +15,9 @@
  #include <linux/fcntl.h>
  #include <linux/quotaops.h>
@@ -1962,9 +2053,10 @@
  				error = DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0;
  			if (!error)
  				error = inode_setattr(inode, attr);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/binfmt_aout.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_aout.c
---- linux-2.6.16-rc5/fs/binfmt_aout.c	2006-02-28 15:03:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_aout.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
+index f312103..0cfa5a6 100644
+--- a/fs/binfmt_aout.c
++++ b/fs/binfmt_aout.c
 @@ -24,6 +24,7 @@
  #include <linux/binfmts.h>
  #include <linux/personality.h>
@@ -1973,9 +2065,10 @@
  
  #include <asm/system.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-2.6.16-rc5/fs/binfmt_elf.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_elf.c
---- linux-2.6.16-rc5/fs/binfmt_elf.c	2006-02-28 15:03:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_elf.c	2006-02-28 15:21:26 +0100
+diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
+index c2eac2a..814b570 100644
+--- a/fs/binfmt_elf.c
++++ b/fs/binfmt_elf.c
 @@ -38,6 +38,7 @@
  #include <linux/security.h>
  #include <linux/syscalls.h>
@@ -1984,9 +2077,10 @@
  
  #include <asm/uaccess.h>
  #include <asm/param.h>
-diff -NurpP --minimal linux-2.6.16-rc5/fs/binfmt_flat.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_flat.c
---- linux-2.6.16-rc5/fs/binfmt_flat.c	2006-02-28 15:03:18 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_flat.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
+index 108d56b..5b32e27 100644
+--- a/fs/binfmt_flat.c
++++ b/fs/binfmt_flat.c
 @@ -36,6 +36,7 @@
  #include <linux/personality.h>
  #include <linux/init.h>
@@ -1995,9 +2089,10 @@
  
  #include <asm/byteorder.h>
  #include <asm/system.h>
-diff -NurpP --minimal linux-2.6.16-rc5/fs/binfmt_som.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_som.c
---- linux-2.6.16-rc5/fs/binfmt_som.c	2006-01-03 17:29:55 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/binfmt_som.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/binfmt_som.c b/fs/binfmt_som.c
+index 00a91dc..e1cb594 100644
+--- a/fs/binfmt_som.c
++++ b/fs/binfmt_som.c
 @@ -28,6 +28,7 @@
  #include <linux/shm.h>
  #include <linux/personality.h>
@@ -2006,9 +2101,10 @@
  
  #include <asm/uaccess.h>
  #include <asm/pgtable.h>
-diff -NurpP --minimal linux-2.6.16-rc5/fs/devpts/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/devpts/inode.c
---- linux-2.6.16-rc5/fs/devpts/inode.c	2006-02-28 15:03:20 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/devpts/inode.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
+index bfb8a23..caba0b5 100644
+--- a/fs/devpts/inode.c
++++ b/fs/devpts/inode.c
 @@ -19,7 +19,19 @@
  #include <linux/tty.h>
  #include <linux/devpts_fs.h>
@@ -2075,9 +2171,10 @@
  	inode->u.generic_ip = tty;
  
  	dentry = get_node(number);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/exec.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/exec.c
---- linux-2.6.16-rc5/fs/exec.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/exec.c	2006-02-18 15:22:50 +0100
+diff --git a/fs/exec.c b/fs/exec.c
+index 0b515ac..aa030cb 100644
+--- a/fs/exec.c
++++ b/fs/exec.c
 @@ -49,6 +49,7 @@
  #include <linux/rmap.h>
  #include <linux/acct.h>
@@ -2096,9 +2193,10 @@
  	}
  
  	for (i = 0 ; i < MAX_ARG_PAGES ; i++) {
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/balloc.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/balloc.c
---- linux-2.6.16-rc5/fs/ext2/balloc.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/balloc.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
+index 2c00953..21cee4f 100644
+--- a/fs/ext2/balloc.c
++++ b/fs/ext2/balloc.c
 @@ -17,6 +17,7 @@
  #include <linux/sched.h>
  #include <linux/buffer_head.h>
@@ -2144,9 +2242,10 @@
  	release_blocks(sb, es_alloc);
  out_dquot:
  	DQUOT_FREE_BLOCK(inode, dq_alloc);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/ext2.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/ext2.h
---- linux-2.6.16-rc5/fs/ext2/ext2.h	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/ext2.h	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
+index 00de0a7..3c537fc 100644
+--- a/fs/ext2/ext2.h
++++ b/fs/ext2/ext2.h
 @@ -162,6 +162,7 @@ extern struct file_operations ext2_xip_f
  extern struct address_space_operations ext2_aops;
  extern struct address_space_operations ext2_aops_xip;
@@ -2155,18 +2254,20 @@
  
  /* namei.c */
  extern struct inode_operations ext2_dir_inode_operations;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/file.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/file.c
---- linux-2.6.16-rc5/fs/ext2/file.c	2005-08-29 22:25:30 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/file.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/file.c b/fs/ext2/file.c
+index a484412..addf2c3 100644
+--- a/fs/ext2/file.c
++++ b/fs/ext2/file.c
 @@ -79,4 +79,5 @@ struct inode_operations ext2_file_inode_
  #endif
  	.setattr	= ext2_setattr,
  	.permission	= ext2_permission,
 +	.sync_flags	= ext2_sync_flags,
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/ialloc.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/ialloc.c
---- linux-2.6.16-rc5/fs/ext2/ialloc.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/ialloc.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
+index e527652..11e7d7a 100644
+--- a/fs/ext2/ialloc.c
++++ b/fs/ext2/ialloc.c
 @@ -18,6 +18,8 @@
  #include <linux/backing-dev.h>
  #include <linux/buffer_head.h>
@@ -2222,9 +2323,10 @@
  	make_bad_inode(inode);
  	iput(inode);
  	return ERR_PTR(err);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/inode.c
---- linux-2.6.16-rc5/fs/ext2/inode.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/inode.c	2006-02-22 18:24:11 +0100
+diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
+index a717837..5a08051 100644
+--- a/fs/ext2/inode.c
++++ b/fs/ext2/inode.c
 @@ -31,6 +31,7 @@
  #include <linux/writeback.h>
  #include <linux/buffer_head.h>
@@ -2365,9 +2467,10 @@
  	error = inode_setattr(inode, iattr);
  	if (!error && (iattr->ia_valid & ATTR_MODE))
  		error = ext2_acl_chmod(inode);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/ioctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/ioctl.c
---- linux-2.6.16-rc5/fs/ext2/ioctl.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/ioctl.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c
+index 3ca9afd..6ef1d95 100644
+--- a/fs/ext2/ioctl.c
++++ b/fs/ext2/ioctl.c
 @@ -11,6 +11,7 @@
  #include <linux/capability.h>
  #include <linux/time.h>
@@ -2407,9 +2510,10 @@
  			return -EROFS;
  		if (get_user(inode->i_generation, (int __user *) arg))
  			return -EFAULT;	
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/namei.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/namei.c
---- linux-2.6.16-rc5/fs/ext2/namei.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/namei.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/namei.c b/fs/ext2/namei.c
+index ad1432a..30d7141 100644
+--- a/fs/ext2/namei.c
++++ b/fs/ext2/namei.c
 @@ -31,6 +31,7 @@
   */
  
@@ -2440,9 +2544,10 @@
  	.permission	= ext2_permission,
 +	.sync_flags	= ext2_sync_flags,
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/super.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/super.c
---- linux-2.6.16-rc5/fs/ext2/super.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/super.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/super.c b/fs/ext2/super.c
+index cb6f9bd..66c3b1e 100644
+--- a/fs/ext2/super.c
++++ b/fs/ext2/super.c
 @@ -289,7 +289,7 @@ enum {
  	Opt_err_ro, Opt_nouid32, Opt_nocheck, Opt_debug,
  	Opt_oldalloc, Opt_orlov, Opt_nobh, Opt_user_xattr, Opt_nouser_xattr,
@@ -2495,9 +2600,10 @@
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/symlink.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/symlink.c
---- linux-2.6.16-rc5/fs/ext2/symlink.c	2005-08-29 22:25:30 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/symlink.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext2/symlink.c b/fs/ext2/symlink.c
+index 1e67d87..f86ceeb 100644
+--- a/fs/ext2/symlink.c
++++ b/fs/ext2/symlink.c
 @@ -38,6 +38,7 @@ struct inode_operations ext2_symlink_ino
  	.listxattr	= ext2_listxattr,
  	.removexattr	= generic_removexattr,
@@ -2512,9 +2618,10 @@
  #endif
 +	.sync_flags	= ext2_sync_flags,
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext2/xattr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/xattr.c
---- linux-2.6.16-rc5/fs/ext2/xattr.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext2/xattr.c	2006-02-18 15:24:24 +0100
+diff --git a/fs/ext2/xattr.c b/fs/ext2/xattr.c
+index 86ae8e9..24c816a 100644
+--- a/fs/ext2/xattr.c
++++ b/fs/ext2/xattr.c
 @@ -60,6 +60,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -2552,9 +2659,10 @@
  		DQUOT_FREE_BLOCK(inode, 1);
  	}
  	EXT2_I(inode)->i_file_acl = 0;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/balloc.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/balloc.c
---- linux-2.6.16-rc5/fs/ext3/balloc.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/balloc.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c
+index 6250fcd..656cd16 100644
+--- a/fs/ext3/balloc.c
++++ b/fs/ext3/balloc.c
 @@ -20,6 +20,7 @@
  #include <linux/ext3_jbd.h>
  #include <linux/quotaops.h>
@@ -2652,9 +2760,10 @@
  	if (fatal) {
  		*errp = fatal;
  		ext3_std_error(sb, fatal);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/file.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/file.c
---- linux-2.6.16-rc5/fs/ext3/file.c	2005-08-29 22:25:30 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/file.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/file.c b/fs/ext3/file.c
+index 98e7834..9aae45c 100644
+--- a/fs/ext3/file.c
++++ b/fs/ext3/file.c
 @@ -131,5 +131,6 @@ struct inode_operations ext3_file_inode_
  	.removexattr	= generic_removexattr,
  #endif
@@ -2662,9 +2771,10 @@
 +	.sync_flags	= ext3_sync_flags,
  };
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/ialloc.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/ialloc.c
---- linux-2.6.16-rc5/fs/ext3/ialloc.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/ialloc.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
+index dc82646..17c75f5 100644
+--- a/fs/ext3/ialloc.c
++++ b/fs/ext3/ialloc.c
 @@ -23,6 +23,8 @@
  #include <linux/buffer_head.h>
  #include <linux/random.h>
@@ -2722,9 +2832,10 @@
  	inode->i_flags |= S_NOQUOTA;
  	inode->i_nlink = 0;
  	iput(inode);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/inode.c
---- linux-2.6.16-rc5/fs/ext3/inode.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/inode.c	2006-02-22 18:24:11 +0100
+diff --git a/fs/ext3/inode.c b/fs/ext3/inode.c
+index 0384e53..045eaf9 100644
+--- a/fs/ext3/inode.c
++++ b/fs/ext3/inode.c
 @@ -36,6 +36,7 @@
  #include <linux/writeback.h>
  #include <linux/mpage.h>
@@ -2733,7 +2844,7 @@
  #include "xattr.h"
  #include "acl.h"
  
-@@ -2423,19 +2424,77 @@ void ext3_set_inode_flags(struct inode *
+@@ -2422,19 +2423,77 @@ void ext3_set_inode_flags(struct inode *
  {
  	unsigned int flags = EXT3_I(inode)->i_flags;
  
@@ -2814,7 +2925,7 @@
  void ext3_read_inode(struct inode * inode)
  {
  	struct ext3_iloc iloc;
-@@ -2443,6 +2502,8 @@ void ext3_read_inode(struct inode * inod
+@@ -2442,6 +2501,8 @@ void ext3_read_inode(struct inode * inod
  	struct ext3_inode_info *ei = EXT3_I(inode);
  	struct buffer_head *bh;
  	int block;
@@ -2823,7 +2934,7 @@
  
  #ifdef CONFIG_EXT3_FS_POSIX_ACL
  	ei->i_acl = EXT3_ACL_NOT_CACHED;
-@@ -2455,12 +2516,17 @@ void ext3_read_inode(struct inode * inod
+@@ -2454,12 +2515,17 @@ void ext3_read_inode(struct inode * inod
  	bh = iloc.bh;
  	raw_inode = ext3_raw_inode(&iloc);
  	inode->i_mode = le16_to_cpu(raw_inode->i_mode);
@@ -2845,7 +2956,7 @@
  	inode->i_nlink = le16_to_cpu(raw_inode->i_links_count);
  	inode->i_size = le32_to_cpu(raw_inode->i_size);
  	inode->i_atime.tv_sec = le32_to_cpu(raw_inode->i_atime);
-@@ -2587,6 +2653,8 @@ static int ext3_do_update_inode(handle_t
+@@ -2586,6 +2652,8 @@ static int ext3_do_update_inode(handle_t
  	struct ext3_inode *raw_inode = ext3_raw_inode(iloc);
  	struct ext3_inode_info *ei = EXT3_I(inode);
  	struct buffer_head *bh = iloc->bh;
@@ -2854,7 +2965,7 @@
  	int err = 0, rc, block;
  
  	/* For fields not not tracking in the in-memory inode,
-@@ -2596,29 +2664,32 @@ static int ext3_do_update_inode(handle_t
+@@ -2595,29 +2663,32 @@ static int ext3_do_update_inode(handle_t
  
  	raw_inode->i_mode = cpu_to_le16(inode->i_mode);
  	if(!(test_opt(inode->i_sb, NO_UID32))) {
@@ -2893,7 +3004,7 @@
  	raw_inode->i_links_count = cpu_to_le16(inode->i_nlink);
  	raw_inode->i_size = cpu_to_le32(ei->i_disksize);
  	raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);
-@@ -2771,7 +2842,8 @@ int ext3_setattr(struct dentry *dentry, 
+@@ -2770,7 +2841,8 @@ int ext3_setattr(struct dentry *dentry, 
  		return error;
  
  	if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) ||
@@ -2903,7 +3014,7 @@
  		handle_t *handle;
  
  		/* (user+group)*(old+new) structure, inode write (sb,
-@@ -2793,6 +2865,8 @@ int ext3_setattr(struct dentry *dentry, 
+@@ -2792,6 +2864,8 @@ int ext3_setattr(struct dentry *dentry, 
  			inode->i_uid = attr->ia_uid;
  		if (attr->ia_valid & ATTR_GID)
  			inode->i_gid = attr->ia_gid;
@@ -2912,9 +3023,10 @@
  		error = ext3_mark_inode_dirty(handle, inode);
  		ext3_journal_stop(handle);
  	}
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/ioctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/ioctl.c
---- linux-2.6.16-rc5/fs/ext3/ioctl.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/ioctl.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/ioctl.c b/fs/ext3/ioctl.c
+index 556cd55..6ed8a19 100644
+--- a/fs/ext3/ioctl.c
++++ b/fs/ext3/ioctl.c
 @@ -8,11 +8,13 @@
   */
  
@@ -3029,9 +3141,10 @@
  
  	default:
  		return -ENOTTY;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/namei.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/namei.c
---- linux-2.6.16-rc5/fs/ext3/namei.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/namei.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/namei.c b/fs/ext3/namei.c
+index b8f5cd1..329eae3 100644
+--- a/fs/ext3/namei.c
++++ b/fs/ext3/namei.c
 @@ -36,6 +36,7 @@
  #include <linux/quotaops.h>
  #include <linux/buffer_head.h>
@@ -3048,7 +3161,7 @@
  	}
  	return d_splice_alias(inode, dentry);
  }
-@@ -2372,6 +2374,7 @@ struct inode_operations ext3_dir_inode_o
+@@ -2373,6 +2375,7 @@ struct inode_operations ext3_dir_inode_o
  	.removexattr	= generic_removexattr,
  #endif
  	.permission	= ext3_permission,
@@ -3056,15 +3169,16 @@
  };
  
  struct inode_operations ext3_special_inode_operations = {
-@@ -2383,4 +2386,5 @@ struct inode_operations ext3_special_ino
+@@ -2384,4 +2387,5 @@ struct inode_operations ext3_special_ino
  	.removexattr	= generic_removexattr,
  #endif
  	.permission	= ext3_permission,
 +	.sync_flags	= ext3_sync_flags,
  }; 
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/super.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/super.c
---- linux-2.6.16-rc5/fs/ext3/super.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/super.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/super.c b/fs/ext3/super.c
+index 56bf765..4337596 100644
+--- a/fs/ext3/super.c
++++ b/fs/ext3/super.c
 @@ -634,7 +634,7 @@ enum {
  	Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
  	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
@@ -3117,9 +3231,10 @@
  
  	sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
  		((sbi->s_mount_opt & EXT3_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/symlink.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/symlink.c
---- linux-2.6.16-rc5/fs/ext3/symlink.c	2005-08-29 22:25:30 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/symlink.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/symlink.c b/fs/ext3/symlink.c
+index 4f79122..d9526d7 100644
+--- a/fs/ext3/symlink.c
++++ b/fs/ext3/symlink.c
 @@ -40,6 +40,7 @@ struct inode_operations ext3_symlink_ino
  	.listxattr	= ext3_listxattr,
  	.removexattr	= generic_removexattr,
@@ -3134,9 +3249,10 @@
  #endif
 +	.sync_flags	= ext3_sync_flags,
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ext3/xattr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/xattr.c
---- linux-2.6.16-rc5/fs/ext3/xattr.c	2006-02-28 15:03:21 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ext3/xattr.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c
+index e8d60bf..fac3f24 100644
+--- a/fs/ext3/xattr.c
++++ b/fs/ext3/xattr.c
 @@ -58,6 +58,7 @@
  #include <linux/mbcache.h>
  #include <linux/quotaops.h>
@@ -3178,9 +3294,10 @@
  	goto cleanup;
  
  bad_block:
-diff -NurpP --minimal linux-2.6.16-rc5/fs/fcntl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/fcntl.c
---- linux-2.6.16-rc5/fs/fcntl.c	2006-02-28 15:03:22 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/fcntl.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/fcntl.c b/fs/fcntl.c
+index dc4a700..84d0e40 100644
+--- a/fs/fcntl.c
++++ b/fs/fcntl.c
 @@ -18,6 +18,7 @@
  #include <linux/ptrace.h>
  #include <linux/signal.h>
@@ -3234,19 +3351,20 @@
  		if (p) {
  			send_sigurg_to_task(p, fown);
  		}
-diff -NurpP --minimal linux-2.6.16-rc5/fs/file_table.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/file_table.c
---- linux-2.6.16-rc5/fs/file_table.c	2006-02-28 15:03:22 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/file_table.c	2006-02-17 22:18:50 +0100
-@@ -19,6 +19,8 @@
- #include <linux/capability.h>
- #include <linux/cdev.h>
+diff --git a/fs/file_table.c b/fs/file_table.c
+index 44fabea..cc11ccb 100644
+--- a/fs/file_table.c
++++ b/fs/file_table.c
+@@ -22,6 +22,8 @@
  #include <linux/fsnotify.h>
+ #include <linux/sysctl.h>
+ #include <linux/percpu_counter.h>
 +#include <linux/vs_limit.h>
 +#include <linux/vs_context.h>
  
- /* sysctl tunables... */
- struct files_stat_struct files_stat = {
-@@ -97,6 +99,8 @@ struct file *get_empty_filp(void)
+ #include <asm/atomic.h>
+ 
+@@ -119,6 +121,8 @@ struct file *get_empty_filp(void)
  	rwlock_init(&f->f_owner.lock);
  	/* f->f_version: 0 */
  	INIT_LIST_HEAD(&f->f_u.fu_list);
@@ -3255,7 +3373,7 @@
  	return f;
  
  over:
-@@ -151,6 +155,8 @@ void fastcall __fput(struct file *file)
+@@ -173,6 +177,8 @@ void fastcall __fput(struct file *file)
  	fops_put(file->f_op);
  	if (file->f_mode & FMODE_WRITE)
  		put_write_access(inode);
@@ -3264,7 +3382,7 @@
  	file_kill(file);
  	file->f_dentry = NULL;
  	file->f_vfsmnt = NULL;
-@@ -216,6 +222,8 @@ void put_filp(struct file *file)
+@@ -238,6 +244,8 @@ void put_filp(struct file *file)
  {
  	if (atomic_dec_and_test(&file->f_count)) {
  		security_file_free(file);
@@ -3273,9 +3391,10 @@
  		file_kill(file);
  		file_free(file);
  	}
-diff -NurpP --minimal linux-2.6.16-rc5/fs/hfsplus/ioctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/hfsplus/ioctl.c
---- linux-2.6.16-rc5/fs/hfsplus/ioctl.c	2006-02-28 15:03:22 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/hfsplus/ioctl.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/hfsplus/ioctl.c b/fs/hfsplus/ioctl.c
+index 13cf848..cccd9fc 100644
+--- a/fs/hfsplus/ioctl.c
++++ b/fs/hfsplus/ioctl.c
 @@ -16,6 +16,7 @@
  #include <linux/fs.h>
  #include <linux/sched.h>
@@ -3294,9 +3413,10 @@
  			return -EROFS;
  
  		if ((current->fsuid != inode->i_uid) && !capable(CAP_FOWNER))
-diff -NurpP --minimal linux-2.6.16-rc5/fs/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/inode.c
---- linux-2.6.16-rc5/fs/inode.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/inode.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/inode.c b/fs/inode.c
+index d0be615..e989f5f 100644
+--- a/fs/inode.c
++++ b/fs/inode.c
 @@ -116,6 +116,9 @@ static struct inode *alloc_inode(struct 
  		struct address_space * const mapping = &inode->i_data;
  
@@ -3316,9 +3436,10 @@
  /**
   * clear_inode - clear an inode
   * @inode: inode to clear
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ioctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ioctl.c
---- linux-2.6.16-rc5/fs/ioctl.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ioctl.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ioctl.c b/fs/ioctl.c
+index f8aeec3..cfcaad7 100644
+--- a/fs/ioctl.c
++++ b/fs/ioctl.c
 @@ -13,10 +13,19 @@
  #include <linux/fs.h>
  #include <linux/security.h>
@@ -3388,9 +3509,10 @@
  		default:
  			if (S_ISREG(filp->f_dentry->d_inode->i_mode))
  				error = file_ioctl(filp, cmd, arg);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/ioprio.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/ioprio.c
---- linux-2.6.16-rc5/fs/ioprio.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/ioprio.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/ioprio.c b/fs/ioprio.c
+index ca77008..5d86209 100644
+--- a/fs/ioprio.c
++++ b/fs/ioprio.c
 @@ -24,6 +24,7 @@
  #include <linux/blkdev.h>
  #include <linux/capability.h>
@@ -3417,9 +3539,10 @@
  
  			if (!user)
  				break;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/acl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/acl.c
---- linux-2.6.16-rc5/fs/jfs/acl.c	2005-10-28 20:49:44 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/acl.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
+index 461e493..5df5582 100644
+--- a/fs/jfs/acl.c
++++ b/fs/jfs/acl.c
 @@ -229,7 +229,8 @@ int jfs_setattr(struct dentry *dentry, s
  		return rc;
  
@@ -3430,9 +3553,10 @@
  		if (DQUOT_TRANSFER(inode, iattr))
  			return -EDQUOT;
  	}
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/inode.c
---- linux-2.6.16-rc5/fs/jfs/inode.c	2005-10-28 20:49:44 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/inode.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/inode.c b/fs/jfs/inode.c
+index 9f942ca..3df7857 100644
+--- a/fs/jfs/inode.c
++++ b/fs/jfs/inode.c
 @@ -22,6 +22,7 @@
  #include <linux/buffer_head.h>
  #include <linux/pagemap.h>
@@ -3449,9 +3573,10 @@
  	}
  
  	clear_inode(inode);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/jfs_dtree.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_dtree.c
---- linux-2.6.16-rc5/fs/jfs/jfs_dtree.c	2005-08-29 22:25:31 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_dtree.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/jfs_dtree.c b/fs/jfs/jfs_dtree.c
+index 404f33e..e567174 100644
+--- a/fs/jfs/jfs_dtree.c
++++ b/fs/jfs/jfs_dtree.c
 @@ -102,6 +102,7 @@
  
  #include <linux/fs.h>
@@ -3571,9 +3696,10 @@
  				/* Free quota allocation */
  				DQUOT_FREE_BLOCK(ip, xlen);
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/jfs_extent.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_extent.c
---- linux-2.6.16-rc5/fs/jfs/jfs_extent.c	2005-08-29 22:25:32 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_extent.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/jfs_extent.c b/fs/jfs/jfs_extent.c
+index 4879603..ecd440e 100644
+--- a/fs/jfs/jfs_extent.c
++++ b/fs/jfs/jfs_extent.c
 @@ -18,6 +18,7 @@
  
  #include <linux/fs.h>
@@ -3634,9 +3760,10 @@
  			DQUOT_FREE_BLOCK(ip, nxlen);
  			goto exit;
  		}
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/jfs_filsys.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_filsys.h
---- linux-2.6.16-rc5/fs/jfs/jfs_filsys.h	2005-10-28 20:49:44 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_filsys.h	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/jfs_filsys.h b/fs/jfs/jfs_filsys.h
+index 72a5588..7f0d552 100644
+--- a/fs/jfs/jfs_filsys.h
++++ b/fs/jfs/jfs_filsys.h
 @@ -84,6 +84,7 @@
  #define JFS_DIR_INDEX		0x00200000	/* Persistant index for */
  						/* directory entries    */
@@ -3645,9 +3772,10 @@
  
  /*
   *	buffer cache configuration
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/jfs_imap.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_imap.c
---- linux-2.6.16-rc5/fs/jfs/jfs_imap.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_imap.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c
+index 31b4aa1..a321fc4 100644
+--- a/fs/jfs/jfs_imap.c
++++ b/fs/jfs/jfs_imap.c
 @@ -45,6 +45,7 @@
  #include <linux/buffer_head.h>
  #include <linux/pagemap.h>
@@ -3703,9 +3831,10 @@
  	/*
  	 * mode2 is only needed for storing the higher order bits.
  	 * Trust i_mode for the lower order ones
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/jfs_inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_inode.c
---- linux-2.6.16-rc5/fs/jfs/jfs_inode.c	2005-08-29 22:25:32 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_inode.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/jfs_inode.c b/fs/jfs/jfs_inode.c
+index 2af5efb..4340659 100644
+--- a/fs/jfs/jfs_inode.c
++++ b/fs/jfs/jfs_inode.c
 @@ -18,6 +18,8 @@
  
  #include <linux/fs.h>
@@ -3733,9 +3862,10 @@
  		DQUOT_DROP(inode);
  		inode->i_flags |= S_NOQUOTA;
  		inode->i_nlink = 0;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/jfs_xtree.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_xtree.c
---- linux-2.6.16-rc5/fs/jfs/jfs_xtree.c	2006-01-03 17:29:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/jfs_xtree.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/jfs_xtree.c b/fs/jfs/jfs_xtree.c
+index e72f4eb..677890c 100644
+--- a/fs/jfs/jfs_xtree.c
++++ b/fs/jfs/jfs_xtree.c
 @@ -21,6 +21,7 @@
  
  #include <linux/fs.h>
@@ -3827,9 +3957,10 @@
  	/* update quota allocation to reflect freed blocks */
  	DQUOT_FREE_BLOCK(ip, nfreed);
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/namei.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/namei.c
---- linux-2.6.16-rc5/fs/jfs/namei.c	2006-01-03 17:29:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/namei.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/namei.c b/fs/jfs/namei.c
+index 4abbe86..a32f2f5 100644
+--- a/fs/jfs/namei.c
++++ b/fs/jfs/namei.c
 @@ -20,6 +20,7 @@
  #include <linux/fs.h>
  #include <linux/ctype.h>
@@ -3846,9 +3977,10 @@
  	dentry = d_splice_alias(ip, dentry);
  
  	if (dentry && (JFS_SBI(dip->i_sb)->mntflag & JFS_OS2))
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/super.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/super.c
---- linux-2.6.16-rc5/fs/jfs/super.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/super.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/super.c b/fs/jfs/super.c
+index 8d31f13..b71f608 100644
+--- a/fs/jfs/super.c
++++ b/fs/jfs/super.c
 @@ -195,7 +195,7 @@ static void jfs_put_super(struct super_b
  enum {
  	Opt_integrity, Opt_nointegrity, Opt_iocharset, Opt_resize,
@@ -3903,9 +4035,10 @@
  
  	if (newLVSize) {
  		printk(KERN_ERR "resize option for remount only\n");
-diff -NurpP --minimal linux-2.6.16-rc5/fs/jfs/xattr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/xattr.c
---- linux-2.6.16-rc5/fs/jfs/xattr.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/jfs/xattr.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c
+index f23048f..cba307d 100644
+--- a/fs/jfs/xattr.c
++++ b/fs/jfs/xattr.c
 @@ -23,6 +23,7 @@
  #include <linux/posix_acl_xattr.h>
  #include <linux/quotaops.h>
@@ -3983,9 +4116,10 @@
  
  	inode->i_ctime = CURRENT_TIME;
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/libfs.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/libfs.c
---- linux-2.6.16-rc5/fs/libfs.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/libfs.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/libfs.c b/fs/libfs.c
+index 71fd08f..30110a2 100644
+--- a/fs/libfs.c
++++ b/fs/libfs.c
 @@ -122,7 +122,8 @@ static inline unsigned char dt_type(stru
   * both impossible due to the lock on directory.
   */
@@ -4032,9 +4166,10 @@
  EXPORT_SYMBOL(generic_read_dir);
  EXPORT_SYMBOL(get_sb_pseudo);
  EXPORT_SYMBOL(simple_commit_write);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/locks.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/locks.c
---- linux-2.6.16-rc5/fs/locks.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/locks.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/locks.c b/fs/locks.c
+index 909eab8..5141c22 100644
+--- a/fs/locks.c
++++ b/fs/locks.c
 @@ -125,6 +125,7 @@
  #include <linux/syscalls.h>
  #include <linux/time.h>
@@ -4212,9 +4347,10 @@
  		lock_get_status(q, fl, ++i, "");
  		move_lock_status(&q, &pos, offset);
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/namei.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/namei.c
---- linux-2.6.16-rc5/fs/namei.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/namei.c	2006-02-28 15:21:26 +0100
+diff --git a/fs/namei.c b/fs/namei.c
+index 8dc2b03..aacff04 100644
+--- a/fs/namei.c
++++ b/fs/namei.c
 @@ -32,6 +32,9 @@
  #include <linux/file.h>
  #include <linux/fcntl.h>
@@ -4533,9 +4669,10 @@
  	new_dentry = lookup_hash(&newnd);
  	error = PTR_ERR(new_dentry);
  	if (IS_ERR(new_dentry))
-diff -NurpP --minimal linux-2.6.16-rc5/fs/namespace.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/namespace.c
---- linux-2.6.16-rc5/fs/namespace.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/namespace.c	2006-02-17 22:22:30 +0100
+diff --git a/fs/namespace.c b/fs/namespace.c
+index 058a448..8668603 100644
+--- a/fs/namespace.c
++++ b/fs/namespace.c
 @@ -23,6 +23,8 @@
  #include <linux/namei.h>
  #include <linux/security.h>
@@ -4628,11 +4765,6 @@
 -	seq_putc(m, ' ');
 -	seq_path(m, mnt, mnt->mnt_root, " \t\n\\");
 -	seq_putc(m, ' ');
--	mangle(m, mnt->mnt_sb->s_type->name);
--	seq_puts(m, mnt->mnt_sb->s_flags & MS_RDONLY ? " ro" : " rw");
--	for (fs_infop = fs_info; fs_infop->flag; fs_infop++) {
--		if (mnt->mnt_sb->s_flags & fs_infop->flag)
--			seq_puts(m, fs_infop->str);
 +	if (vx_flags(VXF_HIDE_MOUNT, 0))
 +		return 0;
 +	if (!mnt_is_reachable(mnt))
@@ -4646,11 +4778,16 @@
 +		seq_putc(m, ' ');
 +		seq_path(m, mnt, mnt->mnt_root, " \t\n\\");
 +		seq_putc(m, ' ');
- 	}
++	}
+ 	mangle(m, mnt->mnt_sb->s_type->name);
+-	seq_puts(m, mnt->mnt_sb->s_flags & MS_RDONLY ? " ro" : " rw");
+-	for (fs_infop = fs_info; fs_infop->flag; fs_infop++) {
+-		if (mnt->mnt_sb->s_flags & fs_infop->flag)
+-			seq_puts(m, fs_infop->str);
+-	}
 -	for (fs_infop = mnt_info; fs_infop->flag; fs_infop++) {
 -		if (mnt->mnt_flags & fs_infop->flag)
 -			seq_puts(m, fs_infop->str);
-+	mangle(m, mnt->mnt_sb->s_type->name);
 +	seq_putc(m, ' ');
 +	for (p = fs_info; (p->s_flag | p->mnt_flag) ; p++) {
 +		if ((s_flags & p->s_flag) || (mnt_flags & p->mnt_flag)) {
@@ -4861,9 +4998,10 @@
  		err = -EPERM;
  		goto out;
  	}
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfs/dir.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/dir.c
---- linux-2.6.16-rc5/fs/nfs/dir.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/dir.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
+index a1554be..07d6baf 100644
+--- a/fs/nfs/dir.c
++++ b/fs/nfs/dir.c
 @@ -28,9 +28,11 @@
  #include <linux/sunrpc/clnt.h>
  #include <linux/nfs_fs.h>
@@ -4894,9 +5032,10 @@
  		return 0;
  	return 1;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfs/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/inode.c
---- linux-2.6.16-rc5/fs/nfs/inode.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/inode.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
+index a77ee95..d2205df 100644
+--- a/fs/nfs/inode.c
++++ b/fs/nfs/inode.c
 @@ -35,6 +35,7 @@
  #include <linux/mount.h>
  #include <linux/nfs_idmap.h>
@@ -5024,9 +5163,10 @@
  
  	if (fattr->valid & (NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4)) {
  		/*
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfs/nfs3xdr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/nfs3xdr.c
---- linux-2.6.16-rc5/fs/nfs/nfs3xdr.c	2006-02-28 15:03:23 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/nfs3xdr.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
+index b6c0b50..d525c30 100644
+--- a/fs/nfs/nfs3xdr.c
++++ b/fs/nfs/nfs3xdr.c
 @@ -22,6 +22,7 @@
  #include <linux/nfs3.h>
  #include <linux/nfs_fs.h>
@@ -5116,9 +5256,10 @@
  	if (args->type == NF3CHR || args->type == NF3BLK) {
  		*p++ = htonl(MAJOR(args->rdev));
  		*p++ = htonl(MINOR(args->rdev));
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfs/nfsroot.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/nfsroot.c
---- linux-2.6.16-rc5/fs/nfs/nfsroot.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfs/nfsroot.c	2006-02-17 22:18:50 +0100
+diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c
+index c0a754e..a12c6a8 100644
+--- a/fs/nfs/nfsroot.c
++++ b/fs/nfs/nfsroot.c
 @@ -87,6 +87,7 @@
  #include <linux/root_dev.h>
  #include <net/ipconfig.h>
@@ -5165,9 +5306,10 @@
  	if (strlen(buf) + strlen(cp) > NFS_MAXPATHLEN) {
  		printk(KERN_ERR "Root-NFS: Pathname for remote directory too long.\n");
  		return -1;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfsd/auth.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/auth.c
---- linux-2.6.16-rc5/fs/nfsd/auth.c	2004-08-14 12:56:14 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/auth.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/nfsd/auth.c b/fs/nfsd/auth.c
+index cfe9ce8..672a9b1 100644
+--- a/fs/nfsd/auth.c
++++ b/fs/nfsd/auth.c
 @@ -9,6 +9,7 @@
  #include <linux/sunrpc/svc.h>
  #include <linux/sunrpc/svcauth.h>
@@ -5200,9 +5342,10 @@
  		cap_t(current->cap_effective) &= ~CAP_NFSD_MASK;
  	} else {
  		cap_t(current->cap_effective) |= (CAP_NFSD_MASK &
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfsd/nfs3xdr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfs3xdr.c
---- linux-2.6.16-rc5/fs/nfsd/nfs3xdr.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfs3xdr.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
+index 243d94b..75491e3 100644
+--- a/fs/nfsd/nfs3xdr.c
++++ b/fs/nfsd/nfs3xdr.c
 @@ -21,6 +21,7 @@
  #include <linux/sunrpc/svc.h>
  #include <linux/nfsd/nfsd.h>
@@ -5251,9 +5394,10 @@
  	if (S_ISLNK(stat->mode) && stat->size > NFS3_MAXPATHLEN) {
  		p = xdr_encode_hyper(p, (u64) NFS3_MAXPATHLEN);
  	} else {
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfsd/nfs4recover.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfs4recover.c
---- linux-2.6.16-rc5/fs/nfsd/nfs4recover.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfs4recover.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c
+index 06da750..a725cd1 100644
+--- a/fs/nfsd/nfs4recover.c
++++ b/fs/nfsd/nfs4recover.c
 @@ -155,7 +155,7 @@ nfsd4_create_clid_dir(struct nfs4_client
  		dprintk("NFSD: nfsd4_create_clid_dir: DIRECTORY EXISTS\n");
  		goto out_put;
@@ -5281,9 +5425,10 @@
  	mutex_unlock(&dir->d_inode->i_mutex);
  	return status;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfsd/nfs4xdr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfs4xdr.c
---- linux-2.6.16-rc5/fs/nfsd/nfs4xdr.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfs4xdr.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
+index 69d3501..753cd9f 100644
+--- a/fs/nfsd/nfs4xdr.c
++++ b/fs/nfsd/nfs4xdr.c
 @@ -57,6 +57,7 @@
  #include <linux/nfsd_idmap.h>
  #include <linux/nfs4.h>
@@ -5313,9 +5458,10 @@
  		if (status == nfserr_resource)
  			goto out_resource;
  		if (status)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfsd/nfsxdr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfsxdr.c
---- linux-2.6.16-rc5/fs/nfsd/nfsxdr.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/nfsxdr.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
+index e3a0797..9671d96 100644
+--- a/fs/nfsd/nfsxdr.c
++++ b/fs/nfsd/nfsxdr.c
 @@ -15,6 +15,7 @@
  #include <linux/nfsd/nfsd.h>
  #include <linux/nfsd/xdr.h>
@@ -5364,9 +5510,10 @@
  
  	if (S_ISLNK(type) && stat->size > NFS_MAXPATHLEN) {
  		*p++ = htonl(NFS_MAXPATHLEN);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/nfsd/vfs.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/vfs.c
---- linux-2.6.16-rc5/fs/nfsd/vfs.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/nfsd/vfs.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
+index 5320e5a..c9a49da 100644
+--- a/fs/nfsd/vfs.c
++++ b/fs/nfsd/vfs.c
 @@ -1160,13 +1160,13 @@ nfsd_create(struct svc_rqst *rqstp, stru
  		err = vfs_create(dirp, dchild, iap->ia_mode, NULL);
  		break;
@@ -5430,9 +5577,10 @@
  				return nfserr_rofs;
  			if (/* (acc & MAY_WRITE) && */ IS_IMMUTABLE(inode))
  				return nfserr_perm;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/open.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/open.c
---- linux-2.6.16-rc5/fs/open.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/open.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/open.c b/fs/open.c
+index 70e0230..a0bf558 100644
+--- a/fs/open.c
++++ b/fs/open.c
 @@ -27,6 +27,9 @@
  #include <linux/pagemap.h>
  #include <linux/syscalls.h>
@@ -5592,9 +5740,10 @@
  }
  
  void fastcall put_unused_fd(unsigned int fd)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/proc/array.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/array.c
---- linux-2.6.16-rc5/fs/proc/array.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/array.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/proc/array.c b/fs/proc/array.c
+index 7eb1bd7..8434cba 100644
+--- a/fs/proc/array.c
++++ b/fs/proc/array.c
 @@ -75,6 +75,9 @@
  #include <linux/times.h>
  #include <linux/cpuset.h>
@@ -5757,9 +5906,10 @@
  		tcomm,
  		state,
  		ppid,
-diff -NurpP --minimal linux-2.6.16-rc5/fs/proc/base.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/base.c
---- linux-2.6.16-rc5/fs/proc/base.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/base.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/proc/base.c b/fs/proc/base.c
+index 20feb75..0f3449e 100644
+--- a/fs/proc/base.c
++++ b/fs/proc/base.c
 @@ -72,6 +72,8 @@
  #include <linux/cpuset.h>
  #include <linux/audit.h>
@@ -6098,9 +6248,10 @@
  		goto out;
  	retval = 0;
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/proc/generic.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/generic.c
---- linux-2.6.16-rc5/fs/proc/generic.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/generic.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/proc/generic.c b/fs/proc/generic.c
+index 20e5c45..38c8540 100644
+--- a/fs/proc/generic.c
++++ b/fs/proc/generic.c
 @@ -19,6 +19,7 @@
  #include <linux/idr.h>
  #include <linux/namei.h>
@@ -6156,9 +6307,10 @@
  		} else {
  			kfree(ent);
  			ent = NULL;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/proc/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/inode.c
---- linux-2.6.16-rc5/fs/proc/inode.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/inode.c	2006-02-28 15:21:26 +0100
+diff --git a/fs/proc/inode.c b/fs/proc/inode.c
+index 075d3e9..6d25888 100644
+--- a/fs/proc/inode.c
++++ b/fs/proc/inode.c
 @@ -170,6 +170,8 @@ struct inode *proc_get_inode(struct supe
  			inode->i_uid = de->uid;
  			inode->i_gid = de->gid;
@@ -6168,9 +6320,10 @@
  		if (de->size)
  			inode->i_size = de->size;
  		if (de->nlink)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/proc/proc_misc.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/proc_misc.c
---- linux-2.6.16-rc5/fs/proc/proc_misc.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/proc_misc.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
+index 1d24fea..d84fdcb 100644
+--- a/fs/proc/proc_misc.c
++++ b/fs/proc/proc_misc.c
 @@ -53,6 +53,8 @@
  #include <asm/div64.h>
  #include "internal.h"
@@ -6249,9 +6402,10 @@
  	return proc_calc_metrics(page, start, off, count, eof, len);
  }
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/proc/root.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/root.c
---- linux-2.6.16-rc5/fs/proc/root.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/proc/root.c	2006-02-28 15:21:26 +0100
+diff --git a/fs/proc/root.c b/fs/proc/root.c
+index c3fd361..307ba7b 100644
+--- a/fs/proc/root.c
++++ b/fs/proc/root.c
 @@ -25,6 +25,9 @@ struct proc_dir_entry *proc_net, *proc_n
  #ifdef CONFIG_SYSCTL
  struct proc_dir_entry *proc_sys_root;
@@ -6270,9 +6424,10 @@
  }
  
  static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
-diff -NurpP --minimal linux-2.6.16-rc5/fs/quota.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/quota.c
---- linux-2.6.16-rc5/fs/quota.c	2006-02-28 15:03:24 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/quota.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/quota.c b/fs/quota.c
+index ba9e0bf..1b690cc 100644
+--- a/fs/quota.c
++++ b/fs/quota.c
 @@ -17,6 +17,9 @@
  #include <linux/buffer_head.h>
  #include <linux/capability.h>
@@ -6378,9 +6533,10 @@
  		sb = get_super(bdev);
  		bdput(bdev);
  		if (!sb)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/read_write.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/read_write.c
---- linux-2.6.16-rc5/fs/read_write.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/read_write.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/read_write.c b/fs/read_write.c
+index 3f7a1a6..fbee209 100644
+--- a/fs/read_write.c
++++ b/fs/read_write.c
 @@ -667,9 +667,8 @@ static ssize_t do_sendfile(int out_fd, i
  		if (!(in_file->f_mode & FMODE_PREAD))
  			goto fput_in;
@@ -6403,9 +6559,10 @@
  
  	retval = security_file_permission (out_file, MAY_WRITE);
  	if (retval)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/bitmap.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/bitmap.c
---- linux-2.6.16-rc5/fs/reiserfs/bitmap.c	2005-08-29 22:25:33 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/bitmap.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/bitmap.c b/fs/reiserfs/bitmap.c
+index 909f71e..49cd1aa 100644
+--- a/fs/reiserfs/bitmap.c
++++ b/fs/reiserfs/bitmap.c
 @@ -13,6 +13,7 @@
  #include <linux/reiserfs_fs_sb.h>
  #include <linux/reiserfs_fs_i.h>
@@ -6502,18 +6659,20 @@
  	}
  
  	return CARRY_ON;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/file.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/file.c
---- linux-2.6.16-rc5/fs/reiserfs/file.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/file.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/file.c b/fs/reiserfs/file.c
+index be12879..db38c09 100644
+--- a/fs/reiserfs/file.c
++++ b/fs/reiserfs/file.c
 @@ -1586,4 +1586,5 @@ struct inode_operations reiserfs_file_in
  	.listxattr = reiserfs_listxattr,
  	.removexattr = reiserfs_removexattr,
  	.permission = reiserfs_permission,
 +	.sync_flags = reiserfs_sync_flags,
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/inode.c
---- linux-2.6.16-rc5/fs/reiserfs/inode.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/inode.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
+index d60f623..a218e53 100644
+--- a/fs/reiserfs/inode.c
++++ b/fs/reiserfs/inode.c
 @@ -17,6 +17,8 @@
  #include <linux/mpage.h>
  #include <linux/writeback.h>
@@ -6531,7 +6690,7 @@
  
  		if (journal_end(&th, inode->i_sb, jbegin_count)) {
  			mutex_unlock(&inode->i_mutex);
-@@ -1130,6 +1133,8 @@ static void init_inode(struct inode *ino
+@@ -1126,6 +1129,8 @@ static void init_inode(struct inode *ino
  	struct buffer_head *bh;
  	struct item_head *ih;
  	__u32 rdev;
@@ -6540,7 +6699,7 @@
  	//int version = ITEM_VERSION_1;
  
  	bh = PATH_PLAST_BUFFER(path);
-@@ -1153,12 +1158,13 @@ static void init_inode(struct inode *ino
+@@ -1149,12 +1154,13 @@ static void init_inode(struct inode *ino
  		    (struct stat_data_v1 *)B_I_PITEM(bh, ih);
  		unsigned long blocks;
  
@@ -6556,7 +6715,7 @@
  		inode->i_size = sd_v1_size(sd);
  		inode->i_atime.tv_sec = sd_v1_atime(sd);
  		inode->i_mtime.tv_sec = sd_v1_mtime(sd);
-@@ -1200,11 +1206,12 @@ static void init_inode(struct inode *ino
+@@ -1196,11 +1202,12 @@ static void init_inode(struct inode *ino
  		// (directories and symlinks)
  		struct stat_data *sd = (struct stat_data *)B_I_PITEM(bh, ih);
  
@@ -6571,7 +6730,7 @@
  		inode->i_mtime.tv_sec = sd_v2_mtime(sd);
  		inode->i_atime.tv_sec = sd_v2_atime(sd);
  		inode->i_ctime.tv_sec = sd_v2_ctime(sd);
-@@ -1234,6 +1241,10 @@ static void init_inode(struct inode *ino
+@@ -1230,6 +1237,10 @@ static void init_inode(struct inode *ino
  		sd_attrs_to_i_attrs(sd_v2_attrs(sd), inode);
  	}
  
@@ -6582,7 +6741,7 @@
  	pathrelse(path);
  	if (S_ISREG(inode->i_mode)) {
  		inode->i_op = &reiserfs_file_inode_operations;
-@@ -1256,13 +1267,15 @@ static void init_inode(struct inode *ino
+@@ -1252,13 +1263,15 @@ static void init_inode(struct inode *ino
  static void inode2sd(void *sd, struct inode *inode, loff_t size)
  {
  	struct stat_data *sd_v2 = (struct stat_data *)sd;
@@ -6600,7 +6759,7 @@
  	set_sd_v2_mtime(sd_v2, inode->i_mtime.tv_sec);
  	set_sd_v2_atime(sd_v2, inode->i_atime.tv_sec);
  	set_sd_v2_ctime(sd_v2, inode->i_ctime.tv_sec);
-@@ -1793,6 +1806,10 @@ int reiserfs_new_inode(struct reiserfs_t
+@@ -1789,6 +1802,10 @@ int reiserfs_new_inode(struct reiserfs_t
  
  	BUG_ON(!th->t_trans_id);
  
@@ -6611,7 +6770,7 @@
  	if (DQUOT_ALLOC_INODE(inode)) {
  		err = -EDQUOT;
  		goto out_end_trans;
-@@ -1978,6 +1995,9 @@ int reiserfs_new_inode(struct reiserfs_t
+@@ -1974,6 +1991,9 @@ int reiserfs_new_inode(struct reiserfs_t
  	DQUOT_FREE_INODE(inode);
  
        out_end_trans:
@@ -6621,7 +6780,7 @@
  	journal_end(th, th->t_super, th->t_blocks_allocated);
  	/* Drop can be outside and it needs more credits so it's better to have it outside */
  	DQUOT_DROP(inode);
-@@ -2705,6 +2725,14 @@ void sd_attrs_to_i_attrs(__u16 sd_attrs,
+@@ -2701,6 +2721,14 @@ void sd_attrs_to_i_attrs(__u16 sd_attrs,
  			inode->i_flags |= S_IMMUTABLE;
  		else
  			inode->i_flags &= ~S_IMMUTABLE;
@@ -6636,7 +6795,7 @@
  		if (sd_attrs & REISERFS_APPEND_FL)
  			inode->i_flags |= S_APPEND;
  		else
-@@ -2727,6 +2755,14 @@ void i_attrs_to_sd_attrs(struct inode *i
+@@ -2723,6 +2751,14 @@ void i_attrs_to_sd_attrs(struct inode *i
  			*sd_attrs |= REISERFS_IMMUTABLE_FL;
  		else
  			*sd_attrs &= ~REISERFS_IMMUTABLE_FL;
@@ -6651,7 +6810,7 @@
  		if (inode->i_flags & S_SYNC)
  			*sd_attrs |= REISERFS_SYNC_FL;
  		else
-@@ -2904,6 +2940,22 @@ static ssize_t reiserfs_direct_IO(int rw
+@@ -2900,6 +2936,22 @@ static ssize_t reiserfs_direct_IO(int rw
  				  reiserfs_get_blocks_direct_io, NULL);
  }
  
@@ -6674,7 +6833,7 @@
  int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
  {
  	struct inode *inode = dentry->d_inode;
-@@ -2948,9 +3000,11 @@ int reiserfs_setattr(struct dentry *dent
+@@ -2944,9 +2996,11 @@ int reiserfs_setattr(struct dentry *dent
  	}
  
  	error = inode_change_ok(inode, attr);
@@ -6687,7 +6846,7 @@
  			error = reiserfs_chown_xattrs(inode, attr);
  
  			if (!error) {
-@@ -2980,6 +3034,9 @@ int reiserfs_setattr(struct dentry *dent
+@@ -2976,6 +3030,9 @@ int reiserfs_setattr(struct dentry *dent
  					inode->i_uid = attr->ia_uid;
  				if (attr->ia_valid & ATTR_GID)
  					inode->i_gid = attr->ia_gid;
@@ -6697,9 +6856,10 @@
  				mark_inode_dirty(inode);
  				error =
  				    journal_end(&th, inode->i_sb, jbegin_count);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/ioctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/ioctl.c
---- linux-2.6.16-rc5/fs/reiserfs/ioctl.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/ioctl.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/ioctl.c b/fs/reiserfs/ioctl.c
+index 745c881..e2dbca0 100644
+--- a/fs/reiserfs/ioctl.c
++++ b/fs/reiserfs/ioctl.c
 @@ -4,6 +4,7 @@
  
  #include <linux/capability.h>
@@ -6770,9 +6930,10 @@
  			return -EROFS;
  		if (get_user(inode->i_generation, (int __user *)arg))
  			return -EFAULT;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/namei.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/namei.c
---- linux-2.6.16-rc5/fs/reiserfs/namei.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/namei.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/namei.c b/fs/reiserfs/namei.c
+index 284f785..6faa29e 100644
+--- a/fs/reiserfs/namei.c
++++ b/fs/reiserfs/namei.c
 @@ -19,6 +19,7 @@
  #include <linux/reiserfs_xattr.h>
  #include <linux/smp_lock.h>
@@ -6820,9 +6981,10 @@
 +	.sync_flags = reiserfs_sync_flags,
  
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/stree.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/stree.c
---- linux-2.6.16-rc5/fs/reiserfs/stree.c	2005-08-29 22:25:33 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/stree.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/stree.c b/fs/reiserfs/stree.c
+index e2d08d7..83ea55e 100644
+--- a/fs/reiserfs/stree.c
++++ b/fs/reiserfs/stree.c
 @@ -57,6 +57,7 @@
  #include <linux/smp_lock.h>
  #include <linux/buffer_head.h>
@@ -6898,9 +7060,10 @@
 +	}
  	return retval;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/super.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/super.c
---- linux-2.6.16-rc5/fs/reiserfs/super.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/super.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
+index d63da75..92a4bfd 100644
+--- a/fs/reiserfs/super.c
++++ b/fs/reiserfs/super.c
 @@ -882,6 +882,9 @@ static int reiserfs_parse_options(struct
  		{"user_xattr",.setmask = 1 << REISERFS_UNSUPPORTED_OPT},
  		{"nouser_xattr",.clrmask = 1 << REISERFS_UNSUPPORTED_OPT},
@@ -6935,9 +7098,10 @@
  	rs = SB_DISK_SUPER_BLOCK(s);
  	/* Let's do basic sanity check to verify that underlying device is not
  	   smaller than the filesystem. If the check fails then abort and scream,
-diff -NurpP --minimal linux-2.6.16-rc5/fs/reiserfs/xattr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/xattr.c
---- linux-2.6.16-rc5/fs/reiserfs/xattr.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/reiserfs/xattr.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c
+index ffb79c4..b99819a 100644
+--- a/fs/reiserfs/xattr.c
++++ b/fs/reiserfs/xattr.c
 @@ -35,6 +35,7 @@
  #include <linux/namei.h>
  #include <linux/errno.h>
@@ -6955,9 +7119,10 @@
  		reiserfs_write_unlock_xattrs(inode->i_sb);
  		dput(root);
  	} else {
-diff -NurpP --minimal linux-2.6.16-rc5/fs/stat.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/stat.c
---- linux-2.6.16-rc5/fs/stat.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/stat.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/stat.c b/fs/stat.c
+index 9948cc1..543f1b8 100644
+--- a/fs/stat.c
++++ b/fs/stat.c
 @@ -27,6 +27,7 @@ void generic_fillattr(struct inode *inod
  	stat->nlink = inode->i_nlink;
  	stat->uid = inode->i_uid;
@@ -6966,9 +7131,10 @@
  	stat->rdev = inode->i_rdev;
  	stat->atime = inode->i_atime;
  	stat->mtime = inode->i_mtime;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/super.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/super.c
---- linux-2.6.16-rc5/fs/super.c	2006-02-28 15:03:25 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/super.c	2006-02-28 15:21:26 +0100
+diff --git a/fs/super.c b/fs/super.c
+index e20b558..df4551c 100644
+--- a/fs/super.c
++++ b/fs/super.c
 @@ -37,6 +37,8 @@
  #include <linux/writeback.h>		/* for the emergency remount stuff */
  #include <linux/idr.h>
@@ -7014,9 +7180,10 @@
   	error = security_sb_kern_mount(sb, secdata);
   	if (error)
   		goto out_sb;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/sysfs/mount.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/sysfs/mount.c
---- linux-2.6.16-rc5/fs/sysfs/mount.c	2005-08-29 22:25:33 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/sysfs/mount.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c
+index f1117e8..ea01b08 100644
+--- a/fs/sysfs/mount.c
++++ b/fs/sysfs/mount.c
 @@ -11,8 +11,6 @@
  
  #include "sysfs.h"
@@ -7035,9 +7202,10 @@
  	sb->s_op = &sysfs_ops;
  	sb->s_time_gran = 1;
  	sysfs_sb = sb;
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xattr.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xattr.c
---- linux-2.6.16-rc5/fs/xattr.c	2006-02-28 15:03:27 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xattr.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xattr.c b/fs/xattr.c
+index 80eca7d..ad83a51 100644
+--- a/fs/xattr.c
++++ b/fs/xattr.c
 @@ -17,6 +17,7 @@
  #include <linux/syscalls.h>
  #include <linux/module.h>
@@ -7138,9 +7306,10 @@
  	fput(f);
  	return error;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_ioctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_ioctl.c
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_ioctl.c	2006-02-28 15:03:27 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_ioctl.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c
+index 4db4779..bff7f6d 100644
+--- a/fs/xfs/linux-2.6/xfs_ioctl.c
++++ b/fs/xfs/linux-2.6/xfs_ioctl.c
 @@ -1100,6 +1100,8 @@ xfs_ioc_fsgeometry(
  #define LINUX_XFLAG_APPEND	0x00000020 /* writes to file may only append */
  #define LINUX_XFLAG_NODUMP	0x00000040 /* do not dump file */
@@ -7161,9 +7330,10 @@
  	if (di_flags & XFS_DIFLAG_APPEND)
  		flags |= LINUX_XFLAG_APPEND;
  	if (di_flags & XFS_DIFLAG_SYNC)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_iops.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_iops.c
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_iops.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_iops.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c
+index d7f6f2d..40fdc3e 100644
+--- a/fs/xfs/linux-2.6/xfs_iops.c
++++ b/fs/xfs/linux-2.6/xfs_iops.c
 @@ -55,6 +55,7 @@
  #include <linux/xattr.h>
  #include <linux/namei.h>
@@ -7266,9 +7436,10 @@
  	.removexattr		= linvfs_removexattr,
 +	.sync_flags		= linvfs_sync_flags,
  };
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_linux.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_linux.h
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_linux.h	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_linux.h	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
+index 67389b7..b554e6f 100644
+--- a/fs/xfs/linux-2.6/xfs_linux.h
++++ b/fs/xfs/linux-2.6/xfs_linux.h
 @@ -133,6 +133,7 @@ BUFFER_FNS(PrivateStart, unwritten);
  #define current_pid()		(current->pid)
  #define current_fsuid(cred)	(current->fsuid)
@@ -7277,9 +7448,10 @@
  
  #define NBPP		PAGE_SIZE
  #define DPPSHFT		(PAGE_SHIFT - 9)
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_super.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_super.c
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_super.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_super.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
+index f22e426..92d8ba6 100644
+--- a/fs/xfs/linux-2.6/xfs_super.c
++++ b/fs/xfs/linux-2.6/xfs_super.c
 @@ -161,6 +161,7 @@ xfs_revalidate_inode(
  	inode->i_nlink	= ip->i_d.di_nlink;
  	inode->i_uid	= ip->i_d.di_uid;
@@ -7316,9 +7488,10 @@
  	if (!error)
  		VFS_MNTUPDATE(vfsp, flags, args, error);
  	kmem_free(args, sizeof(*args));
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_sysctl.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_sysctl.c
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_sysctl.c	2006-01-03 17:29:59 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_sysctl.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_sysctl.c b/fs/xfs/linux-2.6/xfs_sysctl.c
+index a025649..6c39207 100644
+--- a/fs/xfs/linux-2.6/xfs_sysctl.c
++++ b/fs/xfs/linux-2.6/xfs_sysctl.c
 @@ -58,74 +58,74 @@ xfs_stats_clear_proc_handler(
  STATIC ctl_table xfs_table[] = {
  	{XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val,
@@ -7408,9 +7581,10 @@
  	&xfs_params.stats_clear.min, &xfs_params.stats_clear.max},
  #endif /* CONFIG_PROC_FS */
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_vnode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_vnode.c
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_vnode.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_vnode.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_vnode.c b/fs/xfs/linux-2.6/xfs_vnode.c
+index 260dd84..d973914 100644
+--- a/fs/xfs/linux-2.6/xfs_vnode.c
++++ b/fs/xfs/linux-2.6/xfs_vnode.c
 @@ -103,6 +103,7 @@ vn_revalidate_core(
  	inode->i_nlink	    = vap->va_nlink;
  	inode->i_uid	    = vap->va_uid;
@@ -7434,9 +7608,10 @@
  	if (vap->va_xflags & XFS_XFLAG_APPEND)
  		inode->i_flags |= S_APPEND;
  	else
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_vnode.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_vnode.h
---- linux-2.6.16-rc5/fs/xfs/linux-2.6/xfs_vnode.h	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/linux-2.6/xfs_vnode.h	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/linux-2.6/xfs_vnode.h b/fs/xfs/linux-2.6/xfs_vnode.h
+index 0fe2419..696c62a 100644
+--- a/fs/xfs/linux-2.6/xfs_vnode.h
++++ b/fs/xfs/linux-2.6/xfs_vnode.h
 @@ -386,6 +386,7 @@ typedef struct vattr {
  	xfs_nlink_t	va_nlink;	/* number of references to file */
  	uid_t		va_uid;		/* owner user id */
@@ -7462,9 +7637,50 @@
  
  #define XFS_AT_STAT	(XFS_AT_TYPE|XFS_AT_MODE|XFS_AT_UID|XFS_AT_GID|\
  		XFS_AT_FSID|XFS_AT_NODEID|XFS_AT_NLINK|XFS_AT_SIZE|\
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_clnt.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_clnt.h
---- linux-2.6.16-rc5/fs/xfs/xfs_clnt.h	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_clnt.h	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c
+index 6768843..b3ec736 100644
+--- a/fs/xfs/quota/xfs_qm_syscalls.c
++++ b/fs/xfs/quota/xfs_qm_syscalls.c
+@@ -215,7 +215,7 @@ xfs_qm_scall_quotaoff(
+ 	xfs_qoff_logitem_t	*qoffstart;
+ 	int			nculprits;
+ 
+-	if (!force && !capable(CAP_SYS_ADMIN))
++	if (!force && !capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
+ 		return XFS_ERROR(EPERM);
+ 	/*
+ 	 * No file system can have quotas enabled on disk but not in core.
+@@ -384,7 +384,7 @@ xfs_qm_scall_trunc_qfiles(
+ 	int		error;
+ 	xfs_inode_t	*qip;
+ 
+-	if (!capable(CAP_SYS_ADMIN))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
+ 		return XFS_ERROR(EPERM);
+ 	error = 0;
+ 	if (!XFS_SB_VERSION_HASQUOTA(&mp->m_sb) || flags == 0) {
+@@ -429,7 +429,7 @@ xfs_qm_scall_quotaon(
+ 	uint		accflags;
+ 	__int64_t	sbflags;
+ 
+-	if (!capable(CAP_SYS_ADMIN))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
+ 		return XFS_ERROR(EPERM);
+ 
+ 	flags &= (XFS_ALL_QUOTA_ACCT | XFS_ALL_QUOTA_ENFD);
+@@ -600,7 +600,7 @@ xfs_qm_scall_setqlim(
+ 	int			error;
+ 	xfs_qcnt_t		hard, soft;
+ 
+-	if (!capable(CAP_SYS_ADMIN))
++	if (!capable(CAP_SYS_ADMIN) && !vx_ccaps(VXC_QUOTA_CTL))
+ 		return XFS_ERROR(EPERM);
+ 
+ 	if ((newlim->d_fieldmask &
+diff --git a/fs/xfs/xfs_clnt.h b/fs/xfs/xfs_clnt.h
+index f57cc9a..6203fb4 100644
+--- a/fs/xfs/xfs_clnt.h
++++ b/fs/xfs/xfs_clnt.h
 @@ -100,5 +100,7 @@ struct xfs_mount_args {
   */
  #define XFSMNT2_COMPAT_IOSIZE	0x00000001	/* don't report large preferred
@@ -7473,9 +7689,10 @@
 +
  
  #endif	/* __XFS_CLNT_H__ */
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_dinode.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_dinode.h
---- linux-2.6.16-rc5/fs/xfs/xfs_dinode.h	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_dinode.h	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_dinode.h b/fs/xfs/xfs_dinode.h
+index 79d0d9e..a70e0b3 100644
+--- a/fs/xfs/xfs_dinode.h
++++ b/fs/xfs/xfs_dinode.h
 @@ -53,7 +53,8 @@ typedef struct xfs_dinode_core
  	__uint32_t	di_gid;		/* owner's group id */
  	__uint32_t	di_nlink;	/* number of links to file */
@@ -7512,9 +7729,10 @@
 +	 XFS_DIFLAG_EXTSZINHERIT | XFS_DIFLAG_BARRIER | XFS_DIFLAG_IUNLINK)
  
  #endif	/* __XFS_DINODE_H__ */
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_fs.h
---- linux-2.6.16-rc5/fs/xfs/xfs_fs.h	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h
+index 14010f1..5354048 100644
+--- a/fs/xfs/xfs_fs.h
++++ b/fs/xfs/xfs_fs.h
 @@ -67,6 +67,8 @@ struct fsxattr {
  #define XFS_XFLAG_NOSYMLINKS	0x00000400	/* disallow symlink creation */
  #define XFS_XFLAG_EXTSIZE	0x00000800	/* extent size allocator hint */
@@ -7534,9 +7752,10 @@
  	__u32		bs_dmevmask;	/* DMIG event mask		*/
  	__u16		bs_dmstate;	/* DMIG state info		*/
  	__u16		bs_aextents;	/* attribute number of extents	*/
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_inode.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_inode.c
---- linux-2.6.16-rc5/fs/xfs/xfs_inode.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_inode.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
+index 1d7f5a7..6a4089a 100644
+--- a/fs/xfs/xfs_inode.c
++++ b/fs/xfs/xfs_inode.c
 @@ -52,6 +52,7 @@
  #include "xfs_mac.h"
  #include "xfs_acl.h"
@@ -7602,9 +7821,10 @@
  	ip->i_d.di_projid = prid;
  	memset(&(ip->i_d.di_pad[0]), 0, sizeof(ip->i_d.di_pad));
  
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_itable.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_itable.c
---- linux-2.6.16-rc5/fs/xfs/xfs_itable.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_itable.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c
+index c59450e..d2a21c4 100644
+--- a/fs/xfs/xfs_itable.c
++++ b/fs/xfs/xfs_itable.c
 @@ -85,6 +85,7 @@ xfs_bulkstat_one_iget(
  	buf->bs_mode = dic->di_mode;
  	buf->bs_uid = dic->di_uid;
@@ -7621,9 +7841,10 @@
  	buf->bs_size = INT_GET(dic->di_size, ARCH_CONVERT);
  	buf->bs_atime.tv_sec = INT_GET(dic->di_atime.t_sec, ARCH_CONVERT);
  	buf->bs_atime.tv_nsec = INT_GET(dic->di_atime.t_nsec, ARCH_CONVERT);
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_mount.h linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_mount.h
---- linux-2.6.16-rc5/fs/xfs/xfs_mount.h	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_mount.h	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h
+index cd3cf96..74eec62 100644
+--- a/fs/xfs/xfs_mount.h
++++ b/fs/xfs/xfs_mount.h
 @@ -412,6 +412,7 @@ typedef struct xfs_mount {
  #define XFS_MOUNT_COMPAT_IOSIZE	(1ULL << 22)	/* don't report large preferred
  						 * I/O size in stat() */
@@ -7632,9 +7853,10 @@
  
  /*
   * Default minimum read and write sizes.
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_vfsops.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_vfsops.c
---- linux-2.6.16-rc5/fs/xfs/xfs_vfsops.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_vfsops.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c
+index b6ad370..09665b7 100644
+--- a/fs/xfs/xfs_vfsops.c
++++ b/fs/xfs/xfs_vfsops.c
 @@ -296,6 +296,8 @@ xfs_start_flags(
  
  	if (ap->flags2 & XFSMNT2_COMPAT_IOSIZE)
@@ -7672,9 +7894,10 @@
  		} else if (!strcmp(this_char, "osyncisdsync")) {
  			/* no-op, this is now the default */
  printk("XFS: osyncisdsync is now the default, option is deprecated.\n");
-diff -NurpP --minimal linux-2.6.16-rc5/fs/xfs/xfs_vnodeops.c linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_vnodeops.c
---- linux-2.6.16-rc5/fs/xfs/xfs_vnodeops.c	2006-02-28 15:03:28 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/fs/xfs/xfs_vnodeops.c	2006-02-17 22:18:51 +0100
+diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
+index eaab355..aa90340 100644
+--- a/fs/xfs/xfs_vnodeops.c
++++ b/fs/xfs/xfs_vnodeops.c
 @@ -154,6 +154,7 @@ xfs_getattr(
  	vap->va_mode = ip->i_d.di_mode;
  	vap->va_uid = ip->i_d.di_uid;
@@ -7773,9 +7996,10 @@
  			if (vap->va_xflags & XFS_XFLAG_APPEND)
  				di_flags |= XFS_DIFLAG_APPEND;
  			if (vap->va_xflags & XFS_XFLAG_SYNC)
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-arm/tlb.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-arm/tlb.h
---- linux-2.6.16-rc5/include/asm-arm/tlb.h	2006-01-03 17:30:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-arm/tlb.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-arm/tlb.h b/include/asm-arm/tlb.h
+index f49bfb7..1a17998 100644
+--- a/include/asm-arm/tlb.h
++++ b/include/asm-arm/tlb.h
 @@ -20,6 +20,7 @@
  #include <asm/cacheflush.h>
  #include <asm/tlbflush.h>
@@ -7784,9 +8008,10 @@
  
  /*
   * TLB handling.  This allows us to remove pages from the page
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-arm26/tlb.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-arm26/tlb.h
---- linux-2.6.16-rc5/include/asm-arm26/tlb.h	2006-01-03 17:30:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-arm26/tlb.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-arm26/tlb.h b/include/asm-arm26/tlb.h
+index 08ddd85..d730584 100644
+--- a/include/asm-arm26/tlb.h
++++ b/include/asm-arm26/tlb.h
 @@ -3,6 +3,7 @@
  
  #include <asm/pgalloc.h>
@@ -7795,9 +8020,10 @@
  
  /*
   * TLB handling.  This allows us to remove pages from the page
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-arm26/unistd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-arm26/unistd.h
---- linux-2.6.16-rc5/include/asm-arm26/unistd.h	2006-01-03 17:30:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-arm26/unistd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-arm26/unistd.h b/include/asm-arm26/unistd.h
+index be4c2fb..d296fb5 100644
+--- a/include/asm-arm26/unistd.h
++++ b/include/asm-arm26/unistd.h
 @@ -304,6 +304,8 @@
  #define __NR_mq_getsetattr		(__NR_SYSCALL_BASE+279)
  #define __NR_waitid			(__NR_SYSCALL_BASE+280)
@@ -7807,9 +8033,10 @@
  /*
   * The following SWIs are ARM private. FIXME - make appropriate for arm26
   */
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-generic/tlb.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-generic/tlb.h
---- linux-2.6.16-rc5/include/asm-generic/tlb.h	2006-01-03 17:30:02 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-generic/tlb.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
+index cdd4145..8dbedfa 100644
+--- a/include/asm-generic/tlb.h
++++ b/include/asm-generic/tlb.h
 @@ -15,6 +15,7 @@
  
  #include <linux/config.h>
@@ -7818,9 +8045,10 @@
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
  
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-i386/elf.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-i386/elf.h
---- linux-2.6.16-rc5/include/asm-i386/elf.h	2006-01-03 17:30:04 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-i386/elf.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-i386/elf.h b/include/asm-i386/elf.h
+index 4153d80..2962b84 100644
+--- a/include/asm-i386/elf.h
++++ b/include/asm-i386/elf.h
 @@ -71,7 +71,7 @@ typedef struct user_fxsr_struct elf_fpxr
     the loader.  We need to make sure that it is out of the way of the program
     that it will "exec", and that there is sufficient room for the brk.  */
@@ -7830,9 +8058,10 @@
  
  /* regs is struct pt_regs, pr_reg is elf_gregset_t (which is
     now struct_user_regs, they are different) */
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-i386/page.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-i386/page.h
---- linux-2.6.16-rc5/include/asm-i386/page.h	2006-02-28 15:03:33 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-i386/page.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-i386/page.h b/include/asm-i386/page.h
+index 997ca5d..53cfb1c 100644
+--- a/include/asm-i386/page.h
++++ b/include/asm-i386/page.h
 @@ -109,19 +109,15 @@ extern int page_is_ram(unsigned long pag
  
  #endif /* __ASSEMBLY__ */
@@ -7856,9 +8085,10 @@
  #define __pa(x)			((unsigned long)(x)-PAGE_OFFSET)
  #define __va(x)			((void *)((unsigned long)(x)+PAGE_OFFSET))
  #define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-i386/processor.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-i386/processor.h
---- linux-2.6.16-rc5/include/asm-i386/processor.h	2006-02-28 15:03:33 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-i386/processor.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-i386/processor.h b/include/asm-i386/processor.h
+index feca5d9..bb5f709 100644
+--- a/include/asm-i386/processor.h
++++ b/include/asm-i386/processor.h
 @@ -316,9 +316,10 @@ extern unsigned int mca_pentium_flag;
  extern int bootloader_type;
  
@@ -7872,9 +8102,10 @@
  
  /* This decides where the kernel will search for a free chunk of vm
   * space during mmap's.
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-ia64/tlb.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-ia64/tlb.h
---- linux-2.6.16-rc5/include/asm-ia64/tlb.h	2006-01-03 17:30:05 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-ia64/tlb.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-ia64/tlb.h b/include/asm-ia64/tlb.h
+index 834370b..e2c6e18 100644
+--- a/include/asm-ia64/tlb.h
++++ b/include/asm-ia64/tlb.h
 @@ -41,6 +41,7 @@
  #include <linux/mm.h>
  #include <linux/pagemap.h>
@@ -7883,9 +8114,10 @@
  
  #include <asm/pgalloc.h>
  #include <asm/processor.h>
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-powerpc/unistd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-powerpc/unistd.h
---- linux-2.6.16-rc5/include/asm-powerpc/unistd.h	2006-02-28 15:03:37 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-powerpc/unistd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h
+index 3555699..0333931 100644
+--- a/include/asm-powerpc/unistd.h
++++ b/include/asm-powerpc/unistd.h
 @@ -275,7 +275,7 @@
  #endif
  #define __NR_rtas		255
@@ -7895,9 +8127,10 @@
  /* 258 currently unused */
  #define __NR_mbind		259
  #define __NR_get_mempolicy	260
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-s390/unistd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-s390/unistd.h
---- linux-2.6.16-rc5/include/asm-s390/unistd.h	2006-02-28 15:03:38 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-s390/unistd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-s390/unistd.h b/include/asm-s390/unistd.h
+index 657d582..c9371e9 100644
+--- a/include/asm-s390/unistd.h
++++ b/include/asm-s390/unistd.h
 @@ -255,7 +255,7 @@
  #define __NR_clock_gettime	(__NR_timer_create+6)
  #define __NR_clock_getres	(__NR_timer_create+7)
@@ -7907,9 +8140,10 @@
  #define __NR_fadvise64_64	264
  #define __NR_statfs64		265
  #define __NR_fstatfs64		266
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-sparc/unistd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-sparc/unistd.h
---- linux-2.6.16-rc5/include/asm-sparc/unistd.h	2006-02-28 15:03:38 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-sparc/unistd.h	2006-02-18 15:22:54 +0100
+diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h
+index 64ec640..12ef6c0 100644
+--- a/include/asm-sparc/unistd.h
++++ b/include/asm-sparc/unistd.h
 @@ -283,7 +283,7 @@
  #define __NR_timer_getoverrun	264
  #define __NR_timer_delete	265
@@ -7919,9 +8153,10 @@
  #define __NR_io_setup		268
  #define __NR_io_destroy		269
  #define __NR_io_submit		270
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-sparc64/tlb.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-sparc64/tlb.h
---- linux-2.6.16-rc5/include/asm-sparc64/tlb.h	2006-01-03 17:30:08 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-sparc64/tlb.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-sparc64/tlb.h b/include/asm-sparc64/tlb.h
+index 61c0188..41a5d1c 100644
+--- a/include/asm-sparc64/tlb.h
++++ b/include/asm-sparc64/tlb.h
 @@ -3,6 +3,7 @@
  
  #include <linux/config.h>
@@ -7930,9 +8165,10 @@
  #include <asm/pgalloc.h>
  #include <asm/tlbflush.h>
  #include <asm/mmu_context.h>
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-sparc64/unistd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-sparc64/unistd.h
---- linux-2.6.16-rc5/include/asm-sparc64/unistd.h	2006-02-28 15:03:39 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-sparc64/unistd.h	2006-02-18 15:22:54 +0100
+diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
+index a284986..13f7e2f 100644
+--- a/include/asm-sparc64/unistd.h
++++ b/include/asm-sparc64/unistd.h
 @@ -285,7 +285,7 @@
  #define __NR_timer_getoverrun	264
  #define __NR_timer_delete	265
@@ -7942,9 +8178,10 @@
  #define __NR_io_setup		268
  #define __NR_io_destroy		269
  #define __NR_io_submit		270
-diff -NurpP --minimal linux-2.6.16-rc5/include/asm-x86_64/unistd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-x86_64/unistd.h
---- linux-2.6.16-rc5/include/asm-x86_64/unistd.h	2006-02-28 15:03:39 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/asm-x86_64/unistd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/asm-x86_64/unistd.h b/include/asm-x86_64/unistd.h
+index da0341c..732a094 100644
+--- a/include/asm-x86_64/unistd.h
++++ b/include/asm-x86_64/unistd.h
 @@ -532,7 +532,7 @@ __SYSCALL(__NR_tgkill, sys_tgkill)
  #define __NR_utimes		235
  __SYSCALL(__NR_utimes, sys_utimes)
@@ -7954,9 +8191,10 @@
  #define __NR_mbind 		237
  __SYSCALL(__NR_mbind, sys_mbind)
  #define __NR_set_mempolicy 	238
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/capability.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/capability.h
---- linux-2.6.16-rc5/include/linux/capability.h	2006-02-28 15:03:40 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/capability.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/capability.h b/include/linux/capability.h
+index 5a23ce7..34918bf 100644
+--- a/include/linux/capability.h
++++ b/include/linux/capability.h
 @@ -235,6 +235,7 @@ typedef __u32 kernel_cap_t;
     arbitrary SCSI commands */
  /* Allow setting encryption key on loopback filesystem */
@@ -7977,9 +8215,10 @@
  #ifdef __KERNEL__
  /* 
   * Bounding set
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/devpts_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/devpts_fs.h
---- linux-2.6.16-rc5/include/linux/devpts_fs.h	2004-08-14 12:55:59 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/devpts_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/devpts_fs.h b/include/linux/devpts_fs.h
+index b672ddc..3ca2799 100644
+--- a/include/linux/devpts_fs.h
++++ b/include/linux/devpts_fs.h
 @@ -30,5 +30,7 @@ static inline void devpts_pty_kill(int n
  
  #endif
@@ -7988,9 +8227,10 @@
 +
  
  #endif /* _LINUX_DEVPTS_FS_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/ext2_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/ext2_fs.h
---- linux-2.6.16-rc5/include/linux/ext2_fs.h	2005-10-28 20:49:54 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/ext2_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/ext2_fs.h b/include/linux/ext2_fs.h
+index f7bd1c7..d953a90 100644
+--- a/include/linux/ext2_fs.h
++++ b/include/linux/ext2_fs.h
 @@ -192,10 +192,17 @@ struct ext2_group_desc
  #define EXT2_NOTAIL_FL			0x00008000 /* file tail should not be merged */
  #define EXT2_DIRSYNC_FL			0x00010000 /* dirsync behaviour (directories only) */
@@ -8038,9 +8278,10 @@
  
  
  #define clear_opt(o, opt)		o &= ~EXT2_MOUNT_##opt
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/ext3_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/ext3_fs.h
---- linux-2.6.16-rc5/include/linux/ext3_fs.h	2005-10-28 20:49:54 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/ext3_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
+index c0272d7..af52318 100644
+--- a/include/linux/ext3_fs.h
++++ b/include/linux/ext3_fs.h
 @@ -185,10 +185,20 @@ struct ext3_group_desc
  #define EXT3_NOTAIL_FL			0x00008000 /* file tail should not be merged */
  #define EXT3_DIRSYNC_FL			0x00010000 /* dirsync behaviour (directories only) */
@@ -8095,10 +8336,11 @@
  
  extern void ext3_read_inode (struct inode *);
  extern int  ext3_write_inode (struct inode *, int);
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/fs.h
---- linux-2.6.16-rc5/include/linux/fs.h	2006-02-28 15:03:40 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/fs.h	2006-02-17 22:18:51 +0100
-@@ -108,6 +108,8 @@ extern int dir_notify_enable;
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index 128d008..0e48413 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -109,6 +109,8 @@ extern int dir_notify_enable;
  #define MS_PRIVATE	(1<<18)	/* change to private */
  #define MS_SLAVE	(1<<19)	/* change to slave */
  #define MS_SHARED	(1<<20)	/* change to shared */
@@ -8107,7 +8349,7 @@
  #define MS_ACTIVE	(1<<30)
  #define MS_NOUSER	(1<<31)
  
-@@ -134,6 +136,8 @@ extern int dir_notify_enable;
+@@ -135,6 +137,8 @@ extern int dir_notify_enable;
  #define S_NOCMTIME	128	/* Do not update file c/mtime */
  #define S_SWAPFILE	256	/* Do not truncate: swapon got its bmaps */
  #define S_PRIVATE	512	/* Inode is fs-internal */
@@ -8116,7 +8358,7 @@
  
  /*
   * Note that nosuid etc flags are inode-specific: setting some file-system
-@@ -150,18 +154,22 @@ extern int dir_notify_enable;
+@@ -151,18 +155,22 @@ extern int dir_notify_enable;
   */
  #define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
  
@@ -8140,7 +8382,7 @@
  #define IS_DEADDIR(inode)	((inode)->i_flags & S_DEAD)
  #define IS_NOCMTIME(inode)	((inode)->i_flags & S_NOCMTIME)
  #define IS_SWAPFILE(inode)	((inode)->i_flags & S_SWAPFILE)
-@@ -264,6 +272,7 @@ typedef void (dio_iodone_t)(struct kiocb
+@@ -265,6 +273,7 @@ typedef void (dio_iodone_t)(struct kiocb
  #define ATTR_KILL_SUID	2048
  #define ATTR_KILL_SGID	4096
  #define ATTR_FILE	8192
@@ -8148,7 +8390,7 @@
  
  /*
   * This is the Inode Attributes structure, used for notify_change().  It
-@@ -279,6 +288,7 @@ struct iattr {
+@@ -280,6 +289,7 @@ struct iattr {
  	umode_t		ia_mode;
  	uid_t		ia_uid;
  	gid_t		ia_gid;
@@ -8156,7 +8398,7 @@
  	loff_t		ia_size;
  	struct timespec	ia_atime;
  	struct timespec	ia_mtime;
-@@ -292,6 +302,9 @@ struct iattr {
+@@ -293,6 +303,9 @@ struct iattr {
  	struct file	*ia_file;
  };
  
@@ -8166,7 +8408,7 @@
  /*
   * Includes for diskquotas.
   */
-@@ -470,6 +483,7 @@ struct inode {
+@@ -471,6 +484,7 @@ struct inode {
  	unsigned int		i_nlink;
  	uid_t			i_uid;
  	gid_t			i_gid;
@@ -8174,7 +8416,7 @@
  	dev_t			i_rdev;
  	loff_t			i_size;
  	struct timespec		i_atime;
-@@ -632,6 +646,7 @@ struct file {
+@@ -633,6 +647,7 @@ struct file {
  	struct fown_struct	f_owner;
  	unsigned int		f_uid, f_gid;
  	struct file_ra_state	f_ra;
@@ -8182,7 +8424,7 @@
  
  	unsigned long		f_version;
  	void			*f_security;
-@@ -711,6 +726,7 @@ struct file_lock {
+@@ -712,6 +727,7 @@ struct file_lock {
  	unsigned char fl_type;
  	loff_t fl_start;
  	loff_t fl_end;
@@ -8190,7 +8432,7 @@
  
  	struct fasync_struct *	fl_fasync; /* for lease break notifications */
  	unsigned long fl_break_time;	/* for nonblocking lease breaks */
-@@ -903,12 +919,12 @@ static inline void unlock_super(struct s
+@@ -904,12 +920,12 @@ static inline void unlock_super(struct s
   */
  extern int vfs_permission(struct nameidata *, int);
  extern int vfs_create(struct inode *, struct dentry *, int, struct nameidata *);
@@ -8209,7 +8451,7 @@
  extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);
  
  /*
-@@ -1048,6 +1064,7 @@ struct inode_operations {
+@@ -1049,6 +1065,7 @@ struct inode_operations {
  	ssize_t (*listxattr) (struct dentry *, char *, size_t);
  	int (*removexattr) (struct dentry *, const char *);
  	void (*truncate_range)(struct inode *, loff_t, loff_t);
@@ -8225,9 +8467,10 @@
  extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *);
  extern int simple_statfs(struct super_block *, struct kstatfs *);
  extern int simple_link(struct dentry *, struct inode *, struct dentry *);
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/init_task.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/init_task.h
---- linux-2.6.16-rc5/include/linux/init_task.h	2006-01-03 17:30:09 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/init_task.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/init_task.h b/include/linux/init_task.h
+index dcfd2ec..653f9e1 100644
+--- a/include/linux/init_task.h
++++ b/include/linux/init_task.h
 @@ -121,6 +121,10 @@ extern struct group_info init_groups;
  	.journal_info	= NULL,						\
  	.cpu_timers	= INIT_CPU_TIMERS(tsk.cpu_timers),		\
@@ -8239,9 +8482,10 @@
  }
  
  
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/ipc.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/ipc.h
---- linux-2.6.16-rc5/include/linux/ipc.h	2004-08-14 12:54:46 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/ipc.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/ipc.h b/include/linux/ipc.h
+index b291189..079c2fe 100644
+--- a/include/linux/ipc.h
++++ b/include/linux/ipc.h
 @@ -66,6 +66,7 @@ struct kern_ipc_perm
  	mode_t		mode; 
  	unsigned long	seq;
@@ -8250,9 +8494,10 @@
  };
  
  #endif /* __KERNEL__ */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/kernel.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/kernel.h
---- linux-2.6.16-rc5/include/linux/kernel.h	2006-02-28 15:03:40 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/kernel.h	2006-02-18 15:22:55 +0100
+diff --git a/include/linux/kernel.h b/include/linux/kernel.h
+index 3b507bf..d1c9dea 100644
+--- a/include/linux/kernel.h
++++ b/include/linux/kernel.h
 @@ -17,6 +17,7 @@
  #include <asm/bug.h>
  
@@ -8261,9 +8506,10 @@
  
  #define INT_MAX		((int)(~0U>>1))
  #define INT_MIN		(-INT_MAX - 1)
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/major.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/major.h
---- linux-2.6.16-rc5/include/linux/major.h	2005-08-29 22:25:41 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/major.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/major.h b/include/linux/major.h
+index e36a467..5cc9d84 100644
+--- a/include/linux/major.h
++++ b/include/linux/major.h
 @@ -15,6 +15,7 @@
  #define HD_MAJOR		IDE0_MAJOR
  #define PTY_SLAVE_MAJOR		3
@@ -8272,9 +8518,10 @@
  #define TTYAUX_MAJOR		5
  #define LP_MAJOR		6
  #define VCS_MAJOR		7
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/mount.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/mount.h
---- linux-2.6.16-rc5/include/linux/mount.h	2006-02-28 15:03:40 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/mount.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/mount.h b/include/linux/mount.h
+index b7472ae..a708e36 100644
+--- a/include/linux/mount.h
++++ b/include/linux/mount.h
 @@ -22,10 +22,14 @@
  #define MNT_NOEXEC	0x04
  #define MNT_NOATIME	0x08
@@ -8298,9 +8545,10 @@
  };
  
  static inline struct vfsmount *mntget(struct vfsmount *mnt)
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/namespace.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/namespace.h
---- linux-2.6.16-rc5/include/linux/namespace.h	2006-02-28 15:03:40 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/namespace.h	2006-02-17 22:36:11 +0100
+diff --git a/include/linux/namespace.h b/include/linux/namespace.h
+index 3abc8e3..4e234d8 100644
+--- a/include/linux/namespace.h
++++ b/include/linux/namespace.h
 @@ -16,6 +16,7 @@ struct namespace {
  extern int copy_namespace(int, struct task_struct *);
  extern void __put_namespace(struct namespace *namespace);
@@ -8309,9 +8557,10 @@
  
  static inline void put_namespace(struct namespace *namespace)
  {
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/net.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/net.h
---- linux-2.6.16-rc5/include/linux/net.h	2006-02-28 15:03:40 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/net.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/net.h b/include/linux/net.h
+index 28195a2..3a89224 100644
+--- a/include/linux/net.h
++++ b/include/linux/net.h
 @@ -62,6 +62,7 @@ typedef enum {
  #define SOCK_ASYNC_WAITDATA	1
  #define SOCK_NOSPACE		2
@@ -8320,9 +8569,10 @@
  
  #ifndef ARCH_HAS_SOCKET_TYPES
  /**
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/nfs_mount.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/nfs_mount.h
---- linux-2.6.16-rc5/include/linux/nfs_mount.h	2005-08-29 22:25:42 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/nfs_mount.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/nfs_mount.h b/include/linux/nfs_mount.h
+index 659c754..b1531a0 100644
+--- a/include/linux/nfs_mount.h
++++ b/include/linux/nfs_mount.h
 @@ -61,6 +61,7 @@ struct nfs_mount_data {
  #define NFS_MOUNT_NOACL		0x0800	/* 4 */
  #define NFS_MOUNT_STRICTLOCK	0x1000	/* reserved for NFSv4 */
@@ -8331,9 +8581,10 @@
  #define NFS_MOUNT_FLAGMASK	0xFFFF
  
  #endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/percpu.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/percpu.h
---- linux-2.6.16-rc5/include/linux/percpu.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/percpu.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/percpu.h b/include/linux/percpu.h
+index cb9039a..e436dbd 100644
+--- a/include/linux/percpu.h
++++ b/include/linux/percpu.h
 @@ -8,7 +8,7 @@
  
  /* Enough to cover all DEFINE_PER_CPUs in kernel, including modules. */
@@ -8343,9 +8594,10 @@
  #endif
  
  /* Must be an lvalue. */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/proc_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/proc_fs.h
---- linux-2.6.16-rc5/include/linux/proc_fs.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/proc_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
+index aa6322d..c892f9b 100644
+--- a/include/linux/proc_fs.h
++++ b/include/linux/proc_fs.h
 @@ -55,6 +55,7 @@ struct proc_dir_entry {
  	nlink_t nlink;
  	uid_t uid;
@@ -8366,9 +8618,10 @@
  	} op;
  	struct proc_dir_entry *pde;
  	struct inode vfs_inode;
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/reiserfs_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/reiserfs_fs.h
---- linux-2.6.16-rc5/include/linux/reiserfs_fs.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/reiserfs_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
+index dad78ce..6213f2f 100644
+--- a/include/linux/reiserfs_fs.h
++++ b/include/linux/reiserfs_fs.h
 @@ -829,6 +829,18 @@ struct stat_data_v1 {
  #define REISERFS_COMPR_FL     EXT2_COMPR_FL
  #define REISERFS_NOTAIL_FL    EXT2_NOTAIL_FL
@@ -8396,9 +8649,10 @@
  
  /* namei.c */
  void set_de_name_and_namelen(struct reiserfs_dir_entry *de);
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/reiserfs_fs_sb.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/reiserfs_fs_sb.h
---- linux-2.6.16-rc5/include/linux/reiserfs_fs_sb.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/reiserfs_fs_sb.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/reiserfs_fs_sb.h b/include/linux/reiserfs_fs_sb.h
+index 31b4c0b..3204ea0 100644
+--- a/include/linux/reiserfs_fs_sb.h
++++ b/include/linux/reiserfs_fs_sb.h
 @@ -456,6 +456,7 @@ enum reiserfs_mount_options {
  	REISERFS_POSIXACL,
  	REISERFS_BARRIER_NONE,
@@ -8407,9 +8661,10 @@
  
  	/* Actions on error */
  	REISERFS_ERROR_PANIC,
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/sched.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sched.h
---- linux-2.6.16-rc5/include/linux/sched.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sched.h	2006-02-18 15:22:55 +0100
+diff --git a/include/linux/sched.h b/include/linux/sched.h
+index 62e6314..e02d5dd 100644
+--- a/include/linux/sched.h
++++ b/include/linux/sched.h
 @@ -15,6 +15,7 @@
  #include <linux/cpumask.h>
  #include <linux/errno.h>
@@ -8467,7 +8722,7 @@
  #define get_mm_rss(mm)					\
  	(get_mm_counter(mm, file_rss) + get_mm_counter(mm, anon_rss))
  #define update_hiwater_rss(mm)	do {			\
-@@ -335,6 +340,7 @@ struct mm_struct {
+@@ -336,6 +341,7 @@ struct mm_struct {
  
  	/* Architecture-specific MM context */
  	mm_context_t context;
@@ -8475,7 +8730,7 @@
  
  	/* Token based thrashing protection. */
  	unsigned long swap_token_time;
-@@ -513,9 +519,10 @@ struct user_struct {
+@@ -514,9 +520,10 @@ struct user_struct {
  	/* Hash table maintenance information */
  	struct list_head uidhash_list;
  	uid_t uid;
@@ -8487,7 +8742,7 @@
  
  extern struct user_struct root_user;
  #define INIT_USER (&root_user)
-@@ -817,6 +824,14 @@ struct task_struct {
+@@ -818,6 +825,14 @@ struct task_struct {
  	
  	void *security;
  	struct audit_context *audit_context;
@@ -8524,9 +8779,10 @@
  static inline struct user_struct *get_uid(struct user_struct *u)
  {
  	atomic_inc(&u->__count);
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/shmem_fs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/shmem_fs.h
---- linux-2.6.16-rc5/include/linux/shmem_fs.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/shmem_fs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
+index c057f0b..e4b2803 100644
+--- a/include/linux/shmem_fs.h
++++ b/include/linux/shmem_fs.h
 @@ -8,6 +8,9 @@
  
  #define SHMEM_NR_DIRECT 16
@@ -8537,9 +8793,10 @@
  struct shmem_inode_info {
  	spinlock_t		lock;
  	unsigned long		flags;
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/stat.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/stat.h
---- linux-2.6.16-rc5/include/linux/stat.h	2004-08-14 12:55:10 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/stat.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/stat.h b/include/linux/stat.h
+index 8ff2a12..289a968 100644
+--- a/include/linux/stat.h
++++ b/include/linux/stat.h
 @@ -63,6 +63,7 @@ struct kstat {
  	unsigned int	nlink;
  	uid_t		uid;
@@ -8548,9 +8805,10 @@
  	dev_t		rdev;
  	loff_t		size;
  	struct timespec  atime;
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/sunrpc/auth.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sunrpc/auth.h
---- linux-2.6.16-rc5/include/linux/sunrpc/auth.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sunrpc/auth.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h
+index be4772e..b27c818 100644
+--- a/include/linux/sunrpc/auth.h
++++ b/include/linux/sunrpc/auth.h
 @@ -28,6 +28,7 @@
  struct auth_cred {
  	uid_t	uid;
@@ -8559,9 +8817,10 @@
  	struct group_info *group_info;
  };
  
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/sunrpc/clnt.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sunrpc/clnt.h
---- linux-2.6.16-rc5/include/linux/sunrpc/clnt.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sunrpc/clnt.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h
+index f147e6b..2c892da 100644
+--- a/include/linux/sunrpc/clnt.h
++++ b/include/linux/sunrpc/clnt.h
 @@ -51,7 +51,8 @@ struct rpc_clnt {
  				cl_intr     : 1,/* interruptible */
  				cl_autobind : 1,/* use getport() */
@@ -8572,18 +8831,19 @@
  
  	struct rpc_rtt *	cl_rtt;		/* RTO estimator data */
  	struct rpc_portmap *	cl_pmap;	/* port mapping */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/sysctl.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sysctl.h
---- linux-2.6.16-rc5/include/linux/sysctl.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sysctl.h	2006-02-28 15:22:49 +0100
-@@ -147,6 +147,7 @@ enum
- 	KERN_SETUID_DUMPABLE=69, /* int: behaviour of dumps for setuid core */
+diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
+index bac61db..7e42ca6 100644
+--- a/include/linux/sysctl.h
++++ b/include/linux/sysctl.h
+@@ -148,6 +148,7 @@ enum
  	KERN_SPIN_RETRY=70,	/* int: number of spinlock retries */
  	KERN_ACPI_VIDEO_FLAGS=71, /* int: flags for setting up video after ACPI sleep */
-+	KERN_VSHELPER=72,	/* string: path to vshelper policy agent */
+ 	KERN_IA64_UNALIGNED=72, /* int: ia64 unaligned userland trap enable */
++	KERN_VSHELPER=73,	/* string: path to vshelper policy agent */
  };
  
  
-@@ -881,6 +882,9 @@ typedef int ctl_handler (ctl_table *tabl
+@@ -882,6 +883,9 @@ typedef int ctl_handler (ctl_table *tabl
  typedef int proc_handler (ctl_table *ctl, int write, struct file * filp,
  			  void __user *buffer, size_t *lenp, loff_t *ppos);
  
@@ -8593,7 +8853,7 @@
  extern int proc_dostring(ctl_table *, int, struct file *,
  			 void __user *, size_t *, loff_t *);
  extern int proc_dointvec(ctl_table *, int, struct file *,
-@@ -962,6 +966,7 @@ struct ctl_table 
+@@ -963,6 +967,7 @@ struct ctl_table 
  	mode_t mode;
  	ctl_table *child;
  	proc_handler *proc_handler;	/* Callback for text formatting */
@@ -8601,9 +8861,10 @@
  	ctl_handler *strategy;		/* Callback function for all r/w */
  	struct proc_dir_entry *de;	/* /proc control block */
  	void *extra1;
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/sysfs.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sysfs.h
---- linux-2.6.16-rc5/include/linux/sysfs.h	2005-08-29 22:25:42 +0200
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/sysfs.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
+index 392da5a..e738d80 100644
+--- a/include/linux/sysfs.h
++++ b/include/linux/sysfs.h
 @@ -12,6 +12,8 @@
  
  #include <asm/atomic.h>
@@ -8613,9 +8874,10 @@
  struct kobject;
  struct module;
  
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/types.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/types.h
---- linux-2.6.16-rc5/include/linux/types.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/types.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/types.h b/include/linux/types.h
+index 54ae2d5..08848a1 100644
+--- a/include/linux/types.h
++++ b/include/linux/types.h
 @@ -38,6 +38,8 @@ typedef __kernel_uid32_t	uid_t;
  typedef __kernel_gid32_t	gid_t;
  typedef __kernel_uid16_t        uid16_t;
@@ -8625,9 +8887,11 @@
  
  #ifdef CONFIG_UID16
  /* This is defined by include/asm-{arch}/posix_types.h */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vroot.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vroot.h
---- linux-2.6.16-rc5/include/linux/vroot.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vroot.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vroot.h b/include/linux/vroot.h
+new file mode 100644
+index 0000000..4eb6d0d
+--- /dev/null
++++ b/include/linux/vroot.h
 @@ -0,0 +1,51 @@
 +
 +/*
@@ -8680,9 +8944,11 @@
 +#define VROOT_CLR_DEV		0x5601
 +
 +#endif /* _LINUX_VROOT_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_base.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_base.h
---- linux-2.6.16-rc5/include/linux/vs_base.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_base.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_base.h b/include/linux/vs_base.h
+new file mode 100644
+index 0000000..fa1b85e
+--- /dev/null
++++ b/include/linux/vs_base.h
 @@ -0,0 +1,103 @@
 +#ifndef _VX_VS_BASE_H
 +#define _VX_VS_BASE_H
@@ -8701,7 +8967,7 @@
 +
 +/*
 + * check current context for ADMIN/WATCH and
-+ * optionally agains supplied argument
++ * optionally against supplied argument
 + */
 +static inline int __vx_check(xid_t cid, xid_t id, unsigned int mode)
 +{
@@ -8787,10 +9053,12 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_context.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_context.h
---- linux-2.6.16-rc5/include/linux/vs_context.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_context.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,170 @@
+diff --git a/include/linux/vs_context.h b/include/linux/vs_context.h
+new file mode 100644
+index 0000000..24bb245
+--- /dev/null
++++ b/include/linux/vs_context.h
+@@ -0,0 +1,198 @@
 +#ifndef _VX_VS_CONTEXT_H
 +#define _VX_VS_CONTEXT_H
 +
@@ -8798,10 +9066,10 @@
 +#include "vserver/debug.h"
 +
 +
-+#define get_vx_info(i)	__get_vx_info(i,__FILE__,__LINE__)
++#define get_vx_info(i)	__get_vx_info(i,__FILE__,__LINE__,__HERE__)
 +
 +static inline struct vx_info *__get_vx_info(struct vx_info *vxi,
-+	const char *_file, int _line)
++	const char *_file, int _line, void *_here)
 +{
 +	if (!vxi)
 +		return NULL;
@@ -8809,7 +9077,7 @@
 +	vxlprintk(VXD_CBIT(xid, 2), "get_vx_info(%p[#%d.%d])",
 +		vxi, vxi?vxi->vx_id:0, vxi?atomic_read(&vxi->vx_usecnt):0,
 +		_file, _line);
-+	vxh_get_vx_info(vxi);
++	__vxh_get_vx_info(vxi, _here);
 +
 +	atomic_inc(&vxi->vx_usecnt);
 +	return vxi;
@@ -8818,10 +9086,10 @@
 +
 +extern void free_vx_info(struct vx_info *);
 +
-+#define put_vx_info(i)	__put_vx_info(i,__FILE__,__LINE__)
++#define put_vx_info(i)	__put_vx_info(i,__FILE__,__LINE__,__HERE__)
 +
 +static inline void __put_vx_info(struct vx_info *vxi,
-+	const char *_file, int _line)
++	const char *_file, int _line, void *_here)
 +{
 +	if (!vxi)
 +		return;
@@ -8829,17 +9097,17 @@
 +	vxlprintk(VXD_CBIT(xid, 2), "put_vx_info(%p[#%d.%d])",
 +		vxi, vxi?vxi->vx_id:0, vxi?atomic_read(&vxi->vx_usecnt):0,
 +		_file, _line);
-+	vxh_put_vx_info(vxi);
++	__vxh_put_vx_info(vxi, _here);
 +
 +	if (atomic_dec_and_test(&vxi->vx_usecnt))
 +		free_vx_info(vxi);
 +}
 +
 +
-+#define init_vx_info(p,i) __init_vx_info(p,i,__FILE__,__LINE__)
++#define init_vx_info(p,i) __init_vx_info(p,i,__FILE__,__LINE__,__HERE__)
 +
 +static inline void __init_vx_info(struct vx_info **vxp, struct vx_info *vxi,
-+	const char *_file, int _line)
++	const char *_file, int _line, void *_here)
 +{
 +	if (vxi) {
 +		vxlprintk(VXD_CBIT(xid, 3),
@@ -8847,7 +9115,7 @@
 +			vxi, vxi?vxi->vx_id:0,
 +			vxi?atomic_read(&vxi->vx_usecnt):0,
 +			_file, _line);
-+		vxh_init_vx_info(vxi, vxp);
++		__vxh_init_vx_info(vxi, vxp, _here);
 +
 +		atomic_inc(&vxi->vx_usecnt);
 +	}
@@ -8855,10 +9123,10 @@
 +}
 +
 +
-+#define set_vx_info(p,i) __set_vx_info(p,i,__FILE__,__LINE__)
++#define set_vx_info(p,i) __set_vx_info(p,i,__FILE__,__LINE__,__HERE__)
 +
 +static inline void __set_vx_info(struct vx_info **vxp, struct vx_info *vxi,
-+	const char *_file, int _line)
++	const char *_file, int _line, void *_here)
 +{
 +	struct vx_info *vxo;
 +
@@ -8869,7 +9137,7 @@
 +		vxi, vxi?vxi->vx_id:0,
 +		vxi?atomic_read(&vxi->vx_usecnt):0,
 +		_file, _line);
-+	vxh_set_vx_info(vxi, vxp);
++	__vxh_set_vx_info(vxi, vxp, _here);
 +
 +	atomic_inc(&vxi->vx_usecnt);
 +	vxo = xchg(vxp, vxi);
@@ -8877,10 +9145,10 @@
 +}
 +
 +
-+#define clr_vx_info(p) __clr_vx_info(p,__FILE__,__LINE__)
++#define clr_vx_info(p) __clr_vx_info(p,__FILE__,__LINE__,__HERE__)
 +
 +static inline void __clr_vx_info(struct vx_info **vxp,
-+	const char *_file, int _line)
++	const char *_file, int _line, void *_here)
 +{
 +	struct vx_info *vxo;
 +
@@ -8892,24 +9160,26 @@
 +		vxo, vxo?vxo->vx_id:0,
 +		vxo?atomic_read(&vxo->vx_usecnt):0,
 +		_file, _line);
-+	vxh_clr_vx_info(vxo, vxp);
++	__vxh_clr_vx_info(vxo, vxp, _here);
 +
 +	if (atomic_dec_and_test(&vxo->vx_usecnt))
 +		free_vx_info(vxo);
 +}
 +
 +
-+#define claim_vx_info(v,p) __claim_vx_info(v,p,__FILE__,__LINE__)
++#define claim_vx_info(v,p) \
++	__claim_vx_info(v,p,__FILE__,__LINE__,__HERE__)
 +
 +static inline void __claim_vx_info(struct vx_info *vxi,
-+	struct task_struct *task, const char *_file, int _line)
++	struct task_struct *task,
++	const char *_file, int _line, void *_here)
 +{
 +	vxlprintk(VXD_CBIT(xid, 3), "claim_vx_info(%p[#%d.%d.%d]) %p",
 +		vxi, vxi?vxi->vx_id:0,
 +		vxi?atomic_read(&vxi->vx_usecnt):0,
 +		vxi?atomic_read(&vxi->vx_tasks):0,
 +		task, _file, _line);
-+	vxh_claim_vx_info(vxi, task);
++	__vxh_claim_vx_info(vxi, task, _here);
 +
 +	atomic_inc(&vxi->vx_tasks);
 +}
@@ -8917,17 +9187,19 @@
 +
 +extern void unhash_vx_info(struct vx_info *);
 +
-+#define release_vx_info(v,p) __release_vx_info(v,p,__FILE__,__LINE__)
++#define release_vx_info(v,p) \
++	__release_vx_info(v,p,__FILE__,__LINE__,__HERE__)
 +
 +static inline void __release_vx_info(struct vx_info *vxi,
-+	struct task_struct *task, const char *_file, int _line)
++	struct task_struct *task,
++	const char *_file, int _line, void *_here)
 +{
 +	vxlprintk(VXD_CBIT(xid, 3), "release_vx_info(%p[#%d.%d.%d]) %p",
 +		vxi, vxi?vxi->vx_id:0,
 +		vxi?atomic_read(&vxi->vx_usecnt):0,
 +		vxi?atomic_read(&vxi->vx_tasks):0,
 +		task, _file, _line);
-+	vxh_release_vx_info(vxi, task);
++	__vxh_release_vx_info(vxi, task, _here);
 +
 +	might_sleep();
 +
@@ -8936,17 +9208,18 @@
 +}
 +
 +
-+#define task_get_vx_info(p)	__task_get_vx_info(p,__FILE__,__LINE__)
++#define task_get_vx_info(p) \
++	__task_get_vx_info(p,__FILE__,__LINE__,__HERE__)
 +
-+static __inline__ struct vx_info *__task_get_vx_info(struct task_struct *p,
-+	const char *_file, int _line)
++static inline struct vx_info *__task_get_vx_info(struct task_struct *p,
++	const char *_file, int _line, void *_here)
 +{
 +	struct vx_info *vxi;
 +
 +	task_lock(p);
 +	vxlprintk(VXD_CBIT(xid, 5), "task_get_vx_info(%p)",
 +		p, _file, _line);
-+	vxi = __get_vx_info(p->vx_info, _file, _line);
++	vxi = __get_vx_info(p->vx_info, _file, _line, _here);
 +	task_unlock(p);
 +	return vxi;
 +}
@@ -8958,12 +9231,37 @@
 +		wake_up_interruptible(&vxi->vx_wait);
 +}
 +
++extern void exit_vx_info(struct task_struct *);
++
++static inline
++struct task_struct *vx_child_reaper(struct task_struct *p)
++{
++	struct vx_info *vxi = p->vx_info;
++	struct task_struct *reaper = child_reaper;
++
++	if (!vxi)
++		goto out;
++
++	BUG_ON(!p->vx_info->vx_reaper);
++
++	/* child reaper for the guest reaper */
++	if (vxi->vx_reaper == p)
++		goto out;
++
++	reaper = vxi->vx_reaper;
++out:
++	return reaper;
++}
++
++
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_cvirt.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_cvirt.h
---- linux-2.6.16-rc5/include/linux/vs_cvirt.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_cvirt.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_cvirt.h b/include/linux/vs_cvirt.h
+new file mode 100644
+index 0000000..0901e73
+--- /dev/null
++++ b/include/linux/vs_cvirt.h
 @@ -0,0 +1,108 @@
 +#ifndef _VX_VS_CVIRT_H
 +#define _VX_VS_CVIRT_H
@@ -9073,9 +9371,11 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_dlimit.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_dlimit.h
---- linux-2.6.16-rc5/include/linux/vs_dlimit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_dlimit.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_dlimit.h b/include/linux/vs_dlimit.h
+new file mode 100644
+index 0000000..674262d
+--- /dev/null
++++ b/include/linux/vs_dlimit.h
 @@ -0,0 +1,213 @@
 +#ifndef _VX_VS_DLIMIT_H
 +#define _VX_VS_DLIMIT_H
@@ -9290,9 +9590,11 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_limit.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_limit.h
---- linux-2.6.16-rc5/include/linux/vs_limit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_limit.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_limit.h b/include/linux/vs_limit.h
+new file mode 100644
+index 0000000..d1304bd
+--- /dev/null
++++ b/include/linux/vs_limit.h
 @@ -0,0 +1,107 @@
 +#ifndef _VX_VS_LIMIT_H
 +#define _VX_VS_LIMIT_H
@@ -9401,9 +9703,11 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_memory.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_memory.h
---- linux-2.6.16-rc5/include/linux/vs_memory.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_memory.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_memory.h b/include/linux/vs_memory.h
+new file mode 100644
+index 0000000..b19afb0
+--- /dev/null
++++ b/include/linux/vs_memory.h
 @@ -0,0 +1,108 @@
 +#ifndef _VX_VS_MEMORY_H
 +#define _VX_VS_MEMORY_H
@@ -9513,10 +9817,12 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_network.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_network.h
---- linux-2.6.16-rc5/include/linux/vs_network.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_network.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,209 @@
+diff --git a/include/linux/vs_network.h b/include/linux/vs_network.h
+new file mode 100644
+index 0000000..28fa781
+--- /dev/null
++++ b/include/linux/vs_network.h
+@@ -0,0 +1,215 @@
 +#ifndef _NX_VS_NETWORK_H
 +#define _NX_VS_NETWORK_H
 +
@@ -9722,13 +10028,21 @@
 +	return 0;
 +}
 +
++static inline void exit_nx_info(struct task_struct *p)
++{
++	if (p->nx_info)
++		release_nx_info(p->nx_info, p);
++}
++
 +
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_sched.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_sched.h
---- linux-2.6.16-rc5/include/linux/vs_sched.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_sched.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_sched.h b/include/linux/vs_sched.h
+new file mode 100644
+index 0000000..fd345f7
+--- /dev/null
++++ b/include/linux/vs_sched.h
 @@ -0,0 +1,93 @@
 +#ifndef _VX_VS_SCHED_H
 +#define _VX_VS_SCHED_H
@@ -9823,9 +10137,11 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vs_socket.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_socket.h
---- linux-2.6.16-rc5/include/linux/vs_socket.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vs_socket.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vs_socket.h b/include/linux/vs_socket.h
+new file mode 100644
+index 0000000..9173bfe
+--- /dev/null
++++ b/include/linux/vs_socket.h
 @@ -0,0 +1,57 @@
 +#ifndef _VX_VS_SOCKET_H
 +#define _VX_VS_SOCKET_H
@@ -9884,10 +10200,12 @@
 +#else
 +#warning duplicate inclusion
 +#endif
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/context.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/context.h
---- linux-2.6.16-rc5/include/linux/vserver/context.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/context.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,162 @@
+diff --git a/include/linux/vserver/context.h b/include/linux/vserver/context.h
+new file mode 100644
+index 0000000..24c7a93
+--- /dev/null
++++ b/include/linux/vserver/context.h
+@@ -0,0 +1,170 @@
 +#ifndef _VX_CONTEXT_H
 +#define _VX_CONTEXT_H
 +
@@ -9927,7 +10245,9 @@
 +#define VXF_STATE_SETUP		(1ULL<<32)
 +#define VXF_STATE_INIT		(1ULL<<33)
 +
-+#define VXF_STATE_HELPER	(1ULL<<36)
++#define VXF_SC_HELPER		(1ULL<<36)
++#define VXF_REBOOT_KILL		(1ULL<<37)
++#define VXF_PERSISTENT		(1ULL<<38)
 +
 +#define VXF_FORK_RSS		(1ULL<<48)
 +#define VXF_PROLIFIC		(1ULL<<49)
@@ -9939,6 +10259,11 @@
 +#define VXF_INIT_SET		(VXF_STATE_SETUP|VXF_STATE_INIT)
 +
 +
++/* context migration */
++
++#define VXM_SET_INIT		0x00000001
++#define VXM_SET_REAPER		0x00000002
++
 +/* context caps */
 +
 +#define VXC_CAP_MASK		0x00000000
@@ -9991,7 +10316,8 @@
 +	uint64_t vx_bcaps;			/* bounding caps (system) */
 +	uint64_t vx_ccaps;			/* context caps (vserver) */
 +
-+	pid_t vx_initpid;			/* PID of fake init process */
++	struct task_struct *vx_reaper;		/* guest reaper process */
++	pid_t vx_initpid;			/* PID of guest init */
 +
 +	wait_queue_head_t vx_wait;		/* context exit waitqueue */
 +
@@ -10035,8 +10361,8 @@
 +extern void claim_vx_info(struct vx_info *, struct task_struct *);
 +extern void release_vx_info(struct vx_info *, struct task_struct *);
 +
-+extern struct vx_info *locate_vx_info(int);
-+extern struct vx_info *locate_or_create_vx_info(int);
++extern struct vx_info *lookup_vx_info(int);
++extern struct vx_info *lookup_or_create_vx_info(int);
 +
 +extern int get_xid_list(int, unsigned int *, int);
 +extern int xid_is_hashed(xid_t);
@@ -10050,10 +10376,12 @@
 +#else	/* _VX_CONTEXT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_CONTEXT_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/context_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/context_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/context_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/context_cmd.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,79 @@
+diff --git a/include/linux/vserver/context_cmd.h b/include/linux/vserver/context_cmd.h
+new file mode 100644
+index 0000000..5a3195f
+--- /dev/null
++++ b/include/linux/vserver/context_cmd.h
+@@ -0,0 +1,84 @@
 +#ifndef _VX_CONTEXT_CMD_H
 +#define _VX_CONTEXT_CMD_H
 +
@@ -10090,7 +10418,12 @@
 +	uint64_t flagword;
 +};
 +
-+#define VCMD_ctx_migrate	VC_CMD(PROCMIG, 1, 0)
++#define VCMD_ctx_migrate_v0	VC_CMD(PROCMIG, 1, 0)
++#define VCMD_ctx_migrate	VC_CMD(PROCMIG, 1, 1)
++
++struct	vcmd_ctx_migrate {
++	uint64_t flagword;
++};
 +
 +#ifdef	__KERNEL__
 +extern int vc_ctx_create(uint32_t, void __user *);
@@ -10133,9 +10466,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/cvirt.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/cvirt.h
---- linux-2.6.16-rc5/include/linux/vserver/cvirt.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/cvirt.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/cvirt.h b/include/linux/vserver/cvirt.h
+new file mode 100644
+index 0000000..204db79
+--- /dev/null
++++ b/include/linux/vserver/cvirt.h
 @@ -0,0 +1,26 @@
 +#ifndef _VX_CVIRT_H
 +#define _VX_CVIRT_H
@@ -10163,9 +10498,11 @@
 +#else	/* _VX_CVIRT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_CVIRT_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/cvirt_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/cvirt_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/cvirt_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/cvirt_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/cvirt_cmd.h b/include/linux/vserver/cvirt_cmd.h
+new file mode 100644
+index 0000000..6720469
+--- /dev/null
++++ b/include/linux/vserver/cvirt_cmd.h
 @@ -0,0 +1,35 @@
 +#ifndef _VX_CVIRT_CMD_H
 +#define _VX_CVIRT_CMD_H
@@ -10202,9 +10539,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CVIRT_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/cvirt_def.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/cvirt_def.h
---- linux-2.6.16-rc5/include/linux/vserver/cvirt_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/cvirt_def.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/cvirt_def.h b/include/linux/vserver/cvirt_def.h
+new file mode 100644
+index 0000000..eae2ec2
+--- /dev/null
++++ b/include/linux/vserver/cvirt_def.h
 @@ -0,0 +1,78 @@
 +#ifndef _VX_CVIRT_DEF_H
 +#define _VX_CVIRT_DEF_H
@@ -10284,10 +10623,12 @@
 +};
 +
 +#endif	/* _VX_CVIRT_DEF_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/debug.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/debug.h
---- linux-2.6.16-rc5/include/linux/vserver/debug.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/debug.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,273 @@
+diff --git a/include/linux/vserver/debug.h b/include/linux/vserver/debug.h
+new file mode 100644
+index 0000000..3defb65
+--- /dev/null
++++ b/include/linux/vserver/debug.h
+@@ -0,0 +1,297 @@
 +#ifndef _VX_DEBUG_H
 +#define _VX_DEBUG_H
 +
@@ -10318,6 +10659,7 @@
 +extern unsigned int vx_debug_nid;
 +extern unsigned int vx_debug_net;
 +extern unsigned int vx_debug_limit;
++extern unsigned int vx_debug_cres;
 +extern unsigned int vx_debug_dlim;
 +extern unsigned int vx_debug_cvirt;
 +extern unsigned int vx_debug_misc;
@@ -10363,6 +10705,7 @@
 +#define vx_debug_nid	0
 +#define vx_debug_net	0
 +#define vx_debug_limit	0
++#define vx_debug_cres	0
 +#define vx_debug_dlim	0
 +#define vx_debug_cvirt	0
 +
@@ -10431,7 +10774,9 @@
 +
 +struct _vx_hist_entry *vxh_advance(void *loc);
 +
-+static inline void __vxh_copy_vxi(struct _vx_hist_entry *entry, struct vx_info *vxi)
++
++static inline
++void	__vxh_copy_vxi(struct _vx_hist_entry *entry, struct vx_info *vxi)
 +{
 +	entry->vxi.ptr = vxi;
 +	if (vxi) {
@@ -10442,97 +10787,117 @@
 +}
 +
 +
-+#define VXH_HERE()	current_text_addr()
++#define __HERE__	current_text_addr()
 +
-+#define __VXH_BODY(__type, __data)		\
++#define __VXH_BODY(__type, __data, __here)	\
 +	struct _vx_hist_entry *entry;		\
 +						\
 +	preempt_disable();			\
-+	entry = vxh_advance(VXH_HERE());	\
++	entry = vxh_advance(__here);		\
 +	__data;					\
 +	entry->type = __type;			\
 +	preempt_enable();
 +
 +
 +	/* pass vxi only */
-+#define __VXH_SIMPLE				\
++
++#define __VXH_SMPL				\
 +	__vxh_copy_vxi(entry, vxi)
 +
-+#define VXH_SIMPLE(__name, __type)		\
-+static inline void __name(struct vx_info *vxi)	\
-+{						\
-+	__VXH_BODY(__type, __VXH_SIMPLE)	\
++static inline
++void	__vxh_smpl(struct vx_info *vxi, int __type, void *__here)
++{
++	__VXH_BODY(__type, __VXH_SMPL, __here)
 +}
 +
 +	/* pass vxi and data (void *) */
++
 +#define __VXH_DATA				\
 +	__vxh_copy_vxi(entry, vxi);		\
 +	entry->sc.data = data
 +
-+#define VXH_DATA(__name, __type)		\
-+static inline					\
-+void __name(struct vx_info *vxi, void *data)	\
-+{						\
-+	__VXH_BODY(__type, __VXH_DATA)		\
++static inline
++void	__vxh_data(struct vx_info *vxi, void *data,
++			int __type, void *__here)
++{
++	__VXH_BODY(__type, __VXH_DATA, __here)
 +}
 +
 +	/* pass vxi and arg (long) */
-+#define __VXH_LARG				\
++
++#define __VXH_LONG				\
 +	__vxh_copy_vxi(entry, vxi);		\
 +	entry->ll.arg = arg
 +
-+#define VXH_LARG(__name, __type)		\
-+static inline					\
-+void __name(struct vx_info *vxi, long arg)	\
-+{						\
-+	__VXH_BODY(__type, __VXH_LARG)		\
++static inline
++void	__vxh_long(struct vx_info *vxi, long arg,
++			int __type, void *__here)
++{
++	__VXH_BODY(__type, __VXH_LONG, __here)
 +}
 +
 +
-+static inline void vxh_throw_oops(void)
++static inline
++void	__vxh_throw_oops(void *__here)
 +{
-+	__VXH_BODY(VXH_THROW_OOPS, {});
++	__VXH_BODY(VXH_THROW_OOPS, {}, __here);
 +	/* prevent further acquisition */
 +	vxh_active = 0;
 +}
 +
-+VXH_SIMPLE(vxh_get_vx_info,	VXH_GET_VX_INFO);
-+VXH_SIMPLE(vxh_put_vx_info,	VXH_PUT_VX_INFO);
-+
-+VXH_DATA(vxh_init_vx_info,	VXH_INIT_VX_INFO);
-+VXH_DATA(vxh_set_vx_info,	VXH_SET_VX_INFO);
-+VXH_DATA(vxh_clr_vx_info,	VXH_CLR_VX_INFO);
 +
-+VXH_DATA(vxh_claim_vx_info,	VXH_CLAIM_VX_INFO);
-+VXH_DATA(vxh_release_vx_info,	VXH_RELEASE_VX_INFO);
++#define vxh_throw_oops()	__vxh_throw_oops(__HERE__);
 +
-+VXH_SIMPLE(vxh_alloc_vx_info,	VXH_ALLOC_VX_INFO);
-+VXH_SIMPLE(vxh_dealloc_vx_info, VXH_DEALLOC_VX_INFO);
++#define __vxh_get_vx_info(v,h)	__vxh_smpl(v, VXH_GET_VX_INFO, h);
++#define __vxh_put_vx_info(v,h)	__vxh_smpl(v, VXH_PUT_VX_INFO, h);
 +
-+VXH_SIMPLE(vxh_hash_vx_info,	VXH_HASH_VX_INFO);
-+VXH_SIMPLE(vxh_unhash_vx_info,	VXH_UNHASH_VX_INFO);
-+
-+VXH_LARG(vxh_loc_vx_info,	VXH_LOC_VX_INFO);
-+VXH_LARG(vxh_lookup_vx_info,	VXH_LOOKUP_VX_INFO);
-+VXH_LARG(vxh_create_vx_info,	VXH_CREATE_VX_INFO);
++#define __vxh_init_vx_info(v,d,h) \
++	__vxh_data(v,d, VXH_INIT_VX_INFO, h);
++#define __vxh_set_vx_info(v,d,h) \
++	__vxh_data(v,d, VXH_SET_VX_INFO, h);
++#define __vxh_clr_vx_info(v,d,h) \
++	__vxh_data(v,d, VXH_CLR_VX_INFO, h);
++
++#define __vxh_claim_vx_info(v,d,h) \
++	__vxh_data(v,d, VXH_CLAIM_VX_INFO, h);
++#define __vxh_release_vx_info(v,d,h) \
++	__vxh_data(v,d, VXH_RELEASE_VX_INFO, h);
++
++#define vxh_alloc_vx_info(v) \
++	__vxh_smpl(v, VXH_ALLOC_VX_INFO, __HERE__);
++#define vxh_dealloc_vx_info(v) \
++	__vxh_smpl(v, VXH_DEALLOC_VX_INFO, __HERE__);
++
++#define vxh_hash_vx_info(v) \
++	__vxh_smpl(v, VXH_HASH_VX_INFO, __HERE__);
++#define vxh_unhash_vx_info(v) \
++	__vxh_smpl(v, VXH_UNHASH_VX_INFO, __HERE__);
++
++#define vxh_loc_vx_info(v,l) \
++	__vxh_long(v,l, VXH_LOC_VX_INFO, __HERE__);
++#define vxh_lookup_vx_info(v,l) \
++	__vxh_long(v,l, VXH_LOOKUP_VX_INFO, __HERE__);
++#define vxh_create_vx_info(v,l) \
++	__vxh_long(v,l, VXH_CREATE_VX_INFO, __HERE__);
 +
 +extern void vxh_dump_history(void);
 +
 +
 +#else  /* CONFIG_VSERVER_HISTORY */
 +
++#define	__HERE__	0
 +
 +#define vxh_throw_oops()		do { } while (0)
 +
-+#define vxh_get_vx_info(v)		do { } while (0)
-+#define vxh_put_vx_info(v)		do { } while (0)
++#define __vxh_get_vx_info(v,h)		do { } while (0)
++#define __vxh_put_vx_info(v,h)		do { } while (0)
 +
-+#define vxh_init_vx_info(v,d)		do { } while (0)
-+#define vxh_set_vx_info(v,d)		do { } while (0)
-+#define vxh_clr_vx_info(v,d)		do { } while (0)
++#define __vxh_init_vx_info(v,d,h)	do { } while (0)
++#define __vxh_set_vx_info(v,d,h)	do { } while (0)
++#define __vxh_clr_vx_info(v,d,h)	do { } while (0)
 +
-+#define vxh_claim_vx_info(v,d)		do { } while (0)
-+#define vxh_release_vx_info(v,d)	do { } while (0)
++#define __vxh_claim_vx_info(v,d,h)	do { } while (0)
++#define __vxh_release_vx_info(v,d,h)	do { } while (0)
 +
 +#define vxh_alloc_vx_info(v)		do { } while (0)
 +#define vxh_dealloc_vx_info(v)		do { } while (0)
@@ -10561,9 +10926,11 @@
 +
 +
 +#endif /* _VX_DEBUG_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/debug_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/debug_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/debug_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/debug_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/debug_cmd.h b/include/linux/vserver/debug_cmd.h
+new file mode 100644
+index 0000000..c0cbd08
+--- /dev/null
++++ b/include/linux/vserver/debug_cmd.h
 @@ -0,0 +1,14 @@
 +#ifndef _VX_DEBUG_CMD_H
 +#define _VX_DEBUG_CMD_H
@@ -10579,9 +10946,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_DEBUG_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/dlimit.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/dlimit.h
---- linux-2.6.16-rc5/include/linux/vserver/dlimit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/dlimit.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/dlimit.h b/include/linux/vserver/dlimit.h
+new file mode 100644
+index 0000000..99c2240
+--- /dev/null
++++ b/include/linux/vserver/dlimit.h
 @@ -0,0 +1,53 @@
 +#ifndef _VX_DLIMIT_H
 +#define _VX_DLIMIT_H
@@ -10636,9 +11005,11 @@
 +#else	/* _VX_DLIMIT_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_DLIMIT_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/dlimit_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/dlimit_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/dlimit_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/dlimit_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/dlimit_cmd.h b/include/linux/vserver/dlimit_cmd.h
+new file mode 100644
+index 0000000..cc7f779
+--- /dev/null
++++ b/include/linux/vserver/dlimit_cmd.h
 @@ -0,0 +1,71 @@
 +#ifndef _VX_DLIMIT_CMD_H
 +#define _VX_DLIMIT_CMD_H
@@ -10711,9 +11082,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_DLIMIT_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/inode.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/inode.h
---- linux-2.6.16-rc5/include/linux/vserver/inode.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/inode.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/inode.h b/include/linux/vserver/inode.h
+new file mode 100644
+index 0000000..a6f60f5
+--- /dev/null
++++ b/include/linux/vserver/inode.h
 @@ -0,0 +1,40 @@
 +#ifndef _VX_INODE_H
 +#define _VX_INODE_H
@@ -10755,9 +11128,11 @@
 +#else	/* _VX_INODE_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_INODE_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/inode_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/inode_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/inode_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/inode_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/inode_cmd.h b/include/linux/vserver/inode_cmd.h
+new file mode 100644
+index 0000000..70d56a8
+--- /dev/null
++++ b/include/linux/vserver/inode_cmd.h
 @@ -0,0 +1,61 @@
 +#ifndef _VX_INODE_CMD_H
 +#define _VX_INODE_CMD_H
@@ -10820,9 +11195,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_INODE_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/legacy.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/legacy.h
---- linux-2.6.16-rc5/include/linux/vserver/legacy.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/legacy.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/legacy.h b/include/linux/vserver/legacy.h
+new file mode 100644
+index 0000000..41afbd9
+--- /dev/null
++++ b/include/linux/vserver/legacy.h
 @@ -0,0 +1,49 @@
 +#ifndef _VX_LEGACY_H
 +#define _VX_LEGACY_H
@@ -10873,9 +11250,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LEGACY_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/limit.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit.h
---- linux-2.6.16-rc5/include/linux/vserver/limit.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/limit.h b/include/linux/vserver/limit.h
+new file mode 100644
+index 0000000..aaaee11
+--- /dev/null
++++ b/include/linux/vserver/limit.h
 @@ -0,0 +1,20 @@
 +#ifndef _VX_LIMIT_H
 +#define _VX_LIMIT_H
@@ -10897,9 +11276,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/limit_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/limit_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/limit_cmd.h b/include/linux/vserver/limit_cmd.h
+new file mode 100644
+index 0000000..b67a309
+--- /dev/null
++++ b/include/linux/vserver/limit_cmd.h
 @@ -0,0 +1,37 @@
 +#ifndef _VX_LIMIT_CMD_H
 +#define _VX_LIMIT_CMD_H
@@ -10938,9 +11319,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/limit_def.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit_def.h
---- linux-2.6.16-rc5/include/linux/vserver/limit_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit_def.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/limit_def.h b/include/linux/vserver/limit_def.h
+new file mode 100644
+index 0000000..a154334
+--- /dev/null
++++ b/include/linux/vserver/limit_def.h
 @@ -0,0 +1,23 @@
 +#ifndef _VX_LIMIT_DEF_H
 +#define _VX_LIMIT_DEF_H
@@ -10965,16 +11348,19 @@
 +
 +
 +#endif	/* _VX_LIMIT_DEF_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/limit_int.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit_int.h
---- linux-2.6.16-rc5/include/linux/vserver/limit_int.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/limit_int.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,75 @@
+diff --git a/include/linux/vserver/limit_int.h b/include/linux/vserver/limit_int.h
+new file mode 100644
+index 0000000..a48d242
+--- /dev/null
++++ b/include/linux/vserver/limit_int.h
+@@ -0,0 +1,76 @@
 +#ifndef _VX_LIMIT_INT_H
 +#define _VX_LIMIT_INT_H
 +
 +
 +#ifdef	__KERNEL__
 +
++#define VXD_RCRES(r)	VXD_CBIT(cres, (r))
 +#define VXD_RLIMIT(r)	VXD_CBIT(limit, (r))
 +
 +extern const char *vlimit_name[NUM_LIMITS];
@@ -10982,7 +11368,7 @@
 +static inline void __vx_acc_cres(struct vx_info *vxi,
 +	int res, int dir, void *_data, char *_file, int _line)
 +{
-+	if (VXD_RLIMIT(res))
++	if (VXD_RCRES(res))
 +		vxlprintk(1, "vx_acc_cres[%5d,%s,%2d]: %5d%s (%p)",
 +			(vxi ? vxi->vx_id : -1), vlimit_name[res], res,
 +			(vxi ? atomic_read(&vxi->limit.rcur[res]) : 0),
@@ -10999,7 +11385,7 @@
 +static inline void __vx_add_cres(struct vx_info *vxi,
 +	int res, int amount, void *_data, char *_file, int _line)
 +{
-+	if (VXD_RLIMIT(res))
++	if (VXD_RCRES(res))
 +		vxlprintk(1, "vx_add_cres[%5d,%s,%2d]: %5d += %5d (%p)",
 +			(vxi ? vxi->vx_id : -1), vlimit_name[res], res,
 +			(vxi ? atomic_read(&vxi->limit.rcur[res]) : 0),
@@ -11044,9 +11430,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_LIMIT_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/namespace.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/namespace.h
---- linux-2.6.16-rc5/include/linux/vserver/namespace.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/namespace.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/namespace.h b/include/linux/vserver/namespace.h
+new file mode 100644
+index 0000000..fb6cdd1
+--- /dev/null
++++ b/include/linux/vserver/namespace.h
 @@ -0,0 +1,15 @@
 +#ifndef _VX_NAMESPACE_H
 +#define _VX_NAMESPACE_H
@@ -11063,17 +11451,21 @@
 +#else	/* _VX_NAMESPACE_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_NAMESPACE_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/namespace_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/namespace_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/namespace_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/namespace_cmd.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,17 @@
+diff --git a/include/linux/vserver/namespace_cmd.h b/include/linux/vserver/namespace_cmd.h
+new file mode 100644
+index 0000000..0b3239a
+--- /dev/null
++++ b/include/linux/vserver/namespace_cmd.h
+@@ -0,0 +1,19 @@
 +#ifndef _VX_NAMESPACE_CMD_H
 +#define _VX_NAMESPACE_CMD_H
 +
 +
 +#define VCMD_enter_namespace	VC_CMD(PROCALT, 1, 0)
 +#define VCMD_cleanup_namespace	VC_CMD(PROCALT, 2, 0)
-+#define VCMD_set_namespace	VC_CMD(PROCALT, 3, 0)
++
++#define VCMD_set_namespace_v0	VC_CMD(PROCALT, 3, 0)
++#define VCMD_set_namespace	VC_CMD(PROCALT, 3, 1)
 +
 +
 +#ifdef	__KERNEL__
@@ -11084,9 +11476,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_NAMESPACE_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/network.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/network.h
---- linux-2.6.16-rc5/include/linux/vserver/network.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/network.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/network.h b/include/linux/vserver/network.h
+new file mode 100644
+index 0000000..1722b16
+--- /dev/null
++++ b/include/linux/vserver/network.h
 @@ -0,0 +1,119 @@
 +#ifndef _VX_NETWORK_H
 +#define _VX_NETWORK_H
@@ -11105,7 +11499,8 @@
 +
 +#define NXF_STATE_SETUP		(1ULL<<32)
 +
-+#define NXF_STATE_HELPER	(1ULL<<36)
++#define NXF_SC_HELPER		(1ULL<<36)
++#define NXF_PERSISTENT		(1ULL<<38)
 +
 +#define NXF_ONE_TIME		(0x0001ULL<<32)
 +
@@ -11160,8 +11555,7 @@
 +#define NXS_SHUTDOWN    0x0100
 +#define NXS_RELEASED    0x8000
 +
-+extern struct nx_info *locate_nx_info(int);
-+extern struct nx_info *locate_or_create_nx_info(int);
++extern struct nx_info *lookup_nx_info(int);
 +
 +extern int get_nid_list(int, unsigned int *, int);
 +extern int nid_is_hashed(nid_t);
@@ -11207,9 +11601,11 @@
 +#else	/* _VX_NETWORK_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_NETWORK_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/network_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/network_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/network_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/network_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/network_cmd.h b/include/linux/vserver/network_cmd.h
+new file mode 100644
+index 0000000..d9802fe
+--- /dev/null
++++ b/include/linux/vserver/network_cmd.h
 @@ -0,0 +1,89 @@
 +#ifndef _VX_NETWORK_CMD_H
 +#define _VX_NETWORK_CMD_H
@@ -11300,9 +11696,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_CONTEXT_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/sched.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/sched.h
---- linux-2.6.16-rc5/include/linux/vserver/sched.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/sched.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/sched.h b/include/linux/vserver/sched.h
+new file mode 100644
+index 0000000..2ef4b99
+--- /dev/null
++++ b/include/linux/vserver/sched.h
 @@ -0,0 +1,26 @@
 +#ifndef _VX_SCHED_H
 +#define _VX_SCHED_H
@@ -11330,9 +11728,11 @@
 +#else	/* _VX_SCHED_H */
 +#warning duplicate inclusion
 +#endif	/* _VX_SCHED_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/sched_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/sched_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/sched_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/sched_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/sched_cmd.h b/include/linux/vserver/sched_cmd.h
+new file mode 100644
+index 0000000..b9e8ac1
+--- /dev/null
++++ b/include/linux/vserver/sched_cmd.h
 @@ -0,0 +1,48 @@
 +#ifndef _VX_SCHED_CMD_H
 +#define _VX_SCHED_CMD_H
@@ -11382,9 +11782,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SCHED_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/sched_def.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/sched_def.h
---- linux-2.6.16-rc5/include/linux/vserver/sched_def.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/sched_def.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/sched_def.h b/include/linux/vserver/sched_def.h
+new file mode 100644
+index 0000000..ee69c9b
+--- /dev/null
++++ b/include/linux/vserver/sched_def.h
 @@ -0,0 +1,39 @@
 +#ifndef _VX_SCHED_DEF_H
 +#define _VX_SCHED_DEF_H
@@ -11425,9 +11827,31 @@
 +};
 +
 +#endif	/* _VX_SCHED_DEF_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/signal_cmd.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/signal_cmd.h
---- linux-2.6.16-rc5/include/linux/vserver/signal_cmd.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/signal_cmd.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/signal.h b/include/linux/vserver/signal.h
+new file mode 100644
+index 0000000..690168e
+--- /dev/null
++++ b/include/linux/vserver/signal.h
+@@ -0,0 +1,14 @@
++#ifndef _VX_SIGNAL_H
++#define _VX_SIGNAL_H
++
++
++#ifdef	__KERNEL__
++
++struct vx_info;
++
++int vx_info_kill(struct vx_info *, int, int);
++
++#endif	/* __KERNEL__ */
++#else	/* _VX_SIGNAL_H */
++#warning duplicate inclusion
++#endif	/* _VX_SIGNAL_H */
+diff --git a/include/linux/vserver/signal_cmd.h b/include/linux/vserver/signal_cmd.h
+new file mode 100644
+index 0000000..a1c71eb
+--- /dev/null
++++ b/include/linux/vserver/signal_cmd.h
 @@ -0,0 +1,26 @@
 +#ifndef _VX_SIGNAL_CMD_H
 +#define _VX_SIGNAL_CMD_H
@@ -11455,9 +11879,11 @@
 +
 +#endif	/* __KERNEL__ */
 +#endif	/* _VX_SIGNAL_CMD_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/switch.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/switch.h
---- linux-2.6.16-rc5/include/linux/vserver/switch.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/switch.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/switch.h b/include/linux/vserver/switch.h
+new file mode 100644
+index 0000000..ddfba94
+--- /dev/null
++++ b/include/linux/vserver/switch.h
 @@ -0,0 +1,98 @@
 +#ifndef _VX_SWITCH_H
 +#define _VX_SWITCH_H
@@ -11557,9 +11983,11 @@
 +#endif	/* __KERNEL__ */
 +
 +#endif	/* _VX_SWITCH_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/linux/vserver/xid.h linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/xid.h
---- linux-2.6.16-rc5/include/linux/vserver/xid.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/linux/vserver/xid.h	2006-02-17 22:18:51 +0100
+diff --git a/include/linux/vserver/xid.h b/include/linux/vserver/xid.h
+new file mode 100644
+index 0000000..2e4349e
+--- /dev/null
++++ b/include/linux/vserver/xid.h
 @@ -0,0 +1,146 @@
 +#ifndef _VX_XID_H
 +#define _VX_XID_H
@@ -11707,9 +12135,10 @@
 +void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
 +
 +#endif /* _VX_XID_H */
-diff -NurpP --minimal linux-2.6.16-rc5/include/net/af_unix.h linux-2.6.16-rc5-vs2.0.2-rc10/include/net/af_unix.h
---- linux-2.6.16-rc5/include/net/af_unix.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/net/af_unix.h	2006-02-17 22:18:51 +0100
+diff --git a/include/net/af_unix.h b/include/net/af_unix.h
+index bfc1779..9dd2fac 100644
+--- a/include/net/af_unix.h
++++ b/include/net/af_unix.h
 @@ -17,9 +17,9 @@ extern spinlock_t unix_table_lock;
  
  extern atomic_t unix_tot_inflight;
@@ -11752,9 +12181,10 @@
  }
  
  #define forall_unix_sockets(i, s) \
-diff -NurpP --minimal linux-2.6.16-rc5/include/net/inet_hashtables.h linux-2.6.16-rc5-vs2.0.2-rc10/include/net/inet_hashtables.h
---- linux-2.6.16-rc5/include/net/inet_hashtables.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/net/inet_hashtables.h	2006-02-17 22:18:51 +0100
+diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
+index 135d80f..1a80498 100644
+--- a/include/net/inet_hashtables.h
++++ b/include/net/inet_hashtables.h
 @@ -272,6 +272,25 @@ static inline int inet_iif(const struct 
  	return ((struct rtable *)skb->dst)->rt_iif;
  }
@@ -11790,9 +12220,10 @@
  		    (sk->sk_family == PF_INET || !ipv6_only_sock(sk)) &&
  		    !sk->sk_bound_dev_if)
  			goto sherry_cache;
-diff -NurpP --minimal linux-2.6.16-rc5/include/net/inet_sock.h linux-2.6.16-rc5-vs2.0.2-rc10/include/net/inet_sock.h
---- linux-2.6.16-rc5/include/net/inet_sock.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/net/inet_sock.h	2006-02-17 22:18:51 +0100
+diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h
+index 883eb52..4824254 100644
+--- a/include/net/inet_sock.h
++++ b/include/net/inet_sock.h
 @@ -115,6 +115,7 @@ struct inet_sock {
  	/* Socket demultiplex comparisons on incoming packets. */
  	__u32			daddr;
@@ -11801,9 +12232,10 @@
  	__u16			dport;
  	__u16			num;
  	__u32			saddr;
-diff -NurpP --minimal linux-2.6.16-rc5/include/net/inet_timewait_sock.h linux-2.6.16-rc5-vs2.0.2-rc10/include/net/inet_timewait_sock.h
---- linux-2.6.16-rc5/include/net/inet_timewait_sock.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/net/inet_timewait_sock.h	2006-02-17 22:18:51 +0100
+diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h
+index 1da294c..4f9f2b0 100644
+--- a/include/net/inet_timewait_sock.h
++++ b/include/net/inet_timewait_sock.h
 @@ -116,6 +116,10 @@ struct inet_timewait_sock {
  #define tw_refcnt		__tw_common.skc_refcnt
  #define tw_hash			__tw_common.skc_hash
@@ -11815,9 +12247,10 @@
  	volatile unsigned char	tw_substate;
  	/* 3 bits hole, try to pack */
  	unsigned char		tw_rcv_wscale;
-diff -NurpP --minimal linux-2.6.16-rc5/include/net/route.h linux-2.6.16-rc5-vs2.0.2-rc10/include/net/route.h
---- linux-2.6.16-rc5/include/net/route.h	2006-02-28 15:03:41 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/net/route.h	2006-02-17 22:18:51 +0100
+diff --git a/include/net/route.h b/include/net/route.h
+index 9c04f15..e9ba7a4 100644
+--- a/include/net/route.h
++++ b/include/net/route.h
 @@ -28,11 +28,14 @@
  #include <net/dst.h>
  #include <net/inetpeer.h>
@@ -11918,9 +12351,10 @@
  		err = __ip_route_output_key(rp, &fl);
  		if (err)
  			return err;
-diff -NurpP --minimal linux-2.6.16-rc5/include/net/sock.h linux-2.6.16-rc5-vs2.0.2-rc10/include/net/sock.h
---- linux-2.6.16-rc5/include/net/sock.h	2006-02-28 15:03:44 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/include/net/sock.h	2006-02-17 22:18:51 +0100
+diff --git a/include/net/sock.h b/include/net/sock.h
+index 3075803..bcdf50d 100644
+--- a/include/net/sock.h
++++ b/include/net/sock.h
 @@ -115,6 +115,10 @@ struct sock_common {
  	atomic_t		skc_refcnt;
  	unsigned int		skc_hash;
@@ -11943,9 +12377,10 @@
  	unsigned char		sk_shutdown : 2,
  				sk_no_check : 2,
  				sk_userlocks : 4;
-diff -NurpP --minimal linux-2.6.16-rc5/ipc/mqueue.c linux-2.6.16-rc5-vs2.0.2-rc10/ipc/mqueue.c
---- linux-2.6.16-rc5/ipc/mqueue.c	2006-02-28 15:03:45 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/ipc/mqueue.c	2006-02-17 22:18:51 +0100
+diff --git a/ipc/mqueue.c b/ipc/mqueue.c
+index fd2e26b..6fc128e 100644
+--- a/ipc/mqueue.c
++++ b/ipc/mqueue.c
 @@ -25,6 +25,8 @@
  #include <linux/netlink.h>
  #include <linux/syscalls.h>
@@ -11981,7 +12416,7 @@
  		   (info->attr.mq_maxmsg * info->attr.mq_msgsize));
  	user = info->user;
  	if (user) {
-+		struct vx_info *vxi = locate_vx_info(user->xid);
++		struct vx_info *vxi = lookup_vx_info(user->xid);
 +
  		spin_lock(&mq_lock);
  		user->mq_bytes -= mq_bytes;
@@ -12001,9 +12436,10 @@
  out_err:
  	dput(dentry);
  
-diff -NurpP --minimal linux-2.6.16-rc5/ipc/msg.c linux-2.6.16-rc5-vs2.0.2-rc10/ipc/msg.c
---- linux-2.6.16-rc5/ipc/msg.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/ipc/msg.c	2006-02-17 22:18:51 +0100
+diff --git a/ipc/msg.c b/ipc/msg.c
+index fbf7570..10459e8 100644
+--- a/ipc/msg.c
++++ b/ipc/msg.c
 @@ -100,6 +100,7 @@ static int newque (key_t key, int msgflg
  
  	msq->q_perm.mode = (msgflg & S_IRWXUGO);
@@ -12022,9 +12458,10 @@
  	return seq_printf(s,
  			  "%10d %10d  %4o  %10lu %10lu %5u %5u %5u %5u %5u %5u %10lu %10lu %10lu\n",
  			  msq->q_perm.key,
-diff -NurpP --minimal linux-2.6.16-rc5/ipc/sem.c linux-2.6.16-rc5-vs2.0.2-rc10/ipc/sem.c
---- linux-2.6.16-rc5/ipc/sem.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/ipc/sem.c	2006-02-17 22:18:51 +0100
+diff --git a/ipc/sem.c b/ipc/sem.c
+index 31fd402..1a68338 100644
+--- a/ipc/sem.c
++++ b/ipc/sem.c
 @@ -179,6 +179,7 @@ static int newary (key_t key, int nsems,
  
  	sma->sem_perm.mode = (semflg & S_IRWXUGO);
@@ -12043,9 +12480,10 @@
  	return seq_printf(s,
  			  "%10d %10d  %4o %10lu %5u %5u %5u %5u %10lu %10lu\n",
  			  sma->sem_perm.key,
-diff -NurpP --minimal linux-2.6.16-rc5/ipc/shm.c linux-2.6.16-rc5-vs2.0.2-rc10/ipc/shm.c
---- linux-2.6.16-rc5/ipc/shm.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/ipc/shm.c	2006-02-17 22:18:51 +0100
+diff --git a/ipc/shm.c b/ipc/shm.c
+index 9162123..918b2ff 100644
+--- a/ipc/shm.c
++++ b/ipc/shm.c
 @@ -30,6 +30,8 @@
  #include <linux/capability.h>
  #include <linux/ptrace.h>
@@ -12060,7 +12498,7 @@
  static void shm_destroy (struct shmid_kernel *shp)
  {
 -	shm_tot -= (shp->shm_segsz + PAGE_SIZE - 1) >> PAGE_SHIFT;
-+	struct vx_info *vxi = locate_vx_info(shp->shm_perm.xid);
++	struct vx_info *vxi = lookup_vx_info(shp->shm_perm.xid);
 +	int numpages = (shp->shm_segsz + PAGE_SIZE - 1) >> PAGE_SHIFT;
 +
 +	vx_ipcshm_sub(vxi, shp, numpages);
@@ -12111,9 +12549,10 @@
  	if (sizeof(size_t) <= sizeof(int))
  		format = SMALL_STRING;
  	else
-diff -NurpP --minimal linux-2.6.16-rc5/ipc/util.c linux-2.6.16-rc5-vs2.0.2-rc10/ipc/util.c
---- linux-2.6.16-rc5/ipc/util.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/ipc/util.c	2006-02-17 22:18:51 +0100
+diff --git a/ipc/util.c b/ipc/util.c
+index 8626219..9de6620 100644
+--- a/ipc/util.c
++++ b/ipc/util.c
 @@ -154,7 +154,9 @@ int ipc_findkey(struct ipc_ids* ids, key
  	 */
  	for (id = 0; id <= max_id; id++) {
@@ -12134,22 +12573,23 @@
  	requested_mode = (flag >> 6) | (flag >> 3) | flag;
  	granted_mode = ipcp->mode;
  	if (current->euid == ipcp->cuid || current->euid == ipcp->uid)
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/Makefile linux-2.6.16-rc5-vs2.0.2-rc10/kernel/Makefile
---- linux-2.6.16-rc5/kernel/Makefile	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/Makefile	2006-02-17 22:18:51 +0100
-@@ -10,6 +10,9 @@ obj-y     = sched.o fork.o exec_domain.o
+diff --git a/kernel/Makefile b/kernel/Makefile
+index 4ae0fbd..2d89af0 100644
+--- a/kernel/Makefile
++++ b/kernel/Makefile
+@@ -10,6 +10,8 @@ obj-y     = sched.o fork.o exec_domain.o
  	    kthread.o wait.o kfifo.o sys_ni.o posix-cpu-timers.o mutex.o \
  	    hrtimer.o
  
-+subdir-y	+= vserver
-+obj-y	  += vserver/vserver.o
++obj-y	  += vserver/
 +
  obj-$(CONFIG_DEBUG_MUTEXES) += mutex-debug.o
  obj-$(CONFIG_FUTEX) += futex.o
  obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/capability.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/capability.c
---- linux-2.6.16-rc5/kernel/capability.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/capability.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/capability.c b/kernel/capability.c
+index bfa3c92..08e5fe7 100644
+--- a/kernel/capability.c
++++ b/kernel/capability.c
 @@ -12,6 +12,7 @@
  #include <linux/module.h>
  #include <linux/security.h>
@@ -12158,9 +12598,10 @@
  #include <asm/uaccess.h>
  
  unsigned securebits = SECUREBITS_DEFAULT; /* systemwide security settings */
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/cpuset.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/cpuset.c
---- linux-2.6.16-rc5/kernel/cpuset.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/cpuset.c	2006-02-18 15:22:55 +0100
+diff --git a/kernel/cpuset.c b/kernel/cpuset.c
+index 12815d3..b6c29ae 100644
+--- a/kernel/cpuset.c
++++ b/kernel/cpuset.c
 @@ -50,6 +50,7 @@
  #include <linux/time.h>
  #include <linux/backing-dev.h>
@@ -12169,9 +12610,10 @@
  
  #include <asm/uaccess.h>
  #include <asm/atomic.h>
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/exit.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/exit.c
---- linux-2.6.16-rc5/kernel/exit.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/exit.c	2006-02-28 15:23:49 +0100
+diff --git a/kernel/exit.c b/kernel/exit.c
+index 531aadc..7428f48 100644
+--- a/kernel/exit.c
++++ b/kernel/exit.c
 @@ -31,6 +31,10 @@
  #include <linux/signal.h>
  #include <linux/cn_proc.h>
@@ -12183,30 +12625,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
-@@ -47,6 +51,11 @@ static void exit_mm(struct task_struct *
- static void __unhash_process(struct task_struct *p)
- {
- 	nr_threads--;
-+	/* tasklist_lock is held */
-+	if (p->vx_info) {
-+		atomic_dec(&p->vx_info->cvirt.nr_threads);
-+		vx_nproc_dec(p);
-+	}
- 	detach_pid(p, PIDTYPE_PID);
- 	detach_pid(p, PIDTYPE_TGID);
- 	if (thread_group_leader(p)) {
-@@ -107,6 +116,10 @@ repeat: 
- 	spin_unlock(&p->proc_lock);
- 	proc_pid_flush(proc_dentry);
- 	release_thread(p);
-+	if (p->vx_info)
-+		release_vx_info(p->vx_info, p);
-+	if (p->nx_info)
-+		release_nx_info(p->nx_info, p);
- 	put_task_struct(p);
- 
- 	p = leader;
-@@ -237,6 +250,7 @@ static void reparent_to_init(void)
+@@ -237,6 +241,7 @@ static void reparent_to_init(void)
  	ptrace_unlink(current);
  	/* Reparent to init */
  	REMOVE_LINKS(current);
@@ -12214,7 +12633,7 @@
  	current->parent = child_reaper;
  	current->real_parent = child_reaper;
  	SET_LINKS(current);
-@@ -396,6 +410,7 @@ static void close_files(struct files_str
+@@ -396,6 +401,7 @@ static void close_files(struct files_str
  				struct file * file = xchg(&fdt->fd[i], NULL);
  				if (file)
  					filp_close(file, files);
@@ -12222,7 +12641,16 @@
  			}
  			i++;
  			set >>= 1;
-@@ -616,6 +631,7 @@ static void forget_original_parent(struc
+@@ -536,7 +542,7 @@ static void exit_mm(struct task_struct *
+ 	mmput(mm);
+ }
+ 
+-static inline void choose_new_parent(task_t *p, task_t *reaper, task_t *child_reaper)
++static inline void choose_new_parent(task_t *p, task_t *reaper)
+ {
+ 	/*
+ 	 * Make sure we're not reparenting to ourselves and that
+@@ -616,10 +622,11 @@ static void forget_original_parent(struc
  	struct task_struct *p, *reaper = father;
  	struct list_head *_p, *_n;
  
@@ -12230,9 +12658,46 @@
  	do {
  		reaper = next_thread(reaper);
  		if (reaper == father) {
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/fork.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/fork.c
---- linux-2.6.16-rc5/kernel/fork.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/fork.c	2006-02-18 15:38:15 +0100
+-			reaper = child_reaper;
++			reaper = vx_child_reaper(father);
+ 			break;
+ 		}
+ 	} while (reaper->exit_state);
+@@ -643,7 +650,7 @@ static void forget_original_parent(struc
+ 
+ 		if (father == p->real_parent) {
+ 			/* reparent with a reaper, real father it's us */
+-			choose_new_parent(p, reaper, child_reaper);
++			choose_new_parent(p, vx_child_reaper(p));
+ 			reparent_thread(p, father, 0);
+ 		} else {
+ 			/* reparent ptraced task to its real parent */
+@@ -664,7 +671,11 @@ static void forget_original_parent(struc
+ 	}
+ 	list_for_each_safe(_p, _n, &father->ptrace_children) {
+ 		p = list_entry(_p,struct task_struct,ptrace_list);
+-		choose_new_parent(p, reaper, child_reaper);
++
++		/* check for reaper context */
++		BUG_ON(p->xid != reaper->xid);
++
++		choose_new_parent(p, reaper);
+ 		reparent_thread(p, father, 1);
+ 	}
+ }
+@@ -858,6 +869,8 @@ fastcall NORET_TYPE void do_exit(long co
+ 	__exit_files(tsk);
+ 	__exit_fs(tsk);
+ 	exit_namespace(tsk);
++	exit_vx_info(tsk);
++	exit_nx_info(tsk);
+ 	exit_thread();
+ 	cpuset_exit(tsk);
+ 	exit_keys(tsk);
+diff --git a/kernel/fork.c b/kernel/fork.c
+index a8eab86..c6a2ba4 100644
+--- a/kernel/fork.c
++++ b/kernel/fork.c
 @@ -44,6 +44,10 @@
  #include <linux/rmap.h>
  #include <linux/acct.h>
@@ -12253,7 +12718,7 @@
  	free_task_struct(tsk);
  }
  EXPORT_SYMBOL(free_task);
-@@ -201,6 +207,8 @@ static inline int dup_mmap(struct mm_str
+@@ -203,6 +209,8 @@ static inline int dup_mmap(struct mm_str
  	mm->free_area_cache = oldmm->mmap_base;
  	mm->cached_hole_size = ~0UL;
  	mm->map_count = 0;
@@ -12262,7 +12727,7 @@
  	cpus_clear(mm->cpu_vm_mask);
  	mm->mm_rb = RB_ROOT;
  	rb_link = &mm->mm_rb.rb_node;
-@@ -212,7 +220,7 @@ static inline int dup_mmap(struct mm_str
+@@ -214,7 +222,7 @@ static inline int dup_mmap(struct mm_str
  
  		if (mpnt->vm_flags & VM_DONTCOPY) {
  			long pages = vma_pages(mpnt);
@@ -12271,7 +12736,7 @@
  			vm_stat_account(mm, mpnt->vm_flags, mpnt->vm_file,
  								-pages);
  			continue;
-@@ -319,8 +327,6 @@ static struct mm_struct * mm_init(struct
+@@ -321,8 +329,6 @@ static struct mm_struct * mm_init(struct
  	INIT_LIST_HEAD(&mm->mmlist);
  	mm->core_waiters = 0;
  	mm->nr_ptes = 0;
@@ -12280,7 +12745,7 @@
  	spin_lock_init(&mm->page_table_lock);
  	rwlock_init(&mm->ioctx_list_lock);
  	mm->ioctx_list = NULL;
-@@ -329,6 +335,7 @@ static struct mm_struct * mm_init(struct
+@@ -331,6 +337,7 @@ static struct mm_struct * mm_init(struct
  
  	if (likely(!mm_alloc_pgd(mm))) {
  		mm->def_flags = 0;
@@ -12288,7 +12753,7 @@
  		return mm;
  	}
  	free_mm(mm);
-@@ -360,6 +367,7 @@ void fastcall __mmdrop(struct mm_struct 
+@@ -362,6 +369,7 @@ void fastcall __mmdrop(struct mm_struct 
  	BUG_ON(mm == &init_mm);
  	mm_free_pgd(mm);
  	destroy_context(mm);
@@ -12296,7 +12761,7 @@
  	free_mm(mm);
  }
  
-@@ -463,6 +471,7 @@ static struct mm_struct *dup_mm(struct t
+@@ -465,6 +473,7 @@ static struct mm_struct *dup_mm(struct t
  		goto fail_nomem;
  
  	memcpy(mm, oldmm, sizeof(*mm));
@@ -12304,7 +12769,7 @@
  
  	if (!mm_init(mm))
  		goto fail_nomem;
-@@ -490,6 +499,7 @@ fail_nocontext:
+@@ -492,6 +501,7 @@ fail_nocontext:
  	 * If init_new_context() failed, we cannot use mmput() to free the mm
  	 * because it calls destroy_context()
  	 */
@@ -12312,7 +12777,7 @@
  	mm_free_pgd(mm);
  	free_mm(mm);
  	return NULL;
-@@ -683,6 +693,8 @@ static struct files_struct *dup_fd(struc
+@@ -685,6 +695,8 @@ static struct files_struct *dup_fd(struc
  		struct file *f = *old_fds++;
  		if (f) {
  			get_file(f);
@@ -12321,7 +12786,7 @@
  		} else {
  			/*
  			 * The fd may be claimed in the fd bitmap but not yet
-@@ -915,6 +927,8 @@ static task_t *copy_process(unsigned lon
+@@ -917,6 +929,8 @@ static task_t *copy_process(unsigned lon
  {
  	int retval;
  	struct task_struct *p = NULL;
@@ -12330,7 +12795,7 @@
  
  	if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
  		return ERR_PTR(-EINVAL);
-@@ -943,12 +957,30 @@ static task_t *copy_process(unsigned lon
+@@ -945,12 +959,30 @@ static task_t *copy_process(unsigned lon
  	if (!p)
  		goto fork_out;
  
@@ -12340,7 +12805,7 @@
 +	/* check vserver memory */
 +	if (p->mm && !(clone_flags & CLONE_VM)) {
 +		if (vx_vmpages_avail(p->mm, p->mm->total_vm))
-+			vx_pages_add(p->mm->mm_vx_info, RLIMIT_AS, p->mm->total_vm);
++			vx_pages_add(p->vx_info, RLIMIT_AS, p->mm->total_vm);
 +		else
 +			goto bad_fork_free;
 +	}
@@ -12362,7 +12827,7 @@
  	}
  
  	atomic_inc(&p->user->__count);
-@@ -1188,6 +1220,18 @@ static task_t *copy_process(unsigned lon
+@@ -1190,6 +1222,18 @@ static task_t *copy_process(unsigned lon
  	nr_threads++;
  	total_forks++;
  	spin_unlock(&current->sighand->siglock);
@@ -12381,19 +12846,20 @@
  	write_unlock_irq(&tasklist_lock);
  	proc_fork_connector(p);
  	return p;
-@@ -1228,6 +1272,9 @@ bad_fork_cleanup_count:
+@@ -1230,6 +1274,9 @@ bad_fork_cleanup_count:
  	put_group_info(p->group_info);
  	atomic_dec(&p->user->processes);
  	free_uid(p->user);
 +bad_fork_cleanup_vm:
 +	if (p->mm && !(clone_flags & CLONE_VM))
-+		vx_pages_sub(p->mm->mm_vx_info, RLIMIT_AS, p->mm->total_vm);
++		vx_pages_sub(p->vx_info, RLIMIT_AS, p->mm->total_vm);
  bad_fork_free:
  	free_task(p);
  fork_out:
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/kthread.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/kthread.c
---- linux-2.6.16-rc5/kernel/kthread.c	2006-01-03 17:30:12 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/kthread.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/kthread.c b/kernel/kthread.c
+index e75950a..c848b20 100644
+--- a/kernel/kthread.c
++++ b/kernel/kthread.c
 @@ -114,7 +114,7 @@ static void keventd_create_kthread(void 
  		create->result = ERR_PTR(pid);
  	} else {
@@ -12403,9 +12869,10 @@
  	}
  	complete(&create->done);
  }
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/posix-cpu-timers.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/posix-cpu-timers.c
---- linux-2.6.16-rc5/kernel/posix-cpu-timers.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/posix-cpu-timers.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
+index 520f6c5..96d7046 100644
+--- a/kernel/posix-cpu-timers.c
++++ b/kernel/posix-cpu-timers.c
 @@ -6,6 +6,7 @@
  #include <linux/posix-timers.h>
  #include <asm/uaccess.h>
@@ -12414,9 +12881,10 @@
  
  static int check_clock(const clockid_t which_clock)
  {
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/posix-timers.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/posix-timers.c
---- linux-2.6.16-rc5/kernel/posix-timers.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/posix-timers.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
+index 216f574..33e4b92 100644
+--- a/kernel/posix-timers.c
++++ b/kernel/posix-timers.c
 @@ -47,6 +47,7 @@
  #include <linux/wait.h>
  #include <linux/workqueue.h>
@@ -12447,9 +12915,10 @@
  		 rtn->tgid != current->tgid ||
  		 (event->sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_SIGNAL))
  		return NULL;
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/printk.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/printk.c
---- linux-2.6.16-rc5/kernel/printk.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/printk.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/printk.c b/kernel/printk.c
+index 13ced0f..bbff973 100644
+--- a/kernel/printk.c
++++ b/kernel/printk.c
 @@ -31,6 +31,7 @@
  #include <linux/security.h>
  #include <linux/bootmem.h>
@@ -12513,9 +12982,10 @@
  		count = len;
  		if (count > log_buf_len)
  			count = log_buf_len;
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/ptrace.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/ptrace.c
---- linux-2.6.16-rc5/kernel/ptrace.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/ptrace.c	2006-02-18 15:22:56 +0100
+diff --git a/kernel/ptrace.c b/kernel/ptrace.c
+index d95a72c..220f567 100644
+--- a/kernel/ptrace.c
++++ b/kernel/ptrace.c
 @@ -18,6 +18,7 @@
  #include <linux/ptrace.h>
  #include <linux/security.h>
@@ -12535,9 +13005,10 @@
  	if (request == PTRACE_ATTACH) {
  		ret = ptrace_attach(child);
  		goto out_put_task_struct;
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/sched.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/sched.c
---- linux-2.6.16-rc5/kernel/sched.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/sched.c	2006-02-18 15:22:56 +0100
+diff --git a/kernel/sched.c b/kernel/sched.c
+index 4d46e90..545c80b 100644
+--- a/kernel/sched.c
++++ b/kernel/sched.c
 @@ -52,6 +52,9 @@
  #include <asm/tlb.h>
  
@@ -12548,7 +13019,7 @@
  
  /*
   * Convert user-nice values [ -20 ... 0 ... 19 ]
-@@ -245,6 +248,10 @@ struct runqueue {
+@@ -238,6 +241,10 @@ struct runqueue {
  	task_t *migration_thread;
  	struct list_head migration_queue;
  #endif
@@ -12559,7 +13030,7 @@
  
  #ifdef CONFIG_SCHEDSTATS
  	/* latency stats */
-@@ -605,6 +612,7 @@ static inline void sched_info_switch(tas
+@@ -598,6 +605,7 @@ static inline void sched_info_switch(tas
   */
  static void dequeue_task(struct task_struct *p, prio_array_t *array)
  {
@@ -12567,7 +13038,7 @@
  	array->nr_active--;
  	list_del(&p->run_list);
  	if (list_empty(array->queue + p->prio))
-@@ -613,6 +621,7 @@ static void dequeue_task(struct task_str
+@@ -606,6 +614,7 @@ static void dequeue_task(struct task_str
  
  static void enqueue_task(struct task_struct *p, prio_array_t *array)
  {
@@ -12575,7 +13046,7 @@
  	sched_info_queued(p);
  	list_add_tail(&p->run_list, array->queue + p->prio);
  	__set_bit(p->prio, array->bitmap);
-@@ -626,11 +635,13 @@ static void enqueue_task(struct task_str
+@@ -619,11 +628,13 @@ static void enqueue_task(struct task_str
   */
  static void requeue_task(struct task_struct *p, prio_array_t *array)
  {
@@ -12589,7 +13060,7 @@
  	list_add(&p->run_list, array->queue + p->prio);
  	__set_bit(p->prio, array->bitmap);
  	array->nr_active++;
-@@ -654,6 +665,7 @@ static inline void enqueue_task_head(str
+@@ -647,6 +658,7 @@ static inline void enqueue_task_head(str
  static int effective_prio(task_t *p)
  {
  	int bonus, prio;
@@ -12597,7 +13068,7 @@
  
  	if (rt_task(p))
  		return p->prio;
-@@ -661,6 +673,11 @@ static int effective_prio(task_t *p)
+@@ -654,6 +666,11 @@ static int effective_prio(task_t *p)
  	bonus = CURRENT_BONUS(p) - MAX_BONUS / 2;
  
  	prio = p->static_prio - bonus;
@@ -12609,7 +13080,7 @@
  	if (prio < MAX_RT_PRIO)
  		prio = MAX_RT_PRIO;
  	if (prio > MAX_PRIO-1)
-@@ -799,19 +816,77 @@ static void activate_task(task_t *p, run
+@@ -792,19 +809,77 @@ static void activate_task(task_t *p, run
  	}
  	p->timestamp = now;
  
@@ -12688,7 +13159,7 @@
  /*
   * resched_task - mark a task 'to be rescheduled now'.
   *
-@@ -1175,6 +1250,12 @@ static int try_to_wake_up(task_t *p, uns
+@@ -1168,6 +1243,12 @@ static int try_to_wake_up(task_t *p, uns
  
  	rq = task_rq_lock(p, &flags);
  	old_state = p->state;
@@ -12701,7 +13172,7 @@
  	if (!(old_state & state))
  		goto out;
  
-@@ -1291,10 +1372,16 @@ out_activate:
+@@ -1284,10 +1365,16 @@ out_activate:
  	 * sleep is handled in a priority-neutral manner, no priority
  	 * boost and no penalty.)
  	 */
@@ -12720,7 +13191,7 @@
  	/*
  	 * Sync wakeups (i.e. those types of wakeups where the waker
  	 * has indicated that it will leave the CPU in short order)
-@@ -1418,6 +1505,7 @@ void fastcall wake_up_new_task(task_t *p
+@@ -1411,6 +1498,7 @@ void fastcall wake_up_new_task(task_t *p
  
  	p->prio = effective_prio(p);
  
@@ -12728,7 +13199,7 @@
  	if (likely(cpu == this_cpu)) {
  		if (!(clone_flags & CLONE_VM)) {
  			/*
-@@ -1429,6 +1517,7 @@ void fastcall wake_up_new_task(task_t *p
+@@ -1422,6 +1510,7 @@ void fastcall wake_up_new_task(task_t *p
  				__activate_task(p, rq);
  			else {
  				p->prio = current->prio;
@@ -12736,7 +13207,7 @@
  				list_add_tail(&p->run_list, &current->run_list);
  				p->array = current->array;
  				p->array->nr_active++;
-@@ -2492,13 +2581,16 @@ unsigned long long current_sched_time(co
+@@ -2485,13 +2574,16 @@ unsigned long long current_sched_time(co
  void account_user_time(struct task_struct *p, cputime_t cputime)
  {
  	struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
@@ -12754,7 +13225,7 @@
  		cpustat->nice = cputime64_add(cpustat->nice, tmp);
  	else
  		cpustat->user = cputime64_add(cpustat->user, tmp);
-@@ -2514,10 +2606,12 @@ void account_system_time(struct task_str
+@@ -2507,10 +2599,12 @@ void account_system_time(struct task_str
  			 cputime_t cputime)
  {
  	struct cpu_usage_stat *cpustat = &kstat_this_cpu.cpustat;
@@ -12767,7 +13238,7 @@
  
  	/* Add system time to cpustat. */
  	tmp = cputime_to_cputime64(cputime);
-@@ -2577,6 +2671,10 @@ void scheduler_tick(void)
+@@ -2570,6 +2664,10 @@ void scheduler_tick(void)
  	if (p == rq->idle) {
  		if (wake_priority_sleeper(rq))
  			goto out;
@@ -12778,7 +13249,7 @@
  		rebalance_tick(cpu, rq, SCHED_IDLE);
  		return;
  	}
-@@ -2609,7 +2707,7 @@ void scheduler_tick(void)
+@@ -2602,7 +2700,7 @@ void scheduler_tick(void)
  		}
  		goto out_unlock;
  	}
@@ -12787,7 +13258,7 @@
  		dequeue_task(p, rq->active);
  		set_tsk_need_resched(p);
  		p->prio = effective_prio(p);
-@@ -2874,6 +2972,10 @@ asmlinkage void __sched schedule(void)
+@@ -2867,6 +2965,10 @@ asmlinkage void __sched schedule(void)
  	unsigned long long now;
  	unsigned long run_time;
  	int cpu, idx, new_prio;
@@ -12798,7 +13269,7 @@
  
  	/*
  	 * Test if we are atomic.  Since do_exit() needs to call into
-@@ -2933,12 +3035,41 @@ need_resched_nonpreemptible:
+@@ -2926,12 +3028,41 @@ need_resched_nonpreemptible:
  				unlikely(signal_pending(prev))))
  			prev->state = TASK_RUNNING;
  		else {
@@ -12841,7 +13312,7 @@
  	cpu = smp_processor_id();
  	if (unlikely(!rq->nr_running)) {
  go_idle:
-@@ -2986,6 +3117,22 @@ go_idle:
+@@ -2979,6 +3110,22 @@ go_idle:
  	queue = array->queue + idx;
  	next = list_entry(queue->next, task_t, run_list);
  
@@ -12864,7 +13335,7 @@
  	if (!rt_task(next) && next->activated > 0) {
  		unsigned long long delta = now - next->timestamp;
  		if (unlikely((long long)(now - next->timestamp) < 0))
-@@ -3541,7 +3688,7 @@ asmlinkage long sys_nice(int increment)
+@@ -3534,7 +3681,7 @@ asmlinkage long sys_nice(int increment)
  		nice = 19;
  
  	if (increment < 0 && !can_nice(current, nice))
@@ -12873,7 +13344,7 @@
  
  	retval = security_task_setnice(current, nice);
  	if (retval)
-@@ -3701,6 +3848,7 @@ recheck:
+@@ -3694,6 +3841,7 @@ recheck:
  	oldprio = p->prio;
  	__setscheduler(p, policy, param->sched_priority);
  	if (array) {
@@ -12881,7 +13352,7 @@
  		__activate_task(p, rq);
  		/*
  		 * Reschedule if we are currently running on this runqueue and
-@@ -6041,6 +6189,9 @@ void __init sched_init(void)
+@@ -6037,6 +6185,9 @@ void __init sched_init(void)
  		INIT_LIST_HEAD(&rq->migration_queue);
  #endif
  		atomic_set(&rq->nr_iowait, 0);
@@ -12891,7 +13362,7 @@
  
  		for (j = 0; j < 2; j++) {
  			array = rq->arrays + j;
-@@ -6110,6 +6261,7 @@ void normalize_rt_tasks(void)
+@@ -6106,6 +6257,7 @@ void normalize_rt_tasks(void)
  			deactivate_task(p, task_rq(p));
  		__setscheduler(p, SCHED_NORMAL, 0);
  		if (array) {
@@ -12899,9 +13370,10 @@
  			__activate_task(p, task_rq(p));
  			resched_task(rq->curr);
  		}
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/signal.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/signal.c
---- linux-2.6.16-rc5/kernel/signal.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/signal.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/signal.c b/kernel/signal.c
+index ea15410..4f5185f 100644
+--- a/kernel/signal.c
++++ b/kernel/signal.c
 @@ -26,6 +26,7 @@
  #include <linux/signal.h>
  #include <linux/audit.h>
@@ -12952,9 +13424,10 @@
  		if (sig_kernel_stop(signr)) {
  			/*
  			 * The default action is to stop all threads in
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/sys.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/sys.c
---- linux-2.6.16-rc5/kernel/sys.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/sys.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/sys.c b/kernel/sys.c
+index f91218a..6084bf4 100644
+--- a/kernel/sys.c
++++ b/kernel/sys.c
 @@ -11,6 +11,7 @@
  #include <linux/mman.h>
  #include <linux/smp_lock.h>
@@ -13189,9 +13662,10 @@
  		return -EPERM;
  	if (resource == RLIMIT_NOFILE && new_rlim.rlim_max > NR_OPEN)
  			return -EPERM;
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/sysctl.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/sysctl.c
---- linux-2.6.16-rc5/kernel/sysctl.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/sysctl.c	2006-02-28 15:24:34 +0100
+diff --git a/kernel/sysctl.c b/kernel/sysctl.c
+index 32b48e8..f81b394 100644
+--- a/kernel/sysctl.c
++++ b/kernel/sysctl.c
 @@ -46,6 +46,7 @@
  #include <linux/syscalls.h>
  #include <linux/nfs_fs.h>
@@ -13200,7 +13674,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/processor.h>
-@@ -86,6 +87,7 @@ static int ngroups_max = NGROUPS_MAX;
+@@ -89,6 +90,7 @@ static int ngroups_max = NGROUPS_MAX;
  #ifdef CONFIG_KMOD
  extern char modprobe_path[];
  #endif
@@ -13208,7 +13682,7 @@
  #ifdef CONFIG_CHR_DEV_SG
  extern int sg_big_buff;
  #endif
-@@ -230,6 +232,7 @@ static ctl_table kern_table[] = {
+@@ -237,6 +239,7 @@ static ctl_table kern_table[] = {
  		.maxlen		= sizeof(system_utsname.sysname),
  		.mode		= 0444,
  		.proc_handler	= &proc_doutsstring,
@@ -13216,7 +13690,7 @@
  		.strategy	= &sysctl_string,
  	},
  	{
-@@ -239,6 +242,7 @@ static ctl_table kern_table[] = {
+@@ -246,6 +249,7 @@ static ctl_table kern_table[] = {
  		.maxlen		= sizeof(system_utsname.release),
  		.mode		= 0444,
  		.proc_handler	= &proc_doutsstring,
@@ -13224,7 +13698,7 @@
  		.strategy	= &sysctl_string,
  	},
  	{
-@@ -248,6 +252,7 @@ static ctl_table kern_table[] = {
+@@ -255,6 +259,7 @@ static ctl_table kern_table[] = {
  		.maxlen		= sizeof(system_utsname.version),
  		.mode		= 0444,
  		.proc_handler	= &proc_doutsstring,
@@ -13232,7 +13706,7 @@
  		.strategy	= &sysctl_string,
  	},
  	{
-@@ -257,6 +262,7 @@ static ctl_table kern_table[] = {
+@@ -264,6 +269,7 @@ static ctl_table kern_table[] = {
  		.maxlen		= sizeof(system_utsname.nodename),
  		.mode		= 0644,
  		.proc_handler	= &proc_doutsstring,
@@ -13240,7 +13714,7 @@
  		.strategy	= &sysctl_string,
  	},
  	{
-@@ -266,6 +272,7 @@ static ctl_table kern_table[] = {
+@@ -273,6 +279,7 @@ static ctl_table kern_table[] = {
  		.maxlen		= sizeof(system_utsname.domainname),
  		.mode		= 0644,
  		.proc_handler	= &proc_doutsstring,
@@ -13248,7 +13722,7 @@
  		.strategy	= &sysctl_string,
  	},
  	{
-@@ -402,6 +409,15 @@ static ctl_table kern_table[] = {
+@@ -409,6 +416,15 @@ static ctl_table kern_table[] = {
  		.strategy	= &sysctl_string,
  	},
  #endif
@@ -13264,7 +13738,7 @@
  #ifdef CONFIG_CHR_DEV_SG
  	{
  		.ctl_name	= KERN_SG_BIG_BUFF,
-@@ -1547,16 +1563,20 @@ static ssize_t proc_writesys(struct file
+@@ -1564,16 +1580,20 @@ static ssize_t proc_writesys(struct file
  int proc_dostring(ctl_table *table, int write, struct file *filp,
  		  void __user *buffer, size_t *lenp, loff_t *ppos)
  {
@@ -13292,7 +13766,7 @@
  	if (write) {
  		len = 0;
  		p = buffer;
-@@ -1567,20 +1587,20 @@ int proc_dostring(ctl_table *table, int 
+@@ -1584,20 +1604,20 @@ int proc_dostring(ctl_table *table, int 
  				break;
  			len++;
  		}
@@ -13321,9 +13795,10 @@
  				return -EFAULT;
  		if (len < *lenp) {
  			if(put_user('\n', ((char __user *) buffer) + len))
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/timer.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/timer.c
---- linux-2.6.16-rc5/kernel/timer.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/timer.c	2006-02-18 15:22:56 +0100
+diff --git a/kernel/timer.c b/kernel/timer.c
+index bf7c419..a709b8a 100644
+--- a/kernel/timer.c
++++ b/kernel/timer.c
 @@ -34,6 +34,8 @@
  #include <linux/cpu.h>
  #include <linux/syscalls.h>
@@ -13333,7 +13808,7 @@
  
  #include <asm/uaccess.h>
  #include <asm/unistd.h>
-@@ -954,12 +956,6 @@ asmlinkage unsigned long sys_alarm(unsig
+@@ -972,12 +974,6 @@ asmlinkage unsigned long sys_alarm(unsig
  
  #endif
  
@@ -13346,7 +13821,7 @@
  
  /**
   * sys_getpid - return the thread group id of the current process
-@@ -972,7 +968,7 @@ asmlinkage unsigned long sys_alarm(unsig
+@@ -990,7 +986,7 @@ asmlinkage unsigned long sys_alarm(unsig
   */
  asmlinkage long sys_getpid(void)
  {
@@ -13355,14 +13830,14 @@
  }
  
  /*
-@@ -1016,9 +1012,23 @@ asmlinkage long sys_getppid(void)
+@@ -1034,9 +1030,23 @@ asmlinkage long sys_getppid(void)
  #endif
  		break;
  	}
 -	return pid;
 +	return vx_map_pid(pid);
-+}
-+
+ }
+ 
 +#ifdef __alpha__
 +
 +/*
@@ -13373,14 +13848,14 @@
 +{
 +	*ppid = sys_getppid();
 +	return sys_getpid();
- }
- 
++}
++
 +#else /* _alpha_ */
 +
  asmlinkage long sys_getuid(void)
  {
  	/* Only we change this so SMP safe */
-@@ -1179,6 +1189,8 @@ asmlinkage long sys_sysinfo(struct sysin
+@@ -1197,6 +1207,8 @@ asmlinkage long sys_sysinfo(struct sysin
  			tp.tv_nsec = tp.tv_nsec - NSEC_PER_SEC;
  			tp.tv_sec++;
  		}
@@ -13389,9 +13864,10 @@
  		val.uptime = tp.tv_sec + (tp.tv_nsec ? 1 : 0);
  
  		val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/user.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/user.c
---- linux-2.6.16-rc5/kernel/user.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/user.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/user.c b/kernel/user.c
+index d9deae4..155084e 100644
+--- a/kernel/user.c
++++ b/kernel/user.c
 @@ -23,8 +23,8 @@
  #define UIDHASH_BITS (CONFIG_BASE_SMALL ? 3 : 8)
  #define UIDHASH_SZ		(1 << UIDHASH_BITS)
@@ -13480,9 +13956,11 @@
  	spin_unlock_irq(&uidhash_lock);
  
  	return 0;
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/Kconfig linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/Kconfig
---- linux-2.6.16-rc5/kernel/vserver/Kconfig	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/Kconfig	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/Kconfig b/kernel/vserver/Kconfig
+new file mode 100644
+index 0000000..2658bc7
+--- /dev/null
++++ b/kernel/vserver/Kconfig
 @@ -0,0 +1,179 @@
 +#
 +# Linux VServer configuration
@@ -13663,9 +14141,11 @@
 +
 +endmenu
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/Makefile linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/Makefile
---- linux-2.6.16-rc5/kernel/vserver/Makefile	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/Makefile	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/Makefile b/kernel/vserver/Makefile
+new file mode 100644
+index 0000000..19cd988
+--- /dev/null
++++ b/kernel/vserver/Makefile
 @@ -0,0 +1,16 @@
 +#
 +# Makefile for the Linux vserver routines.
@@ -13683,10 +14163,12 @@
 +vserver-$(CONFIG_VSERVER_LEGACYNET) += legacynet.o
 +vserver-$(CONFIG_VSERVER_HISTORY) += history.o
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/context.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/context.c
---- linux-2.6.16-rc5/kernel/vserver/context.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/context.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,807 @@
+diff --git a/kernel/vserver/context.c b/kernel/vserver/context.c
+new file mode 100644
+index 0000000..3542996
+--- /dev/null
++++ b/kernel/vserver/context.c
+@@ -0,0 +1,889 @@
 +/*
 + *  linux/kernel/vserver/context.c
 + *
@@ -13721,6 +14203,7 @@
 +#include <linux/vserver/limit_int.h>
 +
 +#include <linux/vs_context.h>
++#include <linux/vs_limit.h>
 +#include <linux/vserver/context_cmd.h>
 +
 +#include <linux/err.h>
@@ -13756,6 +14239,10 @@
 +	new->vx_state = 0;
 +	init_waitqueue_head(&new->vx_wait);
 +
++	/* prepare reaper */
++	get_task_struct(child_reaper);
++	new->vx_reaper = child_reaper;
++
 +	/* rest of init goes here */
 +	vx_info_init_limit(&new->limit);
 +	vx_info_init_sched(&new->sched);
@@ -14078,12 +14565,12 @@
 +}
 +
 +
-+/*	locate_vx_info()
++/*	lookup_vx_info()
 +
 +	* search for a vx_info and get() it
 +	* negative id means current				*/
 +
-+struct vx_info *locate_vx_info(int id)
++struct vx_info *lookup_vx_info(int id)
 +{
 +	struct vx_info *vxi = NULL;
 +
@@ -14113,7 +14600,7 @@
 +
 +#ifdef	CONFIG_VSERVER_LEGACY
 +
-+struct vx_info *locate_or_create_vx_info(int id)
++struct vx_info *lookup_or_create_vx_info(int id)
 +{
 +	int err;
 +
@@ -14175,10 +14662,8 @@
 +	return 0;
 +}
 +
-+void vx_mask_bcaps(struct task_struct *p)
++void vx_mask_bcaps(struct vx_info *vxi, struct task_struct *p)
 +{
-+	struct vx_info *vxi = p->vx_info;
-+
 +	p->cap_effective &= vxi->vx_bcaps;
 +	p->cap_inheritable &= vxi->vx_bcaps;
 +	p->cap_permitted &= vxi->vx_bcaps;
@@ -14260,7 +14745,7 @@
 +			"moved task %p into vxi:%p[#%d]",
 +			p, vxi, vxi->vx_id);
 +
-+		vx_mask_bcaps(p);
++		vx_mask_bcaps(vxi, p);
 +		task_unlock(p);
 +	}
 +out:
@@ -14268,12 +14753,32 @@
 +	return ret;
 +}
 +
++int vx_set_reaper(struct vx_info *vxi, struct task_struct *p)
++{
++	struct task_struct *old_reaper;
++
++	if (!vxi)
++		return -EINVAL;
++
++	vxdprintk(VXD_CBIT(xid, 6),
++		"vx_set_reaper(%p[#%d],%p[#%d,%d])",
++		vxi, vxi->vx_id, p, p->xid, p->pid);
++
++	old_reaper = vxi->vx_reaper;
++	if (old_reaper == p)
++		return 0;
++
++	/* set new child reaper */
++	get_task_struct(p);
++	vxi->vx_reaper = p;
++	put_task_struct(old_reaper);
++	return 0;
++}
++
 +int vx_set_init(struct vx_info *vxi, struct task_struct *p)
 +{
 +	if (!vxi)
 +		return -EINVAL;
-+	if (vxi->vx_initpid)
-+		return -EPERM;
 +
 +	vxdprintk(VXD_CBIT(xid, 6),
 +		"vx_set_init(%p[#%d],%p[#%d,%d,%d])",
@@ -14283,6 +14788,48 @@
 +	return 0;
 +}
 +
++void vx_exit_init(struct vx_info *vxi, struct task_struct *p)
++{
++	vxdprintk(VXD_CBIT(xid, 6),
++		"vx_exit_init(%p[#%d],%p[#%d,%d,%d])",
++		vxi, vxi->vx_id, p, p->xid, p->pid, p->tgid);
++
++	vxi->vx_initpid = 0;
++}
++
++void vx_set_persistent(struct vx_info *vxi)
++{
++	vxdprintk(VXD_CBIT(xid, 6),
++		"vx_set_persistent(%p[#%d])", vxi, vxi->vx_id);
++
++	if (vx_info_flags(vxi, VXF_PERSISTENT, 0)) {
++		get_vx_info(vxi);
++		claim_vx_info(vxi, current);
++	} else {
++		release_vx_info(vxi, current);
++		put_vx_info(vxi);
++	}
++}
++
++
++/*	task must be current or locked		*/
++
++void	exit_vx_info(struct task_struct *p)
++{
++	struct vx_info *vxi = p->vx_info;
++
++	if (vxi) {
++		atomic_dec(&vxi->cvirt.nr_threads);
++		vx_nproc_dec(p);
++
++		if (vxi->vx_initpid == p->tgid)
++			vx_exit_init(vxi, p);
++		if (vxi->vx_reaper == p)
++			vx_set_reaper(vxi, child_reaper);
++		release_vx_info(vxi, p);
++	}
++}
++
 +
 +/* vserver syscall commands below here */
 +
@@ -14322,7 +14869,7 @@
 +	if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RESOURCE))
 +		return -EPERM;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14361,6 +14908,10 @@
 +	/* initial flags */
 +	new_vxi->vx_flags = vc_data.flagword;
 +
++	/* get a reference for persistent contexts */
++	if ((vc_data.flagword & VXF_PERSISTENT))
++		vx_set_persistent(new_vxi);
++
 +	vs_state_change(new_vxi, VSC_STARTUP);
 +	ret = new_vxi->vx_id;
 +	vx_migrate_task(current, new_vxi);
@@ -14372,10 +14923,13 @@
 +
 +int vc_ctx_migrate(uint32_t id, void __user *data)
 +{
++	struct vcmd_ctx_migrate vc_data = { .flagword = 0 };
 +	struct vx_info *vxi;
 +
 +	if (!capable(CAP_SYS_ADMIN))
 +		return -EPERM;
++	if (data && copy_from_user (&vc_data, data, sizeof(vc_data)))
++		return -EFAULT;
 +
 +	/* dirty hack until Spectator becomes a cap */
 +	if (id == 1) {
@@ -14383,10 +14937,14 @@
 +		return 0;
 +	}
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +	vx_migrate_task(current, vxi);
++	if (vc_data.flagword & VXM_SET_INIT)
++		vx_set_init(vxi, current);
++	if (vc_data.flagword & VXM_SET_REAPER)
++		vx_set_reaper(vxi, current);
 +	put_vx_info(vxi);
 +	return 0;
 +}
@@ -14400,7 +14958,7 @@
 +	if (!capable(CAP_SYS_ADMIN))
 +		return -EPERM;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14427,7 +14985,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14435,14 +14993,20 @@
 +	mask = vx_mask_mask(vc_data.mask, vxi->vx_flags, VXF_ONE_TIME);
 +	trigger = (mask & vxi->vx_flags) ^ (mask & vc_data.flagword);
 +
-+	if (trigger & VXF_STATE_SETUP)
-+		vx_mask_bcaps(current);
-+	if (trigger & VXF_STATE_INIT)
-+		if (vxi == current->vx_info)
++	if (vxi == current->vx_info) {
++		if (trigger & VXF_STATE_SETUP)
++			vx_mask_bcaps(vxi, current);
++		if (trigger & VXF_STATE_INIT) {
 +			vx_set_init(vxi, current);
++			vx_set_reaper(vxi, current);
++		}
++	}
 +
 +	vxi->vx_flags = vx_mask_flags(vxi->vx_flags,
 +		vc_data.flagword, mask);
++	if (trigger & VXF_PERSISTENT)
++		vx_set_persistent(vxi);
++
 +	put_vx_info(vxi);
 +	return 0;
 +}
@@ -14455,7 +15019,7 @@
 +	if (!capable(CAP_SYS_ADMIN))
 +		return -EPERM;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14479,7 +15043,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14494,9 +15058,11 @@
 +
 +EXPORT_SYMBOL_GPL(free_vx_info);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/cvirt.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/cvirt.c
---- linux-2.6.16-rc5/kernel/vserver/cvirt.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/cvirt.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/cvirt.c b/kernel/vserver/cvirt.c
+new file mode 100644
+index 0000000..4805303
+--- /dev/null
++++ b/kernel/vserver/cvirt.c
 @@ -0,0 +1,259 @@
 +/*
 + *  linux/kernel/vserver/cvirt.c
@@ -14722,7 +15288,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14742,7 +15308,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -14757,9 +15323,11 @@
 +	put_vx_info(vxi);
 +	return (name ? 0 : -EFAULT);
 +}
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/cvirt_init.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/cvirt_init.h
---- linux-2.6.16-rc5/kernel/vserver/cvirt_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/cvirt_init.h	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/cvirt_init.h b/kernel/vserver/cvirt_init.h
+new file mode 100644
+index 0000000..d2e6d47
+--- /dev/null
++++ b/kernel/vserver/cvirt_init.h
 @@ -0,0 +1,83 @@
 +
 +#include <linux/config.h>
@@ -14796,8 +15364,8 @@
 +	cvirt->load[0] = 0;
 +	cvirt->load[1] = 0;
 +	cvirt->load[2] = 0;
-+
 +	atomic_set(&cvirt->total_forks, 0);
++
 +	spin_lock_init(&cvirt->syslog.logbuf_lock);
 +	init_waitqueue_head(&cvirt->syslog.log_wait);
 +	cvirt->syslog.log_start = 0;
@@ -14844,9 +15412,11 @@
 +	return;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/cvirt_proc.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/cvirt_proc.h
---- linux-2.6.16-rc5/kernel/vserver/cvirt_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/cvirt_proc.h	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/cvirt_proc.h b/kernel/vserver/cvirt_proc.h
+new file mode 100644
+index 0000000..9143c2d
+--- /dev/null
++++ b/kernel/vserver/cvirt_proc.h
 @@ -0,0 +1,92 @@
 +#ifndef _VX_CVIRT_PROC_H
 +#define _VX_CVIRT_PROC_H
@@ -14940,9 +15510,11 @@
 +}
 +
 +#endif	/* _VX_CVIRT_PROC_H */
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/dlimit.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/dlimit.c
---- linux-2.6.16-rc5/kernel/vserver/dlimit.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/dlimit.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/dlimit.c b/kernel/vserver/dlimit.c
+new file mode 100644
+index 0000000..6978817
+--- /dev/null
++++ b/kernel/vserver/dlimit.c
 @@ -0,0 +1,552 @@
 +/*
 + *  linux/kernel/vserver/dlimit.c
@@ -15496,10 +16068,12 @@
 +EXPORT_SYMBOL_GPL(locate_dl_info);
 +EXPORT_SYMBOL_GPL(rcu_free_dl_info);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/helper.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/helper.c
---- linux-2.6.16-rc5/kernel/vserver/helper.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/helper.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,174 @@
+diff --git a/kernel/vserver/helper.c b/kernel/vserver/helper.c
+new file mode 100644
+index 0000000..d9a38be
+--- /dev/null
++++ b/kernel/vserver/helper.c
+@@ -0,0 +1,200 @@
 +/*
 + *  linux/kernel/vserver/helper.c
 + *
@@ -15518,6 +16092,7 @@
 +#include <linux/reboot.h>
 +#include <linux/vs_context.h>
 +#include <linux/vs_network.h>
++#include <linux/vserver/signal.h>
 +
 +#include <asm/uaccess.h>
 +#include <asm/unistd.h>
@@ -15554,7 +16129,7 @@
 + *      envp [*] = type-specific parameters
 + */
 +
-+long vs_reboot(unsigned int cmd, void * arg)
++long vs_reboot_helper(struct vx_info *vxi, int cmd, void *arg)
 +{
 +	char id_buf[8], cmd_buf[16];
 +	char uid_buf[16], pid_buf[16];
@@ -15565,7 +16140,7 @@
 +			"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
 +			uid_buf, pid_buf, cmd_buf, 0};
 +
-+	snprintf(id_buf, sizeof(id_buf)-1, "%d", vx_current_xid());
++	snprintf(id_buf, sizeof(id_buf)-1, "%d", vxi->vx_id);
 +
 +	snprintf(cmd_buf, sizeof(cmd_buf)-1, "VS_CMD=%08x", cmd);
 +	snprintf(uid_buf, sizeof(uid_buf)-1, "VS_UID=%d", current->uid);
@@ -15601,6 +16176,31 @@
 +}
 +
 +
++long vs_reboot(unsigned int cmd, void * arg)
++{
++	struct vx_info *vxi = current->vx_info;
++	long ret = 0;
++
++	vxdprintk(VXD_CBIT(misc, 5),
++		"vs_reboot(%p[#%d],%d)",
++		vxi, vxi?vxi->vx_id:0, cmd);
++	if (vx_info_flags(vxi, VXF_REBOOT_KILL, 0)) {
++		switch (cmd) {
++		case LINUX_REBOOT_CMD_RESTART:
++		case LINUX_REBOOT_CMD_HALT:
++		case LINUX_REBOOT_CMD_POWER_OFF:
++			vx_info_kill(vxi, 0, SIGKILL);
++			vx_info_kill(vxi, 1, SIGKILL);
++		default:
++			break;
++		}
++	} else {
++		ret = vs_reboot_helper(vxi, cmd, arg);
++	}
++	return ret;
++}
++
++
 +/*
 + *      argv [0] = vshelper_path;
 + *      argv [1] = action: "startup", "shutdown"
@@ -15616,7 +16216,7 @@
 +	char *envp[] = {"HOME=/", "TERM=linux",
 +			"PATH=/sbin:/usr/sbin:/bin:/usr/bin", cmd_buf, 0};
 +
-+	if (!vx_info_flags(vxi, VXF_STATE_HELPER, 0))
++	if (!vx_info_flags(vxi, VXF_SC_HELPER, 0))
 +		return 0;
 +
 +	snprintf(id_buf, sizeof(id_buf)-1, "%d", vxi->vx_id);
@@ -15653,7 +16253,7 @@
 +	char *envp[] = {"HOME=/", "TERM=linux",
 +			"PATH=/sbin:/usr/sbin:/bin:/usr/bin", cmd_buf, 0};
 +
-+	if (!nx_info_flags(nxi, NXF_STATE_HELPER, 0))
++	if (!nx_info_flags(nxi, NXF_SC_HELPER, 0))
 +		return 0;
 +
 +	snprintf(id_buf, sizeof(id_buf)-1, "%d", nxi->nx_id);
@@ -15674,9 +16274,11 @@
 +	return 0;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/history.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/history.c
---- linux-2.6.16-rc5/kernel/vserver/history.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/history.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/history.c b/kernel/vserver/history.c
+new file mode 100644
+index 0000000..79610c0
+--- /dev/null
++++ b/kernel/vserver/history.c
 @@ -0,0 +1,184 @@
 +/*
 + *  kernel/vserver/history.c
@@ -15862,9 +16464,11 @@
 +
 +EXPORT_SYMBOL_GPL(vxh_advance);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/init.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/init.c
---- linux-2.6.16-rc5/kernel/vserver/init.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/init.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/init.c b/kernel/vserver/init.c
+new file mode 100644
+index 0000000..d2e300e
+--- /dev/null
++++ b/kernel/vserver/init.c
 @@ -0,0 +1,44 @@
 +/*
 + *  linux/kernel/init.c
@@ -15910,9 +16514,11 @@
 +module_init(init_vserver);
 +module_exit(exit_vserver);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/inode.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/inode.c
---- linux-2.6.16-rc5/kernel/vserver/inode.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/inode.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/inode.c b/kernel/vserver/inode.c
+new file mode 100644
+index 0000000..fe7f6a5
+--- /dev/null
++++ b/kernel/vserver/inode.c
 @@ -0,0 +1,369 @@
 +/*
 + *  linux/kernel/vserver/inode.c
@@ -16283,10 +16889,12 @@
 +
 +EXPORT_SYMBOL_GPL(vx_propagate_xid);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/legacy.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/legacy.c
---- linux-2.6.16-rc5/kernel/vserver/legacy.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/legacy.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,108 @@
+diff --git a/kernel/vserver/legacy.c b/kernel/vserver/legacy.c
+new file mode 100644
+index 0000000..cd87ccd
+--- /dev/null
++++ b/kernel/vserver/legacy.c
+@@ -0,0 +1,111 @@
 +/*
 + *  linux/kernel/vserver/legacy.c
 + *
@@ -16310,14 +16918,17 @@
 +#include <asm/uaccess.h>
 +
 +
++extern int vx_set_init(struct vx_info *, struct task_struct *);
 +
 +static int vx_set_initpid(struct vx_info *vxi, int pid)
 +{
-+	if (vxi->vx_initpid)
-+		return -EPERM;
++	struct task_struct *init;
 +
-+	vxi->vx_initpid = pid;
-+	return 0;
++	init = find_task_by_real_pid(pid);
++	if (!init)
++		return -ESRCH;
++
++	return vx_set_init(vxi, init);
 +}
 +
 +int vc_new_s_context(uint32_t ctx, void __user *data)
@@ -16362,9 +16973,9 @@
 +		return -EINVAL;
 +
 +	if ((ctx == VX_DYNAMIC_ID) || (ctx < MIN_D_CONTEXT))
-+		new_vxi = locate_or_create_vx_info(ctx);
++		new_vxi = lookup_or_create_vx_info(ctx);
 +	else
-+		new_vxi = locate_vx_info(ctx);
++		new_vxi = lookup_vx_info(ctx);
 +
 +	if (!new_vxi)
 +		return -EINVAL;
@@ -16395,9 +17006,11 @@
 +	return ret;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/legacynet.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/legacynet.c
---- linux-2.6.16-rc5/kernel/vserver/legacynet.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/legacynet.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/legacynet.c b/kernel/vserver/legacynet.c
+new file mode 100644
+index 0000000..2df0af9
+--- /dev/null
++++ b/kernel/vserver/legacynet.c
 @@ -0,0 +1,85 @@
 +
 +/*
@@ -16484,9 +17097,11 @@
 +}
 +
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/limit.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/limit.c
---- linux-2.6.16-rc5/kernel/vserver/limit.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/limit.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/limit.c b/kernel/vserver/limit.c
+new file mode 100644
+index 0000000..435ef51
+--- /dev/null
++++ b/kernel/vserver/limit.c
 @@ -0,0 +1,177 @@
 +/*
 + *  linux/kernel/vserver/limit.c
@@ -16571,7 +17186,7 @@
 +	if (!is_valid_rlimit(vc_data.id))
 +		return -ENOTSUPP;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -16597,7 +17212,7 @@
 +	if (!is_valid_rlimit(vc_data.id))
 +		return -ENOTSUPP;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -16665,9 +17280,11 @@
 +	return;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/limit_init.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/limit_init.h
---- linux-2.6.16-rc5/kernel/vserver/limit_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/limit_init.h	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/limit_init.h b/kernel/vserver/limit_init.h
+new file mode 100644
+index 0000000..74599e9
+--- /dev/null
++++ b/kernel/vserver/limit_init.h
 @@ -0,0 +1,34 @@
 +
 +#include <linux/config.h>
@@ -16703,9 +17320,11 @@
 +#endif
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/limit_proc.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/limit_proc.h
---- linux-2.6.16-rc5/kernel/vserver/limit_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/limit_proc.h	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/limit_proc.h b/kernel/vserver/limit_proc.h
+new file mode 100644
+index 0000000..f318277
+--- /dev/null
++++ b/kernel/vserver/limit_proc.h
 @@ -0,0 +1,58 @@
 +#ifndef _VX_LIMIT_PROC_H
 +#define _VX_LIMIT_PROC_H
@@ -16765,9 +17384,11 @@
 +#endif	/* _VX_LIMIT_PROC_H */
 +
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/namespace.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/namespace.c
---- linux-2.6.16-rc5/kernel/vserver/namespace.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/namespace.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/namespace.c b/kernel/vserver/namespace.c
+new file mode 100644
+index 0000000..a40e0e8
+--- /dev/null
++++ b/kernel/vserver/namespace.c
 @@ -0,0 +1,123 @@
 +/*
 + *  linux/kernel/vserver/namespace.c
@@ -16827,7 +17448,7 @@
 +	if (!vx_check(0, VX_ADMIN))
 +		return -ENOSYS;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -16873,11 +17494,11 @@
 +	struct vx_info *vxi;
 +	int ret;
 +
-+	if (vx_check(0, VX_ADMIN|VX_WATCH))
-+		return -ENOSYS;
++	vxi = lookup_vx_info(id);
++	if (!vxi)
++		return -ESRCH;
 +
 +	task_lock(current);
-+	vxi = get_vx_info(current->vx_info);
 +	fs = current->fs;
 +	atomic_inc(&fs->count);
 +	ns = current->namespace;
@@ -16892,10 +17513,12 @@
 +	return ret;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/network.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/network.c
---- linux-2.6.16-rc5/kernel/vserver/network.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/network.c	2006-02-18 19:45:38 +0100
-@@ -0,0 +1,766 @@
+diff --git a/kernel/vserver/network.c b/kernel/vserver/network.c
+new file mode 100644
+index 0000000..b5f3578
+--- /dev/null
++++ b/kernel/vserver/network.c
+@@ -0,0 +1,784 @@
 +/*
 + *  linux/kernel/vserver/network.c
 + *
@@ -17180,12 +17803,12 @@
 +
 +#endif
 +
-+/*	locate_nx_info()
++/*	lookup_nx_info()
 +
 +	* search for a nx_info and get() it
 +	* negative id means current				*/
 +
-+struct nx_info *locate_nx_info(int id)
++struct nx_info *lookup_nx_info(int id)
 +{
 +	struct nx_info *nxi = NULL;
 +
@@ -17385,6 +18008,17 @@
 +
 +#endif /* CONFIG_INET */
 +
++void nx_set_persistent(struct nx_info *nxi)
++{
++	if (nx_info_flags(nxi, NXF_PERSISTENT, 0)) {
++		get_nx_info(nxi);
++		claim_nx_info(nxi, current);
++	} else {
++		release_nx_info(nxi, current);
++		put_nx_info(nxi);
++	}
++}
++
 +/* vserver syscall commands below here */
 +
 +/* taks nid and nx_info functions */
@@ -17408,7 +18042,7 @@
 +		read_unlock(&tasklist_lock);
 +	}
 +	else
-+		nid = current->nid;
++		nid = nx_current_nid();
 +	return nid;
 +}
 +
@@ -17423,7 +18057,7 @@
 +	if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RESOURCE))
 +		return -EPERM;
 +
-+	nxi = locate_nx_info(id);
++	nxi = lookup_nx_info(id);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17461,6 +18095,10 @@
 +	/* initial flags */
 +	new_nxi->nx_flags = vc_data.flagword;
 +
++	/* get a reference for persistent contexts */
++	if ((vc_data.flagword & NXF_PERSISTENT))
++		nx_set_persistent(new_nxi);
++
 +	vs_net_change(new_nxi, VSC_NETUP);
 +	ret = new_nxi->nx_id;
 +	nx_migrate_task(current, new_nxi);
@@ -17477,7 +18115,7 @@
 +	if (!capable(CAP_SYS_ADMIN))
 +		return -EPERM;
 +
-+	nxi = locate_nx_info(id);
++	nxi = lookup_nx_info(id);
 +	if (!nxi)
 +		return -ESRCH;
 +	nx_migrate_task(current, nxi);
@@ -17506,7 +18144,7 @@
 +		break;
 +	}
 +
-+	nxi = locate_nx_info(nid);
++	nxi = lookup_nx_info(nid);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17548,7 +18186,7 @@
 +	if (data && copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	nxi = locate_nx_info(nid);
++	nxi = lookup_nx_info(nid);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17574,7 +18212,7 @@
 +	if (!capable(CAP_SYS_ADMIN))
 +		return -EPERM;
 +
-+	nxi = locate_nx_info(id);
++	nxi = lookup_nx_info(id);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17601,7 +18239,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	nxi = locate_nx_info(id);
++	nxi = lookup_nx_info(id);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17611,6 +18249,9 @@
 +
 +	nxi->nx_flags = vx_mask_flags(nxi->nx_flags,
 +		vc_data.flagword, mask);
++	if (trigger & NXF_PERSISTENT)
++		nx_set_persistent(nxi);
++
 +	put_nx_info(nxi);
 +	return 0;
 +}
@@ -17623,7 +18264,7 @@
 +	if (!capable(CAP_SYS_ADMIN))
 +		return -EPERM;
 +
-+	nxi = locate_nx_info(id);
++	nxi = lookup_nx_info(id);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17646,7 +18287,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	nxi = locate_nx_info(id);
++	nxi = lookup_nx_info(id);
 +	if (!nxi)
 +		return -ESRCH;
 +
@@ -17662,10 +18303,12 @@
 +EXPORT_SYMBOL_GPL(free_nx_info);
 +EXPORT_SYMBOL_GPL(unhash_nx_info);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/proc.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/proc.c
---- linux-2.6.16-rc5/kernel/vserver/proc.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/proc.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,862 @@
+diff --git a/kernel/vserver/proc.c b/kernel/vserver/proc.c
+new file mode 100644
+index 0000000..8c196d0
+--- /dev/null
++++ b/kernel/vserver/proc.c
+@@ -0,0 +1,864 @@
 +/*
 + *  linux/kernel/vserver/proc.c
 + *
@@ -17744,7 +18387,7 @@
 +	struct vx_info *vxi;
 +	int length;
 +
-+	vxi = locate_vx_info(vid);
++	vxi = lookup_vx_info(vid);
 +	if (!vxi)
 +		return 0;
 +	length = sprintf(buffer,
@@ -17764,7 +18407,7 @@
 +	struct vx_info *vxi;
 +	int length;
 +
-+	vxi = locate_vx_info(vid);
++	vxi = lookup_vx_info(vid);
 +	if (!vxi)
 +		return 0;
 +	length = sprintf(buffer,
@@ -17790,7 +18433,7 @@
 +	struct vx_info *vxi;
 +	int length;
 +
-+	vxi = locate_vx_info(vid);
++	vxi = lookup_vx_info(vid);
 +	if (!vxi)
 +		return 0;
 +	length = vx_info_proc_limit(&vxi->limit, buffer);
@@ -17803,7 +18446,7 @@
 +	struct vx_info *vxi;
 +	int length;
 +
-+	vxi = locate_vx_info(vid);
++	vxi = lookup_vx_info(vid);
 +	if (!vxi)
 +		return 0;
 +	length = vx_info_proc_sched(&vxi->sched, buffer);
@@ -17816,7 +18459,7 @@
 +	struct vx_info *vxi;
 +	int length;
 +
-+	vxi = locate_vx_info(vid);
++	vxi = lookup_vx_info(vid);
 +	if (!vxi)
 +		return 0;
 +	vx_update_load(vxi);
@@ -17830,7 +18473,7 @@
 +	struct vx_info *vxi;
 +	int length;
 +
-+	vxi = locate_vx_info(vid);
++	vxi = lookup_vx_info(vid);
 +	if (!vxi)
 +		return 0;
 +	length = vx_info_proc_cacct(&vxi->cacct, buffer);
@@ -17859,7 +18502,7 @@
 +	struct nx_info *nxi;
 +	int length, i;
 +
-+	nxi = locate_nx_info(vid);
++	nxi = lookup_nx_info(vid);
 +	if (!nxi)
 +		return 0;
 +	length = sprintf(buffer,
@@ -17883,7 +18526,7 @@
 +	struct nx_info *nxi;
 +	int length;
 +
-+	nxi = locate_nx_info(vid);
++	nxi = lookup_nx_info(vid);
 +	if (!nxi)
 +		return 0;
 +	length = sprintf(buffer,
@@ -18221,7 +18864,7 @@
 +	xid = atovid(name, len);
 +	if (xid < 0)
 +		goto out;
-+	vxi = locate_vx_info(xid);
++	vxi = lookup_vx_info(xid);
 +	if (!vxi)
 +		goto out;
 +
@@ -18232,7 +18875,7 @@
 +	if (!inode)
 +		goto out_release;
 +
-+	inode->i_mode = S_IFDIR|S_IRUGO;
++	inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
 +	inode->i_op = &proc_vid_inode_operations;
 +	inode->i_fop = &proc_vid_file_operations;
 +	inode->i_nlink = 2;
@@ -18287,7 +18930,7 @@
 +	nid = atovid(name, len);
 +	if (nid < 0)
 +		goto out;
-+	nxi = locate_nx_info(nid);
++	nxi = lookup_nx_info(nid);
 +	if (!nxi)
 +		goto out;
 +
@@ -18298,7 +18941,7 @@
 +	if (!inode)
 +		goto out_release;
 +
-+	inode->i_mode = S_IFDIR|S_IRUGO;
++	inode->i_mode = S_IFDIR|S_IRUGO|S_IXUGO;
 +	inode->i_op = &proc_vid_inode_operations;
 +	inode->i_fop = &proc_vid_file_operations;
 +	inode->i_nlink = 2;
@@ -18393,7 +19036,7 @@
 +{
 +	unsigned int nid_array[PROC_MAXVIDS];
 +	char buf[PROC_NUMBUF];
-+	unsigned int nr = filp->f_pos-3;
++	unsigned int nr = filp->f_pos-2;
 +	unsigned int nr_nids, i;
 +	ino_t ino;
 +
@@ -18415,18 +19058,10 @@
 +	case 2:
 +		ino = fake_ino(0, PROC_NID_INFO);
 +		if (filldir(dirent, "info", 4,
-+			filp->f_pos, ino, DT_LNK) < 0)
++			filp->f_pos, ino, DT_REG) < 0)
 +			return 0;
 +		filp->f_pos++;
 +		/* fall through */
-+	case 3:
-+		if (vx_current_xid() > 1) {
-+			ino = fake_ino(1, PROC_NID_INO);
-+			if (filldir(dirent, "current", 7,
-+				filp->f_pos, ino, DT_LNK) < 0)
-+				return 0;
-+		}
-+		filp->f_pos++;
 +	}
 +
 +	nr_nids = get_nid_list(nr, nid_array, PROC_MAXVIDS);
@@ -18488,18 +19123,24 @@
 +	char * orig = buffer;
 +
 +	buffer += sprintf (buffer,"XID:\t%d\n", vx_task_xid(p));
++	if (vx_flags(VXF_INFO_HIDE, 0))
++		goto out;
++
 +	vxi = task_get_vx_info(p);
-+	if (vxi && !vx_flags(VXF_INFO_HIDE, 0)) {
-+		buffer += sprintf (buffer,"BCaps:\t%016llx\n"
-+			,(unsigned long long)vxi->vx_bcaps);
-+		buffer += sprintf (buffer,"CCaps:\t%016llx\n"
-+			,(unsigned long long)vxi->vx_ccaps);
-+		buffer += sprintf (buffer,"CFlags:\t%016llx\n"
-+			,(unsigned long long)vxi->vx_flags);
-+		buffer += sprintf (buffer,"CIPid:\t%d\n"
-+			,vxi->vx_initpid);
-+	}
++	if (!vxi)
++		goto out;
++
++	buffer += sprintf (buffer,"BCaps:\t%016llx\n"
++		,(unsigned long long)vxi->vx_bcaps);
++	buffer += sprintf (buffer,"CCaps:\t%016llx\n"
++		,(unsigned long long)vxi->vx_ccaps);
++	buffer += sprintf (buffer,"CFlags:\t%016llx\n"
++		,(unsigned long long)vxi->vx_flags);
++	buffer += sprintf (buffer,"CIPid:\t%d\n"
++		,vxi->vx_initpid);
++
 +	put_vx_info(vxi);
++out:
 +	return buffer - orig;
 +}
 +
@@ -18508,29 +19149,35 @@
 +{
 +	struct nx_info *nxi;
 +	char * orig = buffer;
++	int i;
 +
 +	buffer += sprintf (buffer,"NID:\t%d\n", nx_task_nid(p));
++	if (vx_flags(VXF_INFO_HIDE, 0))
++		goto out;
 +	nxi = task_get_nx_info(p);
-+	if (nxi && !vx_flags(VXF_INFO_HIDE, 0)) {
-+		int i;
++	if (!nxi)
++		goto out;
 +
-+		for (i=0; i<nxi->nbipv4; i++){
-+			buffer += sprintf (buffer,
-+				"V4Root[%d]:\t%d.%d.%d.%d/%d.%d.%d.%d\n", i
-+				,NIPQUAD(nxi->ipv4[i])
-+				,NIPQUAD(nxi->mask[i]));
-+		}
++	for (i=0; i<nxi->nbipv4; i++){
 +		buffer += sprintf (buffer,
-+			"V4Root[bcast]:\t%d.%d.%d.%d\n"
-+			,NIPQUAD(nxi->v4_bcast));
-+	}
++			"V4Root[%d]:\t%d.%d.%d.%d/%d.%d.%d.%d\n", i
++			,NIPQUAD(nxi->ipv4[i])
++			,NIPQUAD(nxi->mask[i]));
++	}
++	buffer += sprintf (buffer,
++		"V4Root[bcast]:\t%d.%d.%d.%d\n"
++		,NIPQUAD(nxi->v4_bcast));
++
 +	put_nx_info(nxi);
++out:
 +	return buffer - orig;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/sched.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sched.c
---- linux-2.6.16-rc5/kernel/vserver/sched.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sched.c	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/sched.c b/kernel/vserver/sched.c
+new file mode 100644
+index 0000000..50d5c0b
+--- /dev/null
++++ b/kernel/vserver/sched.c
 @@ -0,0 +1,218 @@
 +/*
 + *  linux/kernel/vserver/sched.c
@@ -18664,7 +19311,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	vxi = locate_vx_info(xid);
++	vxi = lookup_vx_info(xid);
 +	if (!vxi)
 +		return -EINVAL;
 +
@@ -18708,7 +19355,7 @@
 +	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
 +		return -EFAULT;
 +
-+	vxi = locate_vx_info(xid);
++	vxi = lookup_vx_info(xid);
 +	if (!vxi)
 +		return -EINVAL;
 +
@@ -18750,9 +19397,11 @@
 +	return 0;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/sched_init.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sched_init.h
---- linux-2.6.16-rc5/kernel/vserver/sched_init.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sched_init.h	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/sched_init.h b/kernel/vserver/sched_init.h
+new file mode 100644
+index 0000000..90d1396
+--- /dev/null
++++ b/kernel/vserver/sched_init.h
 @@ -0,0 +1,30 @@
 +
 +static inline void vx_info_init_sched(struct _vx_sched *sched)
@@ -18784,9 +19433,11 @@
 +	return;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/sched_proc.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sched_proc.h
---- linux-2.6.16-rc5/kernel/vserver/sched_proc.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sched_proc.h	2006-02-17 22:18:51 +0100
+diff --git a/kernel/vserver/sched_proc.h b/kernel/vserver/sched_proc.h
+new file mode 100644
+index 0000000..e65a3df
+--- /dev/null
++++ b/kernel/vserver/sched_proc.h
 @@ -0,0 +1,40 @@
 +#ifndef _VX_SCHED_PROC_H
 +#define _VX_SCHED_PROC_H
@@ -18828,10 +19479,12 @@
 +}
 +
 +#endif	/* _VX_SCHED_PROC_H */
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/signal.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/signal.c
---- linux-2.6.16-rc5/kernel/vserver/signal.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/signal.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,118 @@
+diff --git a/kernel/vserver/signal.c b/kernel/vserver/signal.c
+new file mode 100644
+index 0000000..2406b9d
+--- /dev/null
++++ b/kernel/vserver/signal.c
+@@ -0,0 +1,132 @@
 +/*
 + *  linux/kernel/vserver/signal.c
 + *
@@ -18852,37 +19505,29 @@
 +#include <linux/vserver/signal_cmd.h>
 +
 +
-+int vc_ctx_kill(uint32_t id, void __user *data)
++int vx_info_kill(struct vx_info *vxi, int pid, int sig)
 +{
 +	int retval, count=0;
-+	struct vcmd_ctx_kill_v0 vc_data;
 +	struct task_struct *p;
-+	struct vx_info *vxi;
 +	unsigned long priv = 0;
 +
-+	if (!vx_check(0, VX_ADMIN))
-+		return -ENOSYS;
-+	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
-+		return -EFAULT;
-+
-+	vxi = locate_vx_info(id);
-+	if (!vxi)
-+		return -ESRCH;
-+
 +	retval = -ESRCH;
++	vxdprintk(VXD_CBIT(misc, 4),
++		"vx_info_kill(%p[#%d],%d,%d)*",
++		vxi, vxi->vx_id, pid, sig);
 +	read_lock(&tasklist_lock);
-+	switch (vc_data.pid) {
++	switch (pid) {
 +	case  0:
 +		priv = 1;
 +	case -1:
 +		for_each_process(p) {
 +			int err = 0;
 +
-+			if (vx_task_xid(p) != id || p->pid <= 1 ||
-+				(vc_data.pid && vxi->vx_initpid == p->pid))
++			if (vx_task_xid(p) != vxi->vx_id || p->pid <= 1 ||
++				(pid && vxi->vx_initpid == p->pid))
 +				continue;
 +
-+			err = group_send_sig_info(vc_data.sig, (void*)priv, p);
++			err = group_send_sig_info(sig, (void*)priv, p);
 +			++count;
 +			if (err != -EPERM)
 +				retval = err;
@@ -18891,20 +19536,42 @@
 +
 +	case 1:
 +		if (vxi->vx_initpid) {
-+			vc_data.pid = vxi->vx_initpid;
++			pid = vxi->vx_initpid;
 +			priv = 1;
 +		}
 +		/* fallthrough */
 +	default:
-+		p = find_task_by_real_pid(vc_data.pid);
++		p = find_task_by_real_pid(pid);
 +		if (p) {
-+			if ((id == -1) || (vx_task_xid(p) == id))
-+				retval = group_send_sig_info(vc_data.sig,
++			if (vx_task_xid(p) == vxi->vx_id)
++				retval = group_send_sig_info(sig,
 +					(void*)priv, p);
 +		}
 +		break;
 +	}
 +	read_unlock(&tasklist_lock);
++	vxdprintk(VXD_CBIT(misc, 4),
++		"vx_info_kill(%p[#%d],%d,%d) = %d",
++		vxi, vxi->vx_id, pid, sig, retval);
++	return retval;
++}
++
++int vc_ctx_kill(uint32_t id, void __user *data)
++{
++	int retval;
++	struct vcmd_ctx_kill_v0 vc_data;
++	struct vx_info *vxi;
++
++	if (!vx_check(0, VX_ADMIN))
++		return -ENOSYS;
++	if (copy_from_user (&vc_data, data, sizeof(vc_data)))
++		return -EFAULT;
++
++	vxi = lookup_vx_info(id);
++	if (!vxi)
++		return -ESRCH;
++
++	retval = vx_info_kill(vxi, vc_data.pid, vc_data.sig);
 +	put_vx_info(vxi);
 +	return retval;
 +}
@@ -18941,7 +19608,7 @@
 +	struct vx_info *vxi;
 +	int ret;
 +
-+	vxi = locate_vx_info(id);
++	vxi = lookup_vx_info(id);
 +	if (!vxi)
 +		return -ESRCH;
 +
@@ -18950,10 +19617,12 @@
 +	return ret;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/switch.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/switch.c
---- linux-2.6.16-rc5/kernel/vserver/switch.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/switch.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,260 @@
+diff --git a/kernel/vserver/switch.c b/kernel/vserver/switch.c
+new file mode 100644
+index 0000000..035c995
+--- /dev/null
++++ b/kernel/vserver/switch.c
+@@ -0,0 +1,264 @@
 +/*
 + *  linux/kernel/vserver/switch.c
 + *
@@ -19064,6 +19733,8 @@
 +	case VCMD_nx_info:
 +		return vc_nx_info(id, data);
 +
++	case VCMD_set_namespace_v0:
++		return vc_set_namespace(-1, data);
 +	case VCMD_set_namespace:
 +		return vc_set_namespace(id, data);
 +	case VCMD_cleanup_namespace:
@@ -19169,6 +19840,8 @@
 +		return vc_ctx_create(id, NULL);
 +	case VCMD_ctx_create:
 +		return vc_ctx_create(id, data);
++	case VCMD_ctx_migrate_v0:
++		return vc_ctx_migrate(id, NULL);
 +	case VCMD_ctx_migrate:
 +		return vc_ctx_migrate(id, data);
 +
@@ -19214,12 +19887,14 @@
 +}
 +
 +#endif	/* CONFIG_COMPAT */
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/sysctl.c linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sysctl.c
---- linux-2.6.16-rc5/kernel/vserver/sysctl.c	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/sysctl.c	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,216 @@
+diff --git a/kernel/vserver/sysctl.c b/kernel/vserver/sysctl.c
+new file mode 100644
+index 0000000..d233b1f
+--- /dev/null
++++ b/kernel/vserver/sysctl.c
+@@ -0,0 +1,227 @@
 +/*
-+ *  linux/kernel/sysctl.c
++ *  kernel/vserver/sysctl.c
 + *
 + *  Virtual Context Support
 + *
@@ -19250,6 +19925,7 @@
 +	CTL_DEBUG_NID,
 +	CTL_DEBUG_NET,
 +	CTL_DEBUG_LIMIT,
++	CTL_DEBUG_CRES,
 +	CTL_DEBUG_DLIM,
 +	CTL_DEBUG_CVIRT,
 +	CTL_DEBUG_MISC,
@@ -19261,6 +19937,7 @@
 +unsigned int vx_debug_nid = 0;
 +unsigned int vx_debug_net = 0;
 +unsigned int vx_debug_limit = 0;
++unsigned int vx_debug_cres = 0;
 +unsigned int vx_debug_dlim = 0;
 +unsigned int vx_debug_cvirt = 0;
 +unsigned int vx_debug_misc = 0;
@@ -19388,6 +20065,14 @@
 +		.proc_handler	= &proc_dodebug
 +	},
 +	{
++		.ctl_name	= CTL_DEBUG_CRES,
++		.procname	= "debug_cres",
++		.data		= &vx_debug_cres,
++		.maxlen		= sizeof(int),
++		.mode		= 0644,
++		.proc_handler	= &proc_dodebug
++	},
++	{
 +		.ctl_name	= CTL_DEBUG_DLIM,
 +		.procname	= "debug_dlim",
 +		.data		= &vx_debug_dlim,
@@ -19430,17 +20115,17 @@
 +EXPORT_SYMBOL_GPL(vx_debug_nid);
 +EXPORT_SYMBOL_GPL(vx_debug_net);
 +EXPORT_SYMBOL_GPL(vx_debug_limit);
++EXPORT_SYMBOL_GPL(vx_debug_cres);
 +EXPORT_SYMBOL_GPL(vx_debug_dlim);
 +EXPORT_SYMBOL_GPL(vx_debug_cvirt);
 +EXPORT_SYMBOL_GPL(vx_debug_misc);
 +
-diff -NurpP --minimal linux-2.6.16-rc5/kernel/vserver/vci_config.h linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/vci_config.h
---- linux-2.6.16-rc5/kernel/vserver/vci_config.h	1970-01-01 01:00:00 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/kernel/vserver/vci_config.h	2006-02-17 22:18:51 +0100
-@@ -0,0 +1,76 @@
-+
-+#include <linux/config.h>
-+
+diff --git a/kernel/vserver/vci_config.h b/kernel/vserver/vci_config.h
+new file mode 100644
+index 0000000..1f3b17b
+--- /dev/null
++++ b/kernel/vserver/vci_config.h
+@@ -0,0 +1,73 @@
 +
 +#include <linux/config.h>
 +
@@ -19454,7 +20139,7 @@
 +	VCI_KCBIT_HARDCPU,
 +	VCI_KCBIT_HARDCPU_IDLE,
 +
-+	VCI_KCBIT_LEGACY_VERSION,
++	VCI_KCBIT_LEGACY_VERSION = 15,
 +
 +	VCI_KCBIT_DEBUG = 16,
 +	VCI_KCBIT_HISTORY = 20,
@@ -19514,9 +20199,10 @@
 +	0;
 +}
 +
-diff -NurpP --minimal linux-2.6.16-rc5/mm/filemap_xip.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/filemap_xip.c
---- linux-2.6.16-rc5/mm/filemap_xip.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/filemap_xip.c	2006-02-17 22:18:51 +0100
+diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c
+index b960ac8..0c27759 100644
+--- a/mm/filemap_xip.c
++++ b/mm/filemap_xip.c
 @@ -13,6 +13,7 @@
  #include <linux/module.h>
  #include <linux/uio.h>
@@ -19525,9 +20211,10 @@
  #include <asm/tlbflush.h>
  #include "filemap.h"
  
-diff -NurpP --minimal linux-2.6.16-rc5/mm/fremap.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/fremap.c
---- linux-2.6.16-rc5/mm/fremap.c	2006-01-03 17:30:13 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/fremap.c	2006-02-17 22:18:51 +0100
+diff --git a/mm/fremap.c b/mm/fremap.c
+index 9f381e5..a7538bd 100644
+--- a/mm/fremap.c
++++ b/mm/fremap.c
 @@ -15,6 +15,7 @@
  #include <linux/rmap.h>
  #include <linux/module.h>
@@ -19553,9 +20240,10 @@
  
  	if (pte_none(*pte) || !zap_pte(mm, vma, addr, pte))
  		inc_mm_counter(mm, file_rss);
-diff -NurpP --minimal linux-2.6.16-rc5/mm/hugetlb.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/hugetlb.c
---- linux-2.6.16-rc5/mm/hugetlb.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/hugetlb.c	2006-02-18 15:22:56 +0100
+diff --git a/mm/hugetlb.c b/mm/hugetlb.c
+index 5087077..f1b2c19 100644
+--- a/mm/hugetlb.c
++++ b/mm/hugetlb.c
 @@ -18,6 +18,7 @@
  #include <asm/pgtable.h>
  
@@ -19564,9 +20252,10 @@
  
  const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
  static unsigned long nr_huge_pages, free_huge_pages;
-diff -NurpP --minimal linux-2.6.16-rc5/mm/memory.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/memory.c
---- linux-2.6.16-rc5/mm/memory.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/memory.c	2006-02-18 15:22:56 +0100
+diff --git a/mm/memory.c b/mm/memory.c
+index 9abc600..520b66e 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
 @@ -1903,6 +1903,10 @@ again:
  		grab_swap_token();
  	}
@@ -19597,9 +20286,10 @@
  	new_page = vma->vm_ops->nopage(vma, address & PAGE_MASK, &ret);
  	/*
  	 * No smp_rmb is needed here as long as there's a full
-diff -NurpP --minimal linux-2.6.16-rc5/mm/mempolicy.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/mempolicy.c
---- linux-2.6.16-rc5/mm/mempolicy.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/mempolicy.c	2006-02-28 15:21:27 +0100
+diff --git a/mm/mempolicy.c b/mm/mempolicy.c
+index 954981b..6319c51 100644
+--- a/mm/mempolicy.c
++++ b/mm/mempolicy.c
 @@ -86,6 +86,7 @@
  #include <linux/swap.h>
  #include <linux/seq_file.h>
@@ -19608,9 +20298,10 @@
  
  #include <asm/tlbflush.h>
  #include <asm/uaccess.h>
-diff -NurpP --minimal linux-2.6.16-rc5/mm/mlock.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/mlock.c
---- linux-2.6.16-rc5/mm/mlock.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/mlock.c	2006-02-17 22:18:51 +0100
+diff --git a/mm/mlock.c b/mm/mlock.c
+index b90c595..6ea2ee0 100644
+--- a/mm/mlock.c
++++ b/mm/mlock.c
 @@ -10,6 +10,7 @@
  #include <linux/mm.h>
  #include <linux/mempolicy.h>
@@ -19667,9 +20358,10 @@
  	if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
  	    capable(CAP_IPC_LOCK))
  		ret = do_mlockall(flags);
-diff -NurpP --minimal linux-2.6.16-rc5/mm/mmap.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/mmap.c
---- linux-2.6.16-rc5/mm/mmap.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/mmap.c	2006-02-17 22:18:51 +0100
+diff --git a/mm/mmap.c b/mm/mmap.c
+index 47556d2..fe5f116 100644
+--- a/mm/mmap.c
++++ b/mm/mmap.c
 @@ -1116,10 +1116,10 @@ munmap_back:
  		kmem_cache_free(vm_area_cachep, vma);
  	}
@@ -19768,9 +20460,10 @@
 +		return 0;
  	return 1;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/mm/mremap.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/mremap.c
---- linux-2.6.16-rc5/mm/mremap.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/mremap.c	2006-02-17 22:18:51 +0100
+diff --git a/mm/mremap.c b/mm/mremap.c
+index 1903bdf..25a9433 100644
+--- a/mm/mremap.c
++++ b/mm/mremap.c
 @@ -18,6 +18,7 @@
  #include <linux/highmem.h>
  #include <linux/security.h>
@@ -19820,10 +20513,11 @@
  				make_pages_present(addr + old_len,
  						   addr + new_len);
  			}
-diff -NurpP --minimal linux-2.6.16-rc5/mm/nommu.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/nommu.c
---- linux-2.6.16-rc5/mm/nommu.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/nommu.c	2006-02-28 15:21:27 +0100
-@@ -814,7 +814,7 @@ unsigned long do_mmap_pgoff(struct file 
+diff --git a/mm/nommu.c b/mm/nommu.c
+index 4951f47..c61677b 100644
+--- a/mm/nommu.c
++++ b/mm/nommu.c
+@@ -820,7 +820,7 @@ unsigned long do_mmap_pgoff(struct file 
  	realalloc += kobjsize(vma);
  	askedalloc += sizeof(*vma);
  
@@ -19832,7 +20526,7 @@
  
  	add_nommu_vma(vma);
  
-@@ -931,7 +931,7 @@ int do_munmap(struct mm_struct *mm, unsi
+@@ -937,7 +937,7 @@ int do_munmap(struct mm_struct *mm, unsi
  	kfree(vml);
  
  	update_hiwater_vm(mm);
@@ -19841,7 +20535,7 @@
  
  #ifdef DEBUG
  	show_process_blocks();
-@@ -950,7 +950,7 @@ void exit_mmap(struct mm_struct * mm)
+@@ -956,7 +956,7 @@ void exit_mmap(struct mm_struct * mm)
  		printk("Exit_mmap:\n");
  #endif
  
@@ -19850,9 +20544,10 @@
  
  		while ((tmp = mm->context.vmlist)) {
  			mm->context.vmlist = tmp->next;
-diff -NurpP --minimal linux-2.6.16-rc5/mm/oom_kill.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/oom_kill.c
---- linux-2.6.16-rc5/mm/oom_kill.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/oom_kill.c	2006-02-28 15:21:27 +0100
+diff --git a/mm/oom_kill.c b/mm/oom_kill.c
+index 78747af..f2479c9 100644
+--- a/mm/oom_kill.c
++++ b/mm/oom_kill.c
 @@ -55,6 +55,7 @@ unsigned long badness(struct task_struct
  	 * The memory size of the process is the basis for the badness.
  	 */
@@ -19861,9 +20556,10 @@
  
  	/*
  	 * Processes which fork a lot of child processes are likely
-diff -NurpP --minimal linux-2.6.16-rc5/mm/page_alloc.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/page_alloc.c
---- linux-2.6.16-rc5/mm/page_alloc.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/page_alloc.c	2006-02-28 15:21:27 +0100
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 234bd48..557a64f 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
 @@ -37,6 +37,7 @@
  #include <linux/nodemask.h>
  #include <linux/vmalloc.h>
@@ -19872,7 +20568,7 @@
  
  #include <asm/tlbflush.h>
  #include "internal.h"
-@@ -1351,6 +1352,8 @@ void si_meminfo(struct sysinfo *val)
+@@ -1350,6 +1351,8 @@ void si_meminfo(struct sysinfo *val)
  	val->freehigh = 0;
  #endif
  	val->mem_unit = PAGE_SIZE;
@@ -19881,9 +20577,19 @@
  }
  
  EXPORT_SYMBOL(si_meminfo);
-diff -NurpP --minimal linux-2.6.16-rc5/mm/rmap.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/rmap.c
---- linux-2.6.16-rc5/mm/rmap.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/rmap.c	2006-02-17 22:18:51 +0100
+@@ -1364,6 +1367,8 @@ void si_meminfo_node(struct sysinfo *val
+ 	val->totalhigh = pgdat->node_zones[ZONE_HIGHMEM].present_pages;
+ 	val->freehigh = pgdat->node_zones[ZONE_HIGHMEM].free_pages;
+ 	val->mem_unit = PAGE_SIZE;
++	if (vx_flags(VXF_VIRT_MEM, 0))
++		vx_vsi_meminfo(val);
+ }
+ #endif
+ 
+diff --git a/mm/rmap.c b/mm/rmap.c
+index 67f0e20..c0da121 100644
+--- a/mm/rmap.c
++++ b/mm/rmap.c
 @@ -53,6 +53,7 @@
  #include <linux/rmap.h>
  #include <linux/rcupdate.h>
@@ -19892,9 +20598,10 @@
  
  #include <asm/tlbflush.h>
  
-diff -NurpP --minimal linux-2.6.16-rc5/mm/shmem.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/shmem.c
---- linux-2.6.16-rc5/mm/shmem.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/shmem.c	2006-02-28 15:21:27 +0100
+diff --git a/mm/shmem.c b/mm/shmem.c
+index 7c455fb..d1b4192 100644
+--- a/mm/shmem.c
++++ b/mm/shmem.c
 @@ -51,7 +51,6 @@
  #include <asm/pgtable.h>
  
@@ -19921,9 +20628,10 @@
  	sb->s_op = &shmem_ops;
  
  	inode = shmem_get_inode(sb, S_IFDIR | mode, 0);
-diff -NurpP --minimal linux-2.6.16-rc5/mm/swapfile.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/swapfile.c
---- linux-2.6.16-rc5/mm/swapfile.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/swapfile.c	2006-02-17 22:18:51 +0100
+diff --git a/mm/swapfile.c b/mm/swapfile.c
+index 1f9cf0d..7fab939 100644
+--- a/mm/swapfile.c
++++ b/mm/swapfile.c
 @@ -32,6 +32,7 @@
  #include <asm/pgtable.h>
  #include <asm/tlbflush.h>
@@ -19941,9 +20649,10 @@
  }
  
  /*
-diff -NurpP --minimal linux-2.6.16-rc5/mm/vmscan.c linux-2.6.16-rc5-vs2.0.2-rc10/mm/vmscan.c
---- linux-2.6.16-rc5/mm/vmscan.c	2006-02-28 15:03:46 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/mm/vmscan.c	2006-02-28 15:21:27 +0100
+diff --git a/mm/vmscan.c b/mm/vmscan.c
+index 7ccf763..b28865d 100644
+--- a/mm/vmscan.c
++++ b/mm/vmscan.c
 @@ -1826,7 +1826,7 @@ static int __init kswapd_init(void)
  	swap_setup();
  	for_each_pgdat(pgdat)
@@ -19953,9 +20662,10 @@
  	total_memory = nr_free_pagecache_pages();
  	hotcpu_notifier(cpu_callback, 0);
  	return 0;
-diff -NurpP --minimal linux-2.6.16-rc5/net/core/dev.c linux-2.6.16-rc5-vs2.0.2-rc10/net/core/dev.c
---- linux-2.6.16-rc5/net/core/dev.c	2006-02-28 15:03:47 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/core/dev.c	2006-02-17 22:18:51 +0100
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 2afb0de..407124c 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
 @@ -114,6 +114,7 @@
  #include <linux/wireless.h>		/* Note : will define WIRELESS_EXT */
  #include <net/iw_handler.h>
@@ -19985,9 +20695,10 @@
  	if (dev->get_stats) {
  		struct net_device_stats *stats = dev->get_stats(dev);
  
-diff -NurpP --minimal linux-2.6.16-rc5/net/core/rtnetlink.c linux-2.6.16-rc5-vs2.0.2-rc10/net/core/rtnetlink.c
---- linux-2.6.16-rc5/net/core/rtnetlink.c	2006-02-28 15:03:47 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/core/rtnetlink.c	2006-02-17 22:18:51 +0100
+diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
+index eca2976..8e3a809 100644
+--- a/net/core/rtnetlink.c
++++ b/net/core/rtnetlink.c
 @@ -278,6 +278,9 @@ static int rtnetlink_dump_ifinfo(struct 
  	for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) {
  		if (idx < s_idx)
@@ -20008,9 +20719,10 @@
  	skb = alloc_skb(size, GFP_KERNEL);
  	if (!skb)
  		return;
-diff -NurpP --minimal linux-2.6.16-rc5/net/core/sock.c linux-2.6.16-rc5-vs2.0.2-rc10/net/core/sock.c
---- linux-2.6.16-rc5/net/core/sock.c	2006-02-28 15:03:47 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/core/sock.c	2006-02-17 22:18:51 +0100
+diff --git a/net/core/sock.c b/net/core/sock.c
+index 6e00811..ddb6738 100644
+--- a/net/core/sock.c
++++ b/net/core/sock.c
 @@ -125,6 +125,9 @@
  #include <linux/ipsec.h>
  
@@ -20076,9 +20788,10 @@
  	atomic_set(&sk->sk_refcnt, 1);
  }
  
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/af_inet.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/af_inet.c
---- linux-2.6.16-rc5/net/ipv4/af_inet.c	2006-02-28 15:03:50 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/af_inet.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
+index 97c276f..fef25db 100644
+--- a/net/ipv4/af_inet.c
++++ b/net/ipv4/af_inet.c
 @@ -114,6 +114,7 @@
  #ifdef CONFIG_IP_MROUTE
  #include <linux/mroute.h>
@@ -20172,9 +20885,10 @@
  	if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
  		inet->saddr = 0;  /* Use device */
  
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/devinet.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/devinet.c
---- linux-2.6.16-rc5/net/ipv4/devinet.c	2006-02-28 15:03:50 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/devinet.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
+index 3ffa60d..ea91fd3 100644
+--- a/net/ipv4/devinet.c
++++ b/net/ipv4/devinet.c
 @@ -529,6 +529,33 @@ static __inline__ int inet_abc_len(u32 a
    	return rc;
  }
@@ -20247,9 +20961,10 @@
  			if (ip_idx < s_ip_idx)
  				continue;
  			if (inet_fill_ifaddr(skb, ifa, NETLINK_CB(cb->skb).pid,
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/fib_hash.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/fib_hash.c
---- linux-2.6.16-rc5/net/ipv4/fib_hash.c	2006-02-28 15:03:50 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/fib_hash.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c
+index e2890ec..c9b54bb 100644
+--- a/net/ipv4/fib_hash.c
++++ b/net/ipv4/fib_hash.c
 @@ -989,6 +989,8 @@ static unsigned fib_flag_trans(int type,
  	return flags;
  }
@@ -20269,9 +20984,10 @@
  		snprintf(bf, sizeof(bf),
  			 "%s\t%08X\t%08X\t%04X\t%d\t%u\t%d\t%08X\t%d\t%u\t%u",
  			 fi->fib_dev ? fi->fib_dev->name : "*", prefix,
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/inet_connection_sock.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/inet_connection_sock.c
---- linux-2.6.16-rc5/net/ipv4/inet_connection_sock.c	2006-02-28 15:03:51 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/inet_connection_sock.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
+index ae20281..a7c37bd 100644
+--- a/net/ipv4/inet_connection_sock.c
++++ b/net/ipv4/inet_connection_sock.c
 @@ -40,7 +40,6 @@ int sysctl_local_port_range[2] = { 1024,
  int inet_csk_bind_conflict(const struct sock *sk,
  			   const struct inet_bind_bucket *tb)
@@ -20292,9 +21008,10 @@
  					break;
  			}
  		}
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/inet_diag.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/inet_diag.c
---- linux-2.6.16-rc5/net/ipv4/inet_diag.c	2006-02-28 15:03:51 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/inet_diag.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c
+index 457db99..03cfe8f 100644
+--- a/net/ipv4/inet_diag.c
++++ b/net/ipv4/inet_diag.c
 @@ -694,6 +694,8 @@ static int inet_diag_dump(struct sk_buff
  			sk_for_each(sk, node, &hashinfo->listening_hash[i]) {
  				struct inet_sock *inet = inet_sk(sk);
@@ -20322,9 +21039,10 @@
  				if (num < s_num)
  					goto next_dying;
  				if (r->id.idiag_sport != tw->tw_sport &&
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/inet_hashtables.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/inet_hashtables.c
---- linux-2.6.16-rc5/net/ipv4/inet_hashtables.c	2006-02-28 15:03:51 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/inet_hashtables.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
+index 3322811..d3ec834 100644
+--- a/net/ipv4/inet_hashtables.c
++++ b/net/ipv4/inet_hashtables.c
 @@ -143,11 +143,10 @@ struct sock *__inet_lookup_listener(cons
  			const __u32 rcv_saddr = inet->rcv_saddr;
  			int score = sk->sk_family == PF_INET ? 1 : 0;
@@ -20340,9 +21058,10 @@
  			if (sk->sk_bound_dev_if) {
  				if (sk->sk_bound_dev_if != dif)
  					continue;
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/raw.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/raw.c
---- linux-2.6.16-rc5/net/ipv4/raw.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/raw.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c
+index f29a12d..84faac0 100644
+--- a/net/ipv4/raw.c
++++ b/net/ipv4/raw.c
 @@ -102,6 +102,27 @@ static void raw_v4_unhash(struct sock *s
  	write_unlock_bh(&raw_v4_lock);
  }
@@ -20381,18 +21100,27 @@
  		    !(sk->sk_bound_dev_if && sk->sk_bound_dev_if != dif))
  			goto found; /* gotcha */
  	}
-@@ -312,6 +334,10 @@ static int raw_send_hdrinc(struct sock *
- 
+@@ -313,6 +335,11 @@ static int raw_send_hdrinc(struct sock *
  		iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl);
  	}
+ 
 +	err = -EPERM;
 +	if (!vx_check(0, VX_ADMIN) && !capable(CAP_NET_RAW)
 +		&& (!addr_in_nx_info(sk->sk_nx_info, iph->saddr)))
-+		goto error;
- 
++		goto error_free;
++
  	err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, rt->u.dst.dev,
  		      dst_output);
-@@ -484,6 +510,12 @@ static int raw_sendmsg(struct kiocb *ioc
+ 	if (err > 0)
+@@ -324,6 +351,7 @@ out:
+ 
+ error_fault:
+ 	err = -EFAULT;
++error_free:
+ 	kfree_skb(skb);
+ error:
+ 	IP_INC_STATS(IPSTATS_MIB_OUTDISCARDS);
+@@ -484,6 +512,12 @@ static int raw_sendmsg(struct kiocb *ioc
  		if (!inet->hdrincl)
  			raw_probe_proto_opt(&fl, msg);
  
@@ -20405,7 +21133,7 @@
  		err = ip_route_output_flow(&rt, &fl, sk, !(msg->msg_flags&MSG_DONTWAIT));
  	}
  	if (err)
-@@ -753,7 +785,8 @@ static struct sock *raw_get_first(struct
+@@ -753,7 +787,8 @@ static struct sock *raw_get_first(struct
  		struct hlist_node *node;
  
  		sk_for_each(sk, node, &raw_v4_htable[state->bucket])
@@ -20415,7 +21143,7 @@
  				goto found;
  	}
  	sk = NULL;
-@@ -769,7 +802,8 @@ static struct sock *raw_get_next(struct 
+@@ -769,7 +804,8 @@ static struct sock *raw_get_next(struct 
  		sk = sk_next(sk);
  try_again:
  		;
@@ -20425,9 +21153,10 @@
  
  	if (!sk && ++state->bucket < RAWV4_HTABLE_SIZE) {
  		sk = sk_head(&raw_v4_htable[state->bucket]);
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/tcp.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/tcp.c
---- linux-2.6.16-rc5/net/ipv4/tcp.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/tcp.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
+index 00aa80e..2d52d50 100644
+--- a/net/ipv4/tcp.c
++++ b/net/ipv4/tcp.c
 @@ -257,6 +257,7 @@
  #include <linux/fs.h>
  #include <linux/random.h>
@@ -20436,9 +21165,10 @@
  
  #include <net/icmp.h>
  #include <net/tcp.h>
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/tcp_ipv4.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/tcp_ipv4.c
---- linux-2.6.16-rc5/net/ipv4/tcp_ipv4.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/tcp_ipv4.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
+index 233bdf2..dd0dbd8 100644
+--- a/net/ipv4/tcp_ipv4.c
++++ b/net/ipv4/tcp_ipv4.c
 @@ -77,6 +77,7 @@
  #include <linux/stddef.h>
  #include <linux/proc_fs.h>
@@ -20524,9 +21254,10 @@
  		if (sk->sk_family == st->family)
  			goto found;
  	}
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/tcp_minisocks.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/tcp_minisocks.c
---- linux-2.6.16-rc5/net/ipv4/tcp_minisocks.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/tcp_minisocks.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
+index 2b9b7f6..0582ec2 100644
+--- a/net/ipv4/tcp_minisocks.c
++++ b/net/ipv4/tcp_minisocks.c
 @@ -29,6 +29,10 @@
  #include <net/inet_common.h>
  #include <net/xfrm.h>
@@ -20550,9 +21281,10 @@
  #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
  		if (tw->tw_family == PF_INET6) {
  			struct ipv6_pinfo *np = inet6_sk(sk);
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv4/udp.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/udp.c
---- linux-2.6.16-rc5/net/ipv4/udp.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv4/udp.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
+index 0084047..9b2757c 100644
+--- a/net/ipv4/udp.c
++++ b/net/ipv4/udp.c
 @@ -176,14 +176,12 @@ gotit:
  			struct inet_sock *inet2 = inet_sk(sk2);
  
@@ -20649,9 +21381,10 @@
  
  	if (!sk && ++state->bucket < UDP_HTABLE_SIZE) {
  		sk = sk_head(&udp_hash[state->bucket]);
-diff -NurpP --minimal linux-2.6.16-rc5/net/ipv6/addrconf.c linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv6/addrconf.c
---- linux-2.6.16-rc5/net/ipv6/addrconf.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/ipv6/addrconf.c	2006-02-17 22:18:51 +0100
+diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
+index b7d8822..d4ef097 100644
+--- a/net/ipv6/addrconf.c
++++ b/net/ipv6/addrconf.c
 @@ -2646,7 +2646,10 @@ static void if6_seq_stop(struct seq_file
  static int if6_seq_show(struct seq_file *seq, void *v)
  {
@@ -20686,9 +21419,10 @@
  	read_lock(&dev_base_lock);
  	for (dev=dev_base, idx=0; dev; dev = dev->next, idx++) {
  		if (idx < s_idx)
-diff -NurpP --minimal linux-2.6.16-rc5/net/netlink/af_netlink.c linux-2.6.16-rc5-vs2.0.2-rc10/net/netlink/af_netlink.c
---- linux-2.6.16-rc5/net/netlink/af_netlink.c	2006-02-28 15:03:52 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/netlink/af_netlink.c	2006-02-17 22:18:51 +0100
+diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
+index 6b9772d..2f8b8f2 100644
+--- a/net/netlink/af_netlink.c
++++ b/net/netlink/af_netlink.c
 @@ -56,6 +56,9 @@
  #include <linux/mm.h>
  #include <linux/types.h>
@@ -20699,9 +21433,10 @@
  
  #include <net/sock.h>
  #include <net/scm.h>
-diff -NurpP --minimal linux-2.6.16-rc5/net/socket.c linux-2.6.16-rc5-vs2.0.2-rc10/net/socket.c
---- linux-2.6.16-rc5/net/socket.c	2006-02-28 15:03:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/socket.c	2006-02-17 22:18:51 +0100
+diff --git a/net/socket.c b/net/socket.c
+index a00851f..a942fe6 100644
+--- a/net/socket.c
++++ b/net/socket.c
 @@ -96,6 +96,7 @@
  
  #include <net/sock.h>
@@ -20802,9 +21537,10 @@
  
  	err = sock1->ops->socketpair(sock1, sock2);
  	if (err < 0) 
-diff -NurpP --minimal linux-2.6.16-rc5/net/sunrpc/auth.c linux-2.6.16-rc5-vs2.0.2-rc10/net/sunrpc/auth.c
---- linux-2.6.16-rc5/net/sunrpc/auth.c	2006-02-28 15:03:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/sunrpc/auth.c	2006-02-17 22:18:51 +0100
+diff --git a/net/sunrpc/auth.c b/net/sunrpc/auth.c
+index 8d6f1a1..9c893ef 100644
+--- a/net/sunrpc/auth.c
++++ b/net/sunrpc/auth.c
 @@ -13,6 +13,7 @@
  #include <linux/errno.h>
  #include <linux/sunrpc/clnt.h>
@@ -20829,9 +21565,10 @@
  		.group_info = current->group_info,
  	};
  	struct rpc_cred *ret;
-diff -NurpP --minimal linux-2.6.16-rc5/net/sunrpc/auth_unix.c linux-2.6.16-rc5-vs2.0.2-rc10/net/sunrpc/auth_unix.c
---- linux-2.6.16-rc5/net/sunrpc/auth_unix.c	2006-02-28 15:03:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/sunrpc/auth_unix.c	2006-02-17 22:18:51 +0100
+diff --git a/net/sunrpc/auth_unix.c b/net/sunrpc/auth_unix.c
+index df14b6b..4f2ad4f 100644
+--- a/net/sunrpc/auth_unix.c
++++ b/net/sunrpc/auth_unix.c
 @@ -11,12 +11,14 @@
  #include <linux/module.h>
  #include <linux/sunrpc/clnt.h>
@@ -20897,9 +21634,10 @@
  	hold = p++;
  	for (i = 0; i < 16 && cred->uc_gids[i] != (gid_t) NOGROUP; i++)
  		*p++ = htonl((u32) cred->uc_gids[i]);
-diff -NurpP --minimal linux-2.6.16-rc5/net/unix/af_unix.c linux-2.6.16-rc5-vs2.0.2-rc10/net/unix/af_unix.c
---- linux-2.6.16-rc5/net/unix/af_unix.c	2006-02-28 15:03:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/unix/af_unix.c	2006-02-17 22:18:51 +0100
+diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
+index c323cc6..7020c57 100644
+--- a/net/unix/af_unix.c
++++ b/net/unix/af_unix.c
 @@ -117,6 +117,9 @@
  #include <linux/mount.h>
  #include <net/checksum.h>
@@ -20928,9 +21666,10 @@
  		if (err)
  			goto out_mknod_dput;
  		mutex_unlock(&nd.dentry->d_inode->i_mutex);
-diff -NurpP --minimal linux-2.6.16-rc5/net/x25/af_x25.c linux-2.6.16-rc5-vs2.0.2-rc10/net/x25/af_x25.c
---- linux-2.6.16-rc5/net/x25/af_x25.c	2006-02-28 15:03:57 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/net/x25/af_x25.c	2006-02-17 22:18:51 +0100
+diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
+index 72b6ff3..3da1bd9 100644
+--- a/net/x25/af_x25.c
++++ b/net/x25/af_x25.c
 @@ -491,7 +491,10 @@ static int x25_create(struct socket *soc
  
  	x25 = x25_sk(sk);
@@ -20943,9 +21682,10 @@
  
  	x25_init_timers(sk);
  
-diff -NurpP --minimal linux-2.6.16-rc5/security/commoncap.c linux-2.6.16-rc5-vs2.0.2-rc10/security/commoncap.c
---- linux-2.6.16-rc5/security/commoncap.c	2006-02-28 15:03:58 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/security/commoncap.c	2006-02-17 22:18:51 +0100
+diff --git a/security/commoncap.c b/security/commoncap.c
+index 8a6e097..403e104 100644
+--- a/security/commoncap.c
++++ b/security/commoncap.c
 @@ -143,7 +143,7 @@ void cap_bprm_apply_creds (struct linux_
  	/* Derived from fs/exec.c:compute_creds. */
  	kernel_cap_t new_permitted, working;
@@ -20965,9 +21705,10 @@
  		return -EPERM;
  	return 0;
  }
-diff -NurpP --minimal linux-2.6.16-rc5/security/security.c linux-2.6.16-rc5-vs2.0.2-rc10/security/security.c
---- linux-2.6.16-rc5/security/security.c	2006-02-28 15:03:58 +0100
-+++ linux-2.6.16-rc5-vs2.0.2-rc10/security/security.c	2006-02-17 22:18:51 +0100
+diff --git a/security/security.c b/security/security.c
+index f693e1f..8bbe110 100644
+--- a/security/security.c
++++ b/security/security.c
 @@ -186,6 +186,8 @@ int mod_unreg_security(const char *name,
   */
  int capable(int cap)



More information about the Kernel-svn-changes mailing list