[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3 of 6] xenbackendd: pass type of block device to hotplug script
On Thu, 2011-09-22 at 13:01 +0100, Roger Pau Monne wrote: > # HG changeset patch > # User Roger Pau Monne <roger.pau@xxxxxxxxxxxxx> > # Date 1316692489 -7200 > # Node ID 2d77cbdc816bc943e9e69ecca34ae7157079045a > # Parent 1d3830f8a7306088b49d5732b5e88a73c2bc0315 > xenbackendd: pass type of block device to hotplug script > > Pass the type of block device to attach to the block script instead of > reading it from xenstore, since new Xen versions don't make a difference > between a block device or an image. > > Signed-off-by: Roger Pau Monne <roger.pau@xxxxxxxxxxxxx> I've not got any problem with this one, but I don't think my ACK is worth much since it's NetBSD and I'm not really qualified, neverless: Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > > diff -r 1d3830f8a730 -r 2d77cbdc816b tools/hotplug/NetBSD/block > --- a/tools/hotplug/NetBSD/block Thu Sep 22 13:54:42 2011 +0200 > +++ b/tools/hotplug/NetBSD/block Thu Sep 22 13:54:49 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 > diff -r 1d3830f8a730 -r 2d77cbdc816b tools/xenbackendd/xenbackendd.c > --- a/tools/xenbackendd/xenbackendd.c Thu Sep 22 13:54:42 2011 +0200 > +++ b/tools/xenbackendd/xenbackendd.c Thu Sep 22 13:54:49 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; > @@ -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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |