WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] RHEL3 2.4 domU kernel has load average of 2

To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH] RHEL3 2.4 domU kernel has load average of 2
From: John Byrne <john.l.byrne@xxxxxx>
Date: Fri, 23 Feb 2007 14:49:23 -0800
Delivery-date: Fri, 23 Feb 2007 14:48:49 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.9 (X11/20060911)
The backport of the xenbus code for the 2.4 kernel changed
wait_event_interruptible() into wait_event() into a couple of places it
looks to deal with the fact that signals weren't being blocked. This
results in an idle domU showing a load-average of 2, which was messing
up some work-management tools.

The attached patch blocks all signals for the xenbus and xenwatch
daemons, instead.

Signed-off-by: John Byrne <john.l.byrne@xxxxxx>


diff -Nar -U4 linux-2.4.21/drivers/xen/xenbus/xenbus_comms.c 
linux-2.4.21/drivers/xen/xenbus/xenbus_comms.c
--- linux-2.4.21/drivers/xen/xenbus/xenbus_comms.c      2007-02-23 
14:46:17.000000000 -0600
+++ linux-2.4.21/drivers/xen/xenbus/xenbus_comms.c      2007-02-23 
14:54:55.000000000 -0600
@@ -149,9 +149,9 @@
        while (len != 0) {
                unsigned int avail;
                const char *src;
 
-               wait_event/*_interruptible*/(xb_waitq,
+               wait_event_interruptible(xb_waitq,
                                         intf->rsp_cons != intf->rsp_prod);
 
                /* Read indexes, then verify. */
                cons = intf->rsp_cons;
diff -Nar -U4 linux-2.4.21/drivers/xen/xenbus/xenbus_xs.c 
linux-2.4.21/drivers/xen/xenbus/xenbus_xs.c
--- linux-2.4.21/drivers/xen/xenbus/xenbus_xs.c 2007-02-23 14:46:17.000000000 
-0600
+++ linux-2.4.21/drivers/xen/xenbus/xenbus_xs.c 2007-02-23 14:53:53.000000000 
-0600
@@ -45,8 +45,21 @@
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
 #include <linux/module.h>
 #include <linux/uio.h>
 #define kvec iovec
+
+static void block_signals(void)
+{
+       sigset_t blocked;
+
+       sigfillset(&blocked);
+       spin_lock_irq(&current->sighand->siglock);
+       current->blocked = blocked;
+       recalc_sigpending();
+       spin_unlock_irq(&current->sighand->siglock);
+       flush_signals(current);
+}
+
 #endif
 
 /* xenbus_probe.c */
 extern char *kasprintf(const char *fmt, ...);
@@ -712,8 +722,9 @@
        struct xs_stored_msg *msg;
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
        daemonize();
+       block_signals();
        memcpy(current->comm, "xenwatch", 10);
 #endif
 
 
@@ -724,11 +735,10 @@
                schedule();
 #endif
 
        for (;;) {
-               /* XXXAP _interruptable spins here after killall */
-               wait_event(watch_events_waitq,
-                          !list_empty(&watch_events));
+               wait_event_interruptible(watch_events_waitq,
+                                        !list_empty(&watch_events));
 
 #if 0                          /* XXXAP 2.4 */
                if (kthread_should_stop())
                        break;
@@ -827,8 +837,9 @@
        int err;
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
        daemonize();
+       block_signals();
        memcpy(current->comm, "xenbus", 8);
 #endif
 
 #ifdef CONFIG_HOTPLUG_CPU
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>