Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 188232

Summary: sys-kernel/openvz-sources-028.027 fails to build without CONFIG_VE defined
Product: Gentoo Linux Reporter: j.habenicht
Component: [OLD] Core systemAssignee: Gentoo VPS Team (OBSOLETE) <vserver-devs+disabled>
Status: RESOLVED UPSTREAM    
Severity: normal    
Priority: High    
Version: 2006.1   
Hardware: x86   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---

Description j.habenicht 2007-08-09 13:52:14 UTC
openvz sources don't build if CONFIG_VE is not defined.

Ok, this leaves some space open to discuss, whether it is sensible or not to undefine OpenVZ in an OpenVZ kernel. But IMHO this should be possible.


regards


Reproducible: Always

Steps to Reproduce:
1. emerge =sys-kernel/openvz-sources-028.027
2. undefine "OpenVZ  ---> [ ] Virtual Environment support" i.e. CONFIG_VE
3. make

Actual Results:  
make breaks at
linux-2.6.18-openvz-028.027 # make kernel/sched.o
  CHK     include/linux/version.h
  CHK     include/linux/utsrelease.h
  CC      kernel/sched.o
kernel/sched.c: In function `__activate_task':
kernel/sched.c:1721: Warnung: implizite Deklaration der Funktion »ve_stop_idle«
kernel/sched.c:1721: Fehler: »ve« nicht deklariert (erste Benutzung in dieser Funktion)
kernel/sched.c:1721: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt
kernel/sched.c:1721: Fehler: für jede Funktion in der er auftritt.)
kernel/sched.c: In function `deactivate_task':
kernel/sched.c:1874: Fehler: »pcpu« nicht deklariert (erste Benutzung in dieser Funktion)
kernel/sched.c:1891: Warnung: implizite Deklaration der Funktion »ve_strt_idle«
kernel/sched.c:1891: Fehler: »ve« nicht deklariert (erste Benutzung in dieser Funktion)
kernel/sched.c:1891: Fehler: »cpu« nicht deklariert (erste Benutzung in dieser Funktion)
kernel/sched.c: In function `idle_balance':
kernel/sched.c:4080: Warnung: keine return-Anweisung in nicht void zurückgebender Funktion
kernel/sched.c: In function `vsched_add_vcpu':
kernel/sched.c:8380: Fehler: ungültige Anwendung von »sizeof« auf unvollständigen Typen »ve_cpu_stats«
kernel/sched.c:8380: Warnung: implizite Deklaration der Funktion »VE_CPU_STATS«
kernel/sched.c:8380: Fehler: structure hat kein Element namens »owner_env«
kernel/sched.c:8380: Fehler: ungültige Anwendung von »sizeof« auf unvollständigen Typen »ve_cpu_stats«
kernel/sched.c:8380: Warnung: Verarbeiten des Argumentes 1 von »__constant_c_and_count_memset« erzeugt Zeiger von Ganzzahl ohne Typkonvertierung
kernel/sched.c:8380: Fehler: structure hat kein Element namens »owner_env«
kernel/sched.c:8380: Fehler: ungültige Anwendung von »sizeof« auf unvollständigen Typen »ve_cpu_stats«
kernel/sched.c:8380: Warnung: Verarbeiten des Argumentes 1 von »__constant_c_memset« erzeugt Zeiger von Ganzzahl ohne Typkonvertierung
kernel/sched.c:8380: Fehler: ungültige Anwendung von »sizeof« auf unvollständigen Typen »ve_cpu_stats«
kernel/sched.c:8380: Fehler: structure hat kein Element namens »owner_env«
kernel/sched.c:8380: Fehler: ungültige Anwendung von »sizeof« auf unvollständigen Typen »ve_cpu_stats«
kernel/sched.c:8380: Warnung: Verarbeiten des Argumentes 1 von »__memset_generic« erzeugt Zeiger von Ganzzahl ohne Typkonvertierung
kernel/sched.c:8380: Fehler: structure hat kein Element namens »owner_env«
kernel/sched.c:8380: Fehler: ungültige Anwendung von »sizeof« auf unvollständigen Typen »ve_cpu_stats«
kernel/sched.c:8380: Warnung: Verarbeiten des Argumentes 1 von »__memset_generic« erzeugt Zeiger von Ganzzahl ohne Typkonvertierung
kernel/sched.c:8383: Fehler: structure hat kein Element namens »owner_env«
kernel/sched.c: At top level:
kernel/sched.c:902: Fehler: Speichergröße von »kstat_glob« ist unbekannt
make[1]: *** [kernel/sched.o] Error 1
make: *** [kernel/sched.o] Error 2



It seems that __activate_task() needs more #ifdefs

static void __activate_task(struct task_struct *p, struct rq *rq)
{
        struct prio_array *target = rq->active;
        cycles_t cycles;
#ifdef CONFIG_VE
        struct ve_struct *ve;

        cycles = get_cycles();
        write_wakeup_stamp(p, cycles);
        p->ve_task_info.sleep_time += cycles;
        ve = VE_TASK_INFO(p)->owner_env;
#endif
        if (batch_task(p))
                target = rq->expired;
        enqueue_task(p, target);
        inc_nr_running(p, rq);
        inc_nr_running(p, rq);
here ->>        ve_nr_running_inc(ve, task_cpu(p));
        nr_running_inc(smp_processor_id());
        if (rq->nr_running == 1) {
and here ->>                ve_stop_idle(ve, task_vcpu(p), cycles);
                vcpu_attach(rq);
        }
}
Comment 1 Benedikt Böhm (RETIRED) gentoo-dev 2007-10-20 16:07:47 UTC
it is not supported upstream at this time