git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.13-vs2...
[linux-2.6.git]
/
kernel
/
vserver
/
switch.c
diff --git
a/kernel/vserver/switch.c
b/kernel/vserver/switch.c
index
f35bec2
..
841213f
100644
(file)
--- a/
kernel/vserver/switch.c
+++ b/
kernel/vserver/switch.c
@@
-14,7
+14,6
@@
*
*/
*
*/
-#include <linux/config.h>
#include <linux/linkage.h>
#include <linux/sched.h>
#include <linux/compat.h>
#include <linux/linkage.h>
#include <linux/sched.h>
#include <linux/compat.h>
@@
-28,6
+27,10
@@
static inline
int vc_get_version(uint32_t id)
{
static inline
int vc_get_version(uint32_t id)
{
+#ifdef CONFIG_VSERVER_LEGACY_VERSION
+ if (id == 63)
+ return VCI_LEGACY_VERSION;
+#endif
return VCI_VERSION;
}
return VCI_VERSION;
}
@@
-40,18
+43,18
@@
int vc_get_version(uint32_t id)
#include <linux/vserver/inode_cmd.h>
#include <linux/vserver/dlimit_cmd.h>
#include <linux/vserver/signal_cmd.h>
#include <linux/vserver/inode_cmd.h>
#include <linux/vserver/dlimit_cmd.h>
#include <linux/vserver/signal_cmd.h>
+#include <linux/vserver/namespace_cmd.h>
#include <linux/vserver/legacy.h>
#include <linux/vserver/legacy.h>
-#include <linux/vserver/namespace.h>
#include <linux/vserver/inode.h>
#include <linux/vserver/dlimit.h>
#ifdef CONFIG_COMPAT
#include <linux/vserver/inode.h>
#include <linux/vserver/dlimit.h>
#ifdef CONFIG_COMPAT
-#define
__COMPAT(name, id, data, compat)
\
+#define
__COMPAT(name, id, data, compat)
\
(compat) ? name ## _x32 (id, data) : name (id, data)
#else
(compat) ? name ## _x32 (id, data) : name (id, data)
#else
-#define
__COMPAT(name, id, data, compat)
\
+#define
__COMPAT(name, id, data, compat)
\
name (id, data)
#endif
name (id, data)
#endif
@@
-104,10
+107,10
@@
long do_vserver(uint32_t cmd, uint32_t id, void __user *data, int compat)
case VCMD_nx_info:
return vc_nx_info(id, data);
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_set_namespace:
return vc_set_namespace(id, data);
- case VCMD_cleanup_namespace:
- return vc_cleanup_namespace(id, data);
}
/* those are allowed while in setup too */
}
/* those are allowed while in setup too */
@@
-125,16
+128,23
@@
long do_vserver(uint32_t cmd, uint32_t id, void __user *data, int compat)
#endif
switch (cmd) {
#endif
switch (cmd) {
+#ifdef CONFIG_IA32_EMULATION
+ case VCMD_get_rlimit:
+ return __COMPAT(vc_get_rlimit, id, data, compat);
+ case VCMD_set_rlimit:
+ return __COMPAT(vc_set_rlimit, id, data, compat);
+#else
case VCMD_get_rlimit:
return vc_get_rlimit(id, data);
case VCMD_set_rlimit:
return vc_set_rlimit(id, data);
case VCMD_get_rlimit:
return vc_get_rlimit(id, data);
case VCMD_set_rlimit:
return vc_set_rlimit(id, data);
+#endif
case VCMD_get_rlimit_mask:
return vc_get_rlimit_mask(id, data);
case VCMD_get_rlimit_mask:
return vc_get_rlimit_mask(id, data);
- case VCMD_
vx_
get_vhi_name:
+ case VCMD_get_vhi_name:
return vc_get_vhi_name(id, data);
return vc_get_vhi_name(id, data);
- case VCMD_
vx_
set_vhi_name:
+ case VCMD_set_vhi_name:
return vc_set_vhi_name(id, data);
case VCMD_set_cflags:
return vc_set_vhi_name(id, data);
case VCMD_set_cflags:
@@
-209,6
+219,8
@@
long do_vserver(uint32_t cmd, uint32_t id, void __user *data, int compat)
return vc_ctx_create(id, NULL);
case VCMD_ctx_create:
return vc_ctx_create(id, data);
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);
case VCMD_ctx_migrate:
return vc_ctx_migrate(id, data);
@@
-218,6
+230,10
@@
long do_vserver(uint32_t cmd, uint32_t id, void __user *data, int compat)
return vc_net_create(id, data);
case VCMD_net_migrate:
return vc_net_migrate(id, data);
return vc_net_create(id, data);
case VCMD_net_migrate:
return vc_net_migrate(id, data);
+ case VCMD_net_add:
+ return vc_net_add(id, data);
+ case VCMD_net_remove:
+ return vc_net_remove(id, data);
}
return -ENOSYS;
}
return -ENOSYS;
@@
-226,7
+242,13
@@
long do_vserver(uint32_t cmd, uint32_t id, void __user *data, int compat)
extern asmlinkage long
sys_vserver(uint32_t cmd, uint32_t id, void __user *data)
{
extern asmlinkage long
sys_vserver(uint32_t cmd, uint32_t id, void __user *data)
{
- return do_vserver(cmd, id, data, 0);
+ long ret = do_vserver(cmd, id, data, 0);
+
+ vxdprintk(VXD_CBIT(switch, 1),
+ "vc: VCMD_%02d_%d[%d] = %08lx(%ld)",
+ VC_CATEGORY(cmd), VC_COMMAND(cmd),
+ VC_VERSION(cmd), ret, ret);
+ return ret;
}
#ifdef CONFIG_COMPAT
}
#ifdef CONFIG_COMPAT
@@
-234,7
+256,13
@@
sys_vserver(uint32_t cmd, uint32_t id, void __user *data)
extern asmlinkage long
sys32_vserver(uint32_t cmd, uint32_t id, void __user *data)
{
extern asmlinkage long
sys32_vserver(uint32_t cmd, uint32_t id, void __user *data)
{
- return do_vserver(cmd, id, data, 1);
+ long ret = do_vserver(cmd, id, data, 1);
+
+ vxdprintk(VXD_CBIT(switch, 1),
+ "vc: VCMD_%02d_%d[%d] = %08lx(%ld)",
+ VC_CATEGORY(cmd), VC_COMMAND(cmd),
+ VC_VERSION(cmd), ret, ret);
+ return ret;
}
#endif /* CONFIG_COMPAT */
}
#endif /* CONFIG_COMPAT */