]> git.pld-linux.org Git - packages/util-vserver.git/blob - util-vserver-pivot-root-ugly-hack.patch
- rel 3; R texlive-fonts-rsfs
[packages/util-vserver.git] / util-vserver-pivot-root-ugly-hack.patch
1 diff -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;
44 @@ -71,7 +71,13 @@
45      case vcFEATURE_VSTAT       :  return ver >= 0x00020103 && ver < 0x00020306;
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;
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
52 +    case vcFEATURE_PIVOT_ROOT  :  return (ver >= 0x00020304) &&
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.0539 seconds and 3 git commands to generate.