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 1 of 2] hotplug: add hotplug-status disconnected

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 1 of 2] hotplug: add hotplug-status disconnected
From: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
Date: Fri, 16 Sep 2011 17:36:58 +0200
Delivery-date: Fri, 16 Sep 2011 08:42:30 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:content-type:mime-version:content-transfer-encoding:subject :x-mercurial-node:message-id:in-reply-to:references:user-agent:date :from:to; bh=AkVoZKr0qu4IJY9mG9zBgMvhNm39PgGvx9+N7jUyI90=; b=xzCDxB1/mRkP0eMrKk6CignOtOt1X/9Ps4GLm1MvnLVteE8viz4Y2Xfpt/GKIuZUWG LHeiNXiT79/JFzpCryXsFSoOva95nV15yFquejjbRPvBaeuZ/Gg4bNUpKpBxdxjJ5VWs Hl5roiH3Ip2nm04SMoNyFIszpUyBNY+f6sKhU=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1316187417@loki>
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/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1316187417@loki>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.8.4
# HG changeset patch
# User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>
# Date 1316186985 -7200
# Node ID 00949e363f6f2c70001da548403475628df93b97
# Parent  63e254468d6e8d81baeafaed68f05791dc21eb4e
hotplug: add hotplug-status disconnected

Added hotplug-status disconnected when vbd are removed.

Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx>

diff -r 63e254468d6e -r 00949e363f6f tools/hotplug/Linux/block
--- a/tools/hotplug/Linux/block Wed Sep 14 14:18:40 2011 +0200
+++ b/tools/hotplug/Linux/block Fri Sep 16 17:29:45 2011 +0200
@@ -321,6 +321,7 @@ mount it read-write in a guest domain."
   remove)
     case $t in 
       phy)
+       xenstore_write "$XENBUS_PATH/hotplug-status" "disconnected"
        exit 0
        ;;
 
@@ -329,6 +330,7 @@ mount it read-write in a guest domain."
         node=$(xenstore_read "$XENBUS_PATH/node")
        losetup -d "$node"
         release_lock "block"
+       xenstore_write "$XENBUS_PATH/hotplug-status" "disconnected"
        exit 0
        ;;
 
diff -r 63e254468d6e -r 00949e363f6f tools/hotplug/NetBSD/block
--- a/tools/hotplug/NetBSD/block        Wed Sep 14 14:18:40 2011 +0200
+++ b/tools/hotplug/NetBSD/block        Fri Sep 16 17:29:45 2011 +0200
@@ -19,7 +19,7 @@ error() {
 
 xpath=$1
 xstatus=$2
-xtype=$(xenstore-read "$xpath/type")
+xtype=$3
 xparams=$(xenstore-read "$xpath/params")
 
 case $xstatus in
@@ -38,6 +38,8 @@ 6)
                echo "unknown type $xtype" >&2
                ;;
        esac
+       echo xenstore-write $xpath/hotplug-status disconnected
+       xenstore-write $xpath/hotplug-status disconnected
        xenstore-rm $xpath
        exit 0
        ;;
diff -r 63e254468d6e -r 00949e363f6f tools/xenbackendd/xenbackendd.c
--- a/tools/xenbackendd/xenbackendd.c   Wed Sep 14 14:18:40 2011 +0200
+++ b/tools/xenbackendd/xenbackendd.c   Fri Sep 16 17:29:45 2011 +0200
@@ -89,15 +89,15 @@ dodebug(const char *fmt, ...)
 }
 
 static void
-doexec(const char *cmd, const char *arg1, const char *arg2)
+doexec(const char *cmd, const char *arg1, const char *arg2, const char *arg3)
 {
-       dodebug("exec %s %s %s", cmd, arg1, arg2);
+       dodebug("exec %s %s %s %s", cmd, arg1, arg2, arg3);
        switch(vfork()) {
        case -1:
                dolog(LOG_ERR, "can't vfork: %s", strerror(errno));
                break;
        case 0:
-               execl(cmd, cmd, arg1, arg2, NULL);
+               execl(cmd, cmd, arg1, arg2, arg3, NULL);
                dolog(LOG_ERR, "can't exec %s: %s", cmd, strerror(errno));
                exit(EXIT_FAILURE);
                /* NOTREACHED */
@@ -145,11 +145,14 @@ xen_setup(void)
 int
 main(int argc, char * const argv[])
 {
+       struct stat stab;
        char **vec;
        unsigned int num;
        char *s;
        int state;
        char *sstate;
+       char *stype;
+       char *params;
        char *p;
        char buf[80];
        int type;
@@ -169,7 +172,7 @@ main(int argc, char * const argv[])
                        log_file = optarg;
                        break;
                case 'p':
-                       pidfile = pidfile;
+                       pidfile = optarg;
                case 's':
                        vbd_script = optarg;
                        break;
@@ -297,11 +300,38 @@ main(int argc, char * const argv[])
                                    strerror(errno));
                                goto next2;
                        }
-                       doexec(s, vec[XS_WATCH_PATH], sstate);
+                       doexec(s, vec[XS_WATCH_PATH], sstate, NULL);
                        break;
 
                case DEVTYPE_VBD:
-                       doexec(vbd_script, vec[XS_WATCH_PATH], sstate);
+                       /* check if given file is a block device or a raw image 
*/
+                       snprintf(buf, sizeof(buf), "%s/params", 
vec[XS_WATCH_PATH]);
+                       params = xs_read(xs, XBT_NULL, buf, 0);
+                       if(params == NULL) {
+                               dolog(LOG_ERR,
+                                   "Failed to read %s (%s)", buf, 
strerror(errno));
+                               goto next2;
+                       }
+                       if (stat(params, &stab) < 0) {
+                               dolog(LOG_ERR,
+                                   "Failed to get info about %s (%s)", params,
+                                   strerror(errno));
+                               goto next3;
+                       }
+                       stype = NULL;
+                       if (S_ISBLK(stab.st_mode))
+                               stype = "phy";
+                       if (S_ISREG(stab.st_mode))
+                               stype = "file";
+                       if (stype == NULL) {
+                               dolog(LOG_ERR,
+                                   "Failed to attach %s (not a block device or 
raw image)",
+                                   params, strerror(errno));
+                               goto next3;
+                       }
+                       doexec(vbd_script, vec[XS_WATCH_PATH], sstate, stype);
+next3:
+                       free(params);
                        break;
 
                default:

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel