--- linux-2.6.11.11/Makefile	2005-06-01 14:30:22 +0200
+++ linux-2.6.11.11-vs2.0-rc3/Makefile	2005-06-01 14:34:42 +0200
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 11
-EXTRAVERSION = .11
+EXTRAVERSION = .11-vs2.0-rc3
 NAME=Woozy Beaver
 
 # *DOCUMENTATION*
--- linux-2.6.11.11/arch/alpha/Kconfig	2005-03-02 12:38:18 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/alpha/Kconfig	2005-06-01 14:34:17 +0200
@@ -598,6 +598,8 @@ source "arch/alpha/oprofile/Kconfig"
 
 source "arch/alpha/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/arm/Kconfig	2005-03-02 12:38:18 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/arm/Kconfig	2005-06-01 14:34:17 +0200
@@ -731,6 +731,8 @@ source "drivers/mmc/Kconfig"
 
 source "arch/arm/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/arm26/Kconfig	2005-03-02 12:38:19 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/arm26/Kconfig	2005-06-01 14:34:17 +0200
@@ -220,6 +220,8 @@ source "drivers/usb/Kconfig"
 
 source "arch/arm26/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/cris/Kconfig	2005-03-02 12:38:20 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/cris/Kconfig	2005-06-01 14:34:17 +0200
@@ -173,6 +173,8 @@ source "drivers/usb/Kconfig"
 
 source "arch/cris/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/h8300/Kconfig	2005-03-02 12:38:20 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/h8300/Kconfig	2005-06-01 14:34:17 +0200
@@ -187,6 +187,8 @@ source "fs/Kconfig"
 
 source "arch/h8300/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/i386/Kconfig	2005-03-02 12:38:20 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/i386/Kconfig	2005-06-01 14:34:17 +0200
@@ -1210,6 +1258,8 @@ source "arch/i386/oprofile/Kconfig"
 
 source "arch/i386/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/ia64/Kconfig	2005-03-02 12:38:20 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/ia64/Kconfig	2005-06-01 14:34:17 +0200
@@ -414,6 +414,8 @@ source "arch/ia64/oprofile/Kconfig"
 
 source "arch/ia64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/m68k/Kconfig	2005-03-02 12:38:21 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/m68k/Kconfig	2005-06-01 14:34:17 +0200
@@ -663,6 +663,8 @@ source "fs/Kconfig"
 
 source "arch/m68k/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/m68knommu/Kconfig	2005-03-02 12:38:21 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/m68knommu/Kconfig	2005-06-01 14:34:17 +0200
@@ -574,6 +574,8 @@ source "fs/Kconfig"
 
 source "arch/m68knommu/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/mips/Kconfig	2005-03-02 12:38:22 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/mips/Kconfig	2005-06-01 14:34:17 +0200
@@ -1644,6 +1644,8 @@ source "fs/Kconfig"
 
 source "arch/mips/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/parisc/Kconfig	2005-03-02 12:38:23 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/parisc/Kconfig	2005-06-01 14:34:17 +0200
@@ -200,6 +200,8 @@ source "arch/parisc/oprofile/Kconfig"
 
 source "arch/parisc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/ppc/Kconfig	2005-03-02 12:38:23 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/ppc/Kconfig	2005-06-01 14:34:17 +0200
@@ -1291,6 +1291,8 @@ source "arch/ppc/oprofile/Kconfig"
 
 source "arch/ppc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/ppc64/Kconfig	2005-03-02 12:38:24 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/ppc64/Kconfig	2005-06-01 14:34:17 +0200
@@ -387,6 +387,8 @@ source "arch/ppc64/oprofile/Kconfig"
 
 source "arch/ppc64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 config KEYS_COMPAT
--- linux-2.6.11.11/arch/s390/Kconfig	2005-03-02 12:38:25 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/s390/Kconfig	2005-06-01 14:34:17 +0200
@@ -473,6 +473,8 @@ source "arch/s390/oprofile/Kconfig"
 
 source "arch/s390/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/sh/Kconfig	2005-03-02 12:38:25 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/sh/Kconfig	2005-06-01 14:34:17 +0200
@@ -788,6 +788,8 @@ source "arch/sh/oprofile/Kconfig"
 
 source "arch/sh/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/sparc/Kconfig	2005-03-02 12:38:25 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/sparc/Kconfig	2005-06-01 14:34:17 +0200
@@ -386,6 +386,8 @@ source "drivers/char/watchdog/Kconfig"
 
 source "arch/sparc/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/sparc64/Kconfig	2005-03-02 12:38:25 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/sparc64/Kconfig	2005-06-01 14:34:17 +0200
@@ -602,6 +602,8 @@ source "arch/sparc64/oprofile/Kconfig"
 
 source "arch/sparc64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/um/Kconfig	2005-03-02 12:38:26 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/um/Kconfig	2005-06-01 14:34:17 +0200
@@ -285,6 +285,8 @@ source "net/Kconfig"
 
 source "fs/Kconfig"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/v850/Kconfig	2005-03-02 12:38:27 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/v850/Kconfig	2005-06-01 14:34:17 +0200
@@ -307,6 +307,8 @@ source "drivers/usb/Kconfig"
 
 source "arch/v850/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/arch/x86_64/Kconfig	2005-03-02 12:38:27 +0100
+++ linux-2.6.11.11-vs2.0-rc3/arch/x86_64/Kconfig	2005-06-01 14:34:17 +0200
@@ -452,6 +452,8 @@ source "arch/x86_64/oprofile/Kconfig"
 
 source "arch/x86_64/Kconfig.debug"
 
+source "kernel/vserver/Kconfig"
+
 source "security/Kconfig"
 
 source "crypto/Kconfig"
--- linux-2.6.11.11/fs/xfs/linux-2.6/xfs_sysctl.c	2004-12-25 01:55:22 +0100
+++ linux-2.6.11.11-vs2.0-rc3/fs/xfs/linux-2.6/xfs_sysctl.c	2005-06-01 14:34:17 +0200
@@ -76,74 +76,74 @@ xfs_stats_clear_proc_handler(
 STATIC ctl_table xfs_table[] = {
 	{XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.restrict_chown.min, &xfs_params.restrict_chown.max},
 
 	{XFS_SGID_INHERIT, "irix_sgid_inherit", &xfs_params.sgid_inherit.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.sgid_inherit.min, &xfs_params.sgid_inherit.max},
 
 	{XFS_SYMLINK_MODE, "irix_symlink_mode", &xfs_params.symlink_mode.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.symlink_mode.min, &xfs_params.symlink_mode.max},
 
 	{XFS_PANIC_MASK, "panic_mask", &xfs_params.panic_mask.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.panic_mask.min, &xfs_params.panic_mask.max},
 
 	{XFS_ERRLEVEL, "error_level", &xfs_params.error_level.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.error_level.min, &xfs_params.error_level.max},
 
 	{XFS_SYNCD_TIMER, "xfssyncd_centisecs", &xfs_params.syncd_timer.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.syncd_timer.min, &xfs_params.syncd_timer.max},
 
 	{XFS_INHERIT_SYNC, "inherit_sync", &xfs_params.inherit_sync.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.inherit_sync.min, &xfs_params.inherit_sync.max},
 
 	{XFS_INHERIT_NODUMP, "inherit_nodump", &xfs_params.inherit_nodump.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.inherit_nodump.min, &xfs_params.inherit_nodump.max},
 
 	{XFS_INHERIT_NOATIME, "inherit_noatime", &xfs_params.inherit_noatim.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.inherit_noatim.min, &xfs_params.inherit_noatim.max},
 	
 	{XFS_BUF_TIMER, "xfsbufd_centisecs", &xfs_params.xfs_buf_timer.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.xfs_buf_timer.min, &xfs_params.xfs_buf_timer.max},
 
 	{XFS_BUF_AGE, "age_buffer_centisecs", &xfs_params.xfs_buf_age.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.xfs_buf_age.min, &xfs_params.xfs_buf_age.max},
 
 	{XFS_INHERIT_NOSYM, "inherit_nosymlinks", &xfs_params.inherit_nosym.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL,
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.inherit_nosym.min, &xfs_params.inherit_nosym.max},
 
 	{XFS_ROTORSTEP, "rotorstep", &xfs_params.rotorstep.val,
 	sizeof(int), 0644, NULL, &proc_dointvec_minmax,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.rotorstep.min, &xfs_params.rotorstep.max},
 
 	/* please keep this the last entry */
 #ifdef CONFIG_PROC_FS
 	{XFS_STATS_CLEAR, "stats_clear", &xfs_params.stats_clear.val,
 	sizeof(int), 0644, NULL, &xfs_stats_clear_proc_handler,
-	&sysctl_intvec, NULL, 
+	NULL, &sysctl_intvec, NULL,
 	&xfs_params.stats_clear.min, &xfs_params.stats_clear.max},
 #endif /* CONFIG_PROC_FS */
 
--- linux-2.6.11.11/include/linux/capability.h	2005-03-02 12:38:52 +0100
+++ linux-2.6.11.11-vs2.0-rc3/include/linux/capability.h	2005-06-01 14:34:17 +0200
@@ -235,6 +235,7 @@ typedef __u32 kernel_cap_t;
 /* Allow enabling/disabling tagged queuing on SCSI controllers and sending
    arbitrary SCSI commands */
 /* Allow setting encryption key on loopback filesystem */
+/* Allow the selection of a security context */
 
 #define CAP_SYS_ADMIN        21
 
--- linux-2.6.11.11/include/linux/capability.h	2005-03-02 12:38:52 +0100
+++ linux-2.6.11.11-vs2.0-rc3/include/linux/capability.h	2005-06-01 14:34:17 +0200
@@ -288,6 +289,11 @@ typedef __u32 kernel_cap_t;
 
 #define CAP_AUDIT_CONTROL    30
 
+/* Allow context manipulations */
+/* Allow changing context info on files */
+
+#define CAP_CONTEXT	     31
+
 #ifdef __KERNEL__
 /* 
  * Bounding set
--- linux-2.6.11.11/include/linux/init_task.h	2005-03-02 12:38:52 +0100
+++ linux-2.6.11.11-vs2.0-rc3/include/linux/init_task.h	2005-06-01 14:34:17 +0200
@@ -112,6 +112,10 @@ extern struct group_info init_groups;
 	.proc_lock	= SPIN_LOCK_UNLOCKED,				\
 	.switch_lock	= SPIN_LOCK_UNLOCKED,				\
 	.journal_info	= NULL,						\
+	.xid		= 0,						\
+	.vx_info	= NULL,						\
+	.nid		= 0,						\
+	.nx_info	= NULL,						\
 }
 
 
--- linux-2.6.11.11/include/linux/sched.h	2005-03-02 12:38:53 +0100
+++ linux-2.6.11.11-vs2.0-rc3/include/linux/sched.h	2005-06-01 14:34:17 +0200
@@ -644,6 +648,14 @@ struct task_struct {
 	void *security;
 	struct audit_context *audit_context;
 
+/* vserver context data */
+	xid_t xid;
+	struct vx_info *vx_info;
+
+/* vserver network data */
+	nid_t nid;
+	struct nx_info *nx_info;
+
 /* Thread group tracking */
    	u32 parent_exec_id;
    	u32 self_exec_id;
--- linux-2.6.11.11/include/linux/types.h	2004-12-25 01:55:30 +0100
+++ linux-2.6.11.11-vs2.0-rc3/include/linux/types.h	2005-06-01 14:34:17 +0200
@@ -36,6 +36,8 @@ typedef __kernel_uid32_t	uid_t;
 typedef __kernel_gid32_t	gid_t;
 typedef __kernel_uid16_t        uid16_t;
 typedef __kernel_gid16_t        gid16_t;
+typedef unsigned int		xid_t;
+typedef unsigned int		nid_t;
 
 #ifdef CONFIG_UID16
 /* This is defined by include/asm-{arch}/posix_types.h */
--- linux-2.6.11.11/kernel/Makefile	2004-12-25 01:55:30 +0100
+++ linux-2.6.11.11-vs2.0-rc3/kernel/Makefile	2005-06-01 14:34:17 +0200
@@ -9,6 +9,9 @@ obj-y     = sched.o fork.o exec_domain.o
 	    rcupdate.o intermodule.o extable.o params.o posix-timers.o \
 	    kthread.o wait.o kfifo.o sys_ni.o
 
+subdir-y	+= vserver
+obj-y	  += vserver/vserver.o
+
 obj-$(CONFIG_FUTEX) += futex.o
 obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
 obj-$(CONFIG_SMP) += cpu.o spinlock.o
--- linux-2.6.11.11/kernel/fork.c	2005-03-02 12:39:08 +0100
+++ linux-2.6.11.11-vs2.0-rc3/kernel/fork.c	2005-06-01 14:34:17 +0200
@@ -82,6 +85,8 @@ static kmem_cache_t *task_struct_cachep;
 void free_task(struct task_struct *tsk)
 {
 	free_thread_info(tsk->thread_info);
+	clr_vx_info(&tsk->vx_info);
+	clr_nx_info(&tsk->nx_info);
 	free_task_struct(tsk);
 }
 EXPORT_SYMBOL(free_task);
--- linux-2.6.11.11/kernel/fork.c	2005-03-02 12:39:08 +0100
+++ linux-2.6.11.11-vs2.0-rc3/kernel/fork.c	2005-06-01 14:34:17 +0200
@@ -793,6 +804,8 @@ static task_t *copy_process(unsigned lon
 {
 	int retval;
 	struct task_struct *p = NULL;
+	struct vx_info *vxi;
+	struct nx_info *nxi;
 
 	if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS))
 		return ERR_PTR(-EINVAL);
--- linux-2.6.11.11/kernel/vserver/Kconfig	1970-01-01 01:00:00 +0100
+++ linux-2.6.11.11-vs2.0-rc3/kernel/vserver/Kconfig	2005-06-01 14:34:17 +0200
@@ -0,0 +1,146 @@
+#
+# Linux VServer configuration
+#
+
+config	VSERVER
+	bool
+	default y
+
+config	VSERVER_SECURITY
+	bool
+	depends on SECURITY
+	default y
+	select SECURITY_CAPABILITIES
+
+config	VSERVER_LEGACYNET
+	bool
+	depends on !VSERVER_NGNET
+	default y
+
+menu "Linux VServer"
+
+config	VSERVER_LEGACY
+	bool	"Enable Legacy Kernel API"
+	default y
+	help
+	  This enables the legacy API used in vs1.xx, which allows
+	  to use older tools (for migration purposes).
+
+config	VSERVER_NGNET
+	bool	"Disable Legacy Networking Kernel API"
+	depends on EXPERIMENTAL
+	default n
+	help
+	  This disables the legacy networking API which is required
+	  by the chbind tool. Do not disable it unless you exactly
+	  know what you are doing.
+
+config	VSERVER_PROC_SECURE
+	bool	"Enable Proc Security"
+	depends on PROC_FS
+	default y
+	help
+	  Hide proc entries by default for xid>1
+
+config	VSERVER_HARDCPU
+	bool	"Enable Hard CPU Limits"
+	depends on EXPERIMENTAL
+	default n
+	help
+	  Activate the Hard CPU Limits
+
+config	VSERVER_HARDCPU_IDLE
+	bool	"Limit the IDLE task"
+	depends on VSERVER_HARDCPU
+	default n
+	help
+	  Limit the idle slices, so the the next context
+	  will be scheduled as soon as possible.
+	  might improve interactivity/latency but
+	  increases scheduling overhead.
+
+choice
+	prompt	"Persistent Inode Context Tagging"
+	default	INOXID_UGID24
+	help
+	  This adds persistent context information to filesystems
+	  mounted with the tagxid option. Tagging is a requirement
+	  for per context disk limits and per context quota.
+
+
+config	INOXID_NONE
+	bool	"Disabled"
+	help
+	  no context information is store for inodes
+
+config	INOXID_UID16
+	bool	"UID16/GID32"
+	help
+	  reduces UID to 16 bit, but leaves GID at 32 bit.
+
+config	INOXID_GID16
+	bool	"UID32/GID16"
+	help
+	  reduces GID to 16 bit, but leaves UID at 32 bit.
+
+config	INOXID_UGID24
+	bool	"UID24/GID24"
+	help
+	  uses the upper 8bit from UID and GID for XID tagging
+	  which leaves 24bit for UID/GID each, which should be
+	  more than sufficient for normal use.
+
+config	INOXID_INTERN
+	bool	"UID32/GID32"
+	help
+	  this uses otherwise reserved inode fields in the on
+	  disk representation, which limits the use to a few
+	  filesystems (currently ext2 and ext3)
+
+config	INOXID_RUNTIME
+	bool	"Runtime"
+	depends on EXPERIMENTAL
+	help
+	  inodes are tagged when first accessed, this doesn't
+	  require any persistant information, but might give
+	  funny results for mixed access.
+
+endchoice
+
+config	XID_TAG_NFSD
+	bool	"Tag NFSD User Auth and Files"
+	default n
+	help
+	  Enable this if you do want the kernel nfsd to
+	  use the xid tagging specified above.
+	  (will require patched clients too)
+
+config	VSERVER_DEBUG
+	bool	"VServer Debugging Code"
+	default n
+	help
+	  Set this to yes if you want to be able to activate
+	  debugging output at runtime. It adds a probably small
+	  overhead (~ ??%) to all vserver related functions and
+	  increases the kernel size by about 20k.
+
+config	VSERVER_HISTORY
+	bool	"VServer History Tracing"
+	depends on VSERVER_DEBUG
+	default n
+	help
+	  Set this to yes if you want to record the history of
+	  linux-vserver activities, so they can be replayed on
+	  a kernel panic (oops)
+
+config	VSERVER_HISTORY_SIZE
+	int "Per CPU History Size (32-65536)"
+	depends on VSERVER_HISTORY
+	range 32 65536
+	default 64
+	help
+	  This allows you to specify the number of entries in
+	  the per CPU history buffer.
+
+endmenu
+
--- linux-2.6.11.11/kernel/vserver/Makefile	1970-01-01 01:00:00 +0100
+++ linux-2.6.11.11-vs2.0-rc3/kernel/vserver/Makefile	2005-06-01 14:34:17 +0200
@@ -0,0 +1,16 @@
+#
+# Makefile for the Linux vserver routines.
+#
+
+
+obj-y		+= vserver.o
+
+vserver-y	:= switch.o context.o namespace.o sched.o network.o inode.o \
+		   limit.o cvirt.o signal.o helper.o init.o dlimit.o
+
+vserver-$(CONFIG_PROC_FS) += proc.o
+vserver-$(CONFIG_VSERVER_DEBUG) += sysctl.o
+vserver-$(CONFIG_VSERVER_LEGACY) += legacy.o
+vserver-$(CONFIG_VSERVER_LEGACYNET) += legacynet.o
+vserver-$(CONFIG_VSERVER_HISTORY) += history.o
+
--- linux-2.6.11.11/kernel/vserver/init.c	1970-01-01 01:00:00 +0100
+++ linux-2.6.11.11-vs2.0-rc3/kernel/vserver/init.c	2005-06-01 14:34:17 +0200
@@ -0,0 +1,44 @@
+/*
+ *  linux/kernel/init.c
+ *
+ *  Virtual Server Init
+ *
+ *  Copyright (C) 2004-2005  Herbert Pötzl
+ *
+ *  V0.01  basic structure
+ *
+ */
+
+#include <linux/config.h>
+#include <linux/errno.h>
+#include <linux/init.h>
+#include <linux/module.h>
+
+int	vserver_register_sysctl(void);
+void	vserver_unregister_sysctl(void);
+
+
+static int __init init_vserver(void)
+{
+	int ret = 0;
+
+#ifdef	CONFIG_VSERVER_DEBUG
+	vserver_register_sysctl();
+#endif
+	return ret;
+}
+
+
+static void __exit exit_vserver(void)
+{
+
+#ifdef	CONFIG_VSERVER_DEBUG
+	vserver_unregister_sysctl();
+#endif
+	return;
+}
+
+
+module_init(init_vserver);
+module_exit(exit_vserver);
+
