]> git.pld-linux.org Git - packages/util-vserver.git/blame - util-vserver-pivot-root-ugly-hack.patch
- rel 3; R texlive-fonts-rsfs
[packages/util-vserver.git] / util-vserver-pivot-root-ugly-hack.patch
CommitLineData
94a3845f
JR
1diff -ur util-vserver-0.30.216-pre2833/lib/issupported.c util-vserver-0.30.216-pre2833-uname/lib/issupported.c
2--- util-vserver-0.30.216-pre2833/lib/issupported.c 2009-04-10 22:24:15.000000000 +0200
3+++ util-vserver-0.30.216-pre2833-uname/lib/issupported.c 2009-06-15 17:45:06.335273350 +0200
4@@ -20,17 +20,39 @@
5 # include <config.h>
6 #endif
7
8+#include <string.h>
9+#include <sys/utsname.h>
10 #include "vserver.h"
11 #include "assert.h"
12
13 bool
14 vc_isSupported(vcFeatureSet feature)
15 {
16+ int kver = 0, i, j = 24, k = 0;
17+ struct utsname uts;
18 int ver = vc_get_version();
19 vc_vci_t conf = vc_get_vci();
20 if (ver==-1) return false;
21 if (conf==(vc_vci_t)-1) conf = 0;
22
23+ if (uname(&uts)==-1) {
24+ return false;
25+ } else {
26+ for (i=0; i<strlen(uts.release); i++) {
27+ if (uts.release[i] >= '0' && uts.release[i] <= '9') {
28+ k <<= 4;
29+ k |= uts.release[i] - '0';
30+ } else if (uts.release[i] == '.') {
31+ kver |= (k << j);
32+ j -= 8;
33+ k = 0;
34+ } else
35+ break;
36+ }
37+ if (k != 0 && j >= 0)
38+ kver |= (k << j);
39+ }
40+
41 switch (feature) {
42 case vcFEATURE_COMPAT : return true;
43 case vcFEATURE_VSHELPER0 : return ver >= 0x00010000 && ver < 0x00010010;
93b0c878
AM
44@@ -71,7 +71,13 @@
45 case vcFEATURE_VSTAT : return ver >= 0x00020103 && ver < 0x00020306;
94a3845f
JR
46 case vcFEATURE_PPTAG : return conf & VC_VCI_PPTAG;
47 case vcFEATURE_SPACES : return conf & VC_VCI_SPACES;
48- case vcFEATURE_PIVOT_ROOT : return ver >= 0x00020304;
93b0c878
AM
49+ // Now THIS is really ugly hack, only vs2.3 patches for kernels below
50+ // have pivot_root working for vservers, so we assume people use recent
51+ // patches with recent kernels
94a3845f 52+ case vcFEATURE_PIVOT_ROOT : return (ver >= 0x00020304) &&
93b0c878
AM
53+ ((kver >= 0x02062723 && kver < 0x02062800) ||
54+ (kver >= 0x02062811 && kver < 0x02062900) ||
55+ (kver >= 0x02062901));
56 case vcFEATURE_PIDSPACE : return false;
57 case vcFEATURE_MEMCG : return ver >= 0x00020306 && conf & VC_VCI_MEMCG;
58 case vcFEATURE_DYNAMIC : return ver < 0x00020300 || !(conf & VC_VCI_NO_DYNAMIC);
59
This page took 0.089212 seconds and 4 git commands to generate.