[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-API] [PATCH 1 of 3] scripts/block: Update and disable blkback queue state callbacks



# HG changeset patch
# User Daniel Stodden <daniel.stodden@xxxxxxxxxx>
# Date 1278590394 -3600
# Node ID 95410b9efc9a51ccefa25f2e5048c25cef2bd1b4
# Parent  383da5eaa8ae4555c33afea04d5f7a19c5c726c3
scripts/block: Update and disable blkback queue state callbacks.

Fixed, then disabled for now. The change handler is only left around
for reference, and upstreaming to xen.org, eventually.

The queue state variable in kernel space was eliminated, we now exit
the dispatcher for any of pause/shutdown/disconnect operations.
Instead we cleanly write/remove the kthread-pid before signalling
transitions.

Scripts now can hook into shutdown-done too. This is useful because
the hotplug scripts want time to ack the shutdown change, before the
agent gets to remove the backend. Exit signalling might later aid in
other areas, e.g. for consistent ionice modes.

Signed-off-by: Daniel Stodden <daniel.stodden@xxxxxxxxxx>

diff -r 383da5eaa8ae -r 95410b9efc9a scripts/block
--- a/scripts/block     Thu Jul 08 11:21:19 2010 +0100
+++ b/scripts/block     Thu Jul 08 12:59:54 2010 +0100
@@ -11,9 +11,15 @@
 XAPI=/xapi/${DOMID}/hotplug/${TYPE}/${DEVID}
 
 HOTPLUG="${XAPI}/hotplug"
+
+KTHREAD_PID="${XENBUS_PATH}/kthread-pid"
+
 PAUSE="${XENBUS_PATH}/pause"
 PAUSE_DONE="${XENBUS_PATH}/pause-done"
 
+SHUTDOWN="${XENBUS_PATH}/shutdown-request"
+SHUTDOWN_DONE="${XENBUS_PATH}/shutdown-done"
+
 syslog ()
 {
        logger -pdaemon.info -tscripts-block -- "$DEVNAME[$ACTION]: $*"
@@ -24,26 +30,37 @@
        syslog "writing $HOTPLUG = online"
        xenstore write "$HOTPLUG" "online"
 
-       echo $(((1<<1) | (1<<3))) > $SYSFS_PATH/queue_events # running|paused
+       # RUNNING          (1<<0)
+       # PAUSE_DONE       (1<<1)
+       # SHUTDOWN_DONE    (1<<2)
+       # PAUSE_REQUEST    (1<<3)
+       # SHUTDOWN_REQUEST (1<<4)
+
+       # echo $(((1<<1) | (1<<3))) > $SYSFS_PATH/queue_events # unpaused|paused
        ;;
 
 change)
-       state=$(xenstore read "${XENBUS_PATH}/queue-state")
-       case "$state" in
-               1) state=running;;
-               3) state=paused;;
-               *) state="unexpected-$state";;
-       esac
+       if pid=$(xenstore read "$KTHREAD_PID" 2>/dev/null)
+       then
+               state=running
+       else
+               state=stopped
+       fi
 
-       syslog "queue-state = $state"
+       syslog "kthread-pid = '$pid'"
 
        case "$state" in
-               paused)
+               stopped)
                        if xenstore exists "$PAUSE"
                        then
                                syslog "writing $PAUSE_DONE"
                                xenstore write "$PAUSE_DONE" ""
                        fi
+                       if xenstore exists "$SHUTDOWN"
+                       then
+                               syslog "writing $SHUTDOWN_DONE"
+                               xenstore write "$SHUTDOWN_DONE" ""
+                       fi
                        ;;
                running)
                        if xenstore exists "$PAUSE_DONE"
@@ -51,12 +68,16 @@
                                syslog "removing $PAUSE_DONE"
                                xenstore rm "$PAUSE_DONE"
                        fi
+                       if xenstore exists "$SHUTDOWN_DONE"
+                       then
+                               syslog "WARNING: queue restart in shutdown 
state."
+                       fi
                        ;;
        esac
        ;;
 
 remove)
        syslog "removing $HOTPLUG"
-       xenstore rm "${XAPI}/hotplug"
+       xenstore rm "$HOTPLUG"
        ;;
 esac
 scripts/block |  41 +++++++++++++++++++++++++++++++----------
 1 files changed, 31 insertions(+), 10 deletions(-)


Attachment: blkback-next-scripts-block.diff
Description: Text Data

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.