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

[Xen-devel] [PATCH] xenbackendd: remove xenbackendd



The functionality provided by xenbackendd has been integrated into the xl
toolstack under the devd command on all platforms, because of that it no
longer makes sense to maintain xenbackendd.

Init scripts have also been provided for all platforms in order to launch xl
devd in the background, mimicking the functionality provided by xenbackendd.
Furthermore, xenbackendd is not started by default on NetBSD since a couple
of releases ago (4.2 was the first release to disable the automatic startup
of xenbackendd in xencommons).

Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
Cc: <port-xen@xxxxxxxxxx>
---
 tools/Makefile                                     |   1 -
 tools/hotplug/Linux/init.d/sysconfig.xencommons.in |   6 -
 tools/hotplug/NetBSD/block                         |   2 +-
 tools/hotplug/NetBSD/rc.d/xencommons.in            |   2 -
 tools/hotplug/NetBSD/vif-bridge                    |   2 +-
 tools/hotplug/NetBSD/vif-ip                        |   2 +-
 tools/xenbackendd/Makefile                         |  41 ---
 tools/xenbackendd/xenbackendd.c                    | 325 ---------------------
 8 files changed, 3 insertions(+), 378 deletions(-)
 delete mode 100644 tools/xenbackendd/Makefile
 delete mode 100644 tools/xenbackendd/xenbackendd.c

diff --git a/tools/Makefile b/tools/Makefile
index 45cb4b2..633fb38 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -17,7 +17,6 @@ SUBDIRS-y += xenmon
 SUBDIRS-y += xenstat
 SUBDIRS-$(CONFIG_Linux) += memshr 
 SUBDIRS-$(CONFIG_BLKTAP2) += blktap2
-SUBDIRS-$(CONFIG_NetBSD) += xenbackendd
 SUBDIRS-y += libfsimage
 SUBDIRS-$(CONFIG_Linux) += libvchan
 
diff --git a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in 
b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
index f0fa98d..f6f35cd 100644
--- a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
+++ b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
@@ -40,11 +40,5 @@ XENSTORED_ARGS=
 # Running xenstored on XENSTORED_ROOTDIR
 #XENSTORED_ROOTDIR=@XEN_LIB_STORED@
 
-## Type: string
-## Default: Not defined, xenbackendd debug mode off
-#
-# Running xenbackendd in debug mode
-#XENBACKENDD_DEBUG=[yes|on|1]
-
 # qemu path
 #QEMU_XEN=@LIBEXEC_BIN@/qemu-system-i386
diff --git a/tools/hotplug/NetBSD/block b/tools/hotplug/NetBSD/block
index 32c20b6..fc8f668 100644
--- a/tools/hotplug/NetBSD/block
+++ b/tools/hotplug/NetBSD/block
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 
 # $NetBSD: block-nbsd,v 1.1.1.1 2008/08/07 20:26:57 cegger Exp $
-# Called by xenbackendd
+#
 # Usage: block xsdir_backend_path state
 
 DIR=$(dirname "$0")
diff --git a/tools/hotplug/NetBSD/rc.d/xencommons.in 
b/tools/hotplug/NetBSD/rc.d/xencommons.in
index d7552cd..9f45cfd 100644
--- a/tools/hotplug/NetBSD/rc.d/xencommons.in
+++ b/tools/hotplug/NetBSD/rc.d/xencommons.in
@@ -22,8 +22,6 @@ required_files="/kern/xen/privcmd"
 
 XENSTORED_PIDFILE="/var/run/xenstored.pid"
 XENCONSOLED_PIDFILE="/var/run/xenconsoled.pid"
-XENBACKENDD_PIDFILE="/var/run/xenbackendd.pid"
-#XENBACKENDD_DEBUG=1
 #XENCONSOLED_TRACE="/var/log/xen/xenconsole-trace.log"
 #XENSTORED_TRACE="/var/log/xen/xenstore-trace.log"
 
diff --git a/tools/hotplug/NetBSD/vif-bridge b/tools/hotplug/NetBSD/vif-bridge
index b58e922..f12edf0 100644
--- a/tools/hotplug/NetBSD/vif-bridge
+++ b/tools/hotplug/NetBSD/vif-bridge
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 
 # $NetBSD: vif-bridge-nbsd,v 1.1.1.1 2008/08/07 20:26:57 cegger Exp $
-# Called by xenbackendd
+#
 # Usage: vif-bridge xsdir_backend_path state
 
 DIR=$(dirname "$0")
diff --git a/tools/hotplug/NetBSD/vif-ip b/tools/hotplug/NetBSD/vif-ip
index 83cbfe2..44200e3 100644
--- a/tools/hotplug/NetBSD/vif-ip
+++ b/tools/hotplug/NetBSD/vif-ip
@@ -1,7 +1,7 @@
 #!/bin/sh -e
 
 # $NetBSD: vif-ip-nbsd,v 1.1.1.1 2008/08/07 20:26:57 cegger Exp $
-# Called by xenbackendd
+#
 # Usage: vif-ip xsdir_backend_path state
 
 DIR=$(dirname "$0")
diff --git a/tools/xenbackendd/Makefile b/tools/xenbackendd/Makefile
deleted file mode 100644
index f52be74..0000000
--- a/tools/xenbackendd/Makefile
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (c) 2009 Advanced Micro Devices, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; under version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-XEN_ROOT=$(CURDIR)/../..
-include $(XEN_ROOT)/tools/Rules.mk
-
-CFLAGS  += -Werror
-CFLAGS  += $(CFLAGS_libxenstore)
-CPPFLAGS += -DXEN_SCRIPT_DIR="\"$(XEN_SCRIPT_DIR)\""
-LDLIBS  += $(LDLIBS_libxenstore)
-
-.PHONY: all
-all: build
-
-.PHONY: build
-build: xenbackendd
-
-.PHONY: install
-install: build
-       $(INSTALL_DIR) $(DESTDIR)$(sbindir)
-       $(INSTALL_PROG) xenbackendd $(DESTDIR)$(sbindir)
-
-.PHONY: clean
-clean:
-       $(RM) *.a *.so *.o $(DEPS) xenbackendd
-
-.PHONY: distclean
-distclean: clean
-
-xenbackendd: xenbackendd.o
-       $(CC) $(LDFLAGS) $< -o $@ $(LDLIBS) $(APPEND_LDFLAGS)
-
--include $(DEPS)
diff --git a/tools/xenbackendd/xenbackendd.c b/tools/xenbackendd/xenbackendd.c
deleted file mode 100644
index f1eb1f5..0000000
--- a/tools/xenbackendd/xenbackendd.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/* $NetBSD: xenbackendd.c,v 1.1.1.1 2008/08/07 20:26:57 cegger Exp $ */
-/*
- * Copyright (C) 2006 Manuel Bouyer <bouyer@xxxxxxxxxx>
- * Copyright (C) 2009 Christoph Egger <Christoph.Egger@xxxxxxx>
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; under version 2 of the License.
- * 
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- * 
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdarg.h>
-#include <string.h>
-#include <syslog.h>
-
-#include <xenstore.h>
-
-#define DEVTYPE_UNKNOWN 0
-#define DEVTYPE_VIF 1
-#define DEVTYPE_VBD 2
-#define DISABLE_EXEC "libxl/disable_udev"
-
-#define DOMAIN_PATH "/local/domain/0"
-
-#ifndef XEN_SCRIPT_DIR
-#error XEN_SCRIPT_DIR not defined
-#endif
-
-#ifndef VBD_SCRIPT
-#define VBD_SCRIPT XEN_SCRIPT_DIR"/block"
-#endif
-#ifndef LOG_FILE
-#define LOG_FILE "/var/log/xen/xenbackendd.log"
-#endif
-#ifndef PID_FILE
-#define PID_FILE "/var/run/xenbackendd.pid"
-#endif
-
-
-struct xs_handle *xs;
-
-int fflag = 0;
-int dflag = 0;
-
-const char *vbd_script = NULL;
-const char *log_file = NULL;
-const char *pidfile = NULL;
-
-static void
-dolog(int pri, const char *fmt, ...)
-{
-       va_list ap;
-       va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
-       va_end(ap);
-       fprintf(stderr, "\n");
-       fflush(stderr);
-       va_start(ap, fmt);
-       vsyslog(pri, fmt, ap);
-       va_end(ap);
-}
-
-static void
-dodebug(const char *fmt, ...)
-{
-       va_list ap;
-
-       if (dflag == 0)
-               return;
-       va_start(ap, fmt);
-       vfprintf(stdout, fmt, ap);
-       va_end(ap);
-       printf("\n");
-       fflush(stdout);
-}
-
-static void
-doexec(const char *cmd, const char *arg1, const char *arg2)
-{
-       dodebug("exec %s %s %s", cmd, arg1, arg2);
-       switch(vfork()) {
-       case -1:
-               dolog(LOG_ERR, "can't vfork: %s", strerror(errno));
-               break;
-       case 0:
-               execl(cmd, cmd, arg1, arg2, NULL);
-               dolog(LOG_ERR, "can't exec %s: %s", cmd, strerror(errno));
-               exit(EXIT_FAILURE);
-               /* NOTREACHED */
-               break;
-       default:
-               wait(NULL);
-               break;
-       }
-}
-
-static void
-usage(void)
-{
-       fprintf(stderr,
-           "usage: %s [-d] [-f] [-l log_file] [-p pif_file] [-s vbd_script]\n",
-           getprogname());
-       exit(EXIT_FAILURE);
-}
-
-static int
-xen_setup(void)
-{
-       xs = xs_daemon_open();
-       if (xs == NULL) {
-               dolog(LOG_ERR,
-                   "Failed to contact xenstore (%s).  Is it running?",
-                   strerror(errno));
-               goto out;
-       }
-
-       if (!xs_watch(xs, DOMAIN_PATH, "backend")) {
-               dolog(LOG_ERR, "xenstore watch on backend fails.");
-               goto out;
-       }
-       return 0;
-
- out:
-       if (xs) {
-               xs_daemon_close(xs);
-               xs = NULL;
-       }
-       return -1;
-}
-
-int
-main(int argc, char * const argv[])
-{
-       char **vec;
-       unsigned int num;
-       char *s;
-       int state;
-       char *sstate, *sdisable;
-       char *p;
-       char buf[80];
-       int type;
-       int ch;
-       int debug_fd;
-       FILE *pidfile_f;
-
-       while ((ch = getopt(argc, argv, "dfl:p:s:")) != -1) {
-               switch (ch) {
-               case 'd':
-                       dflag = 1;
-                       break;
-               case 'f':
-                       fflag = 1;
-                       break;
-               case 'l':
-                       log_file = optarg;
-                       break;
-               case 'p':
-                       pidfile = optarg;
-               case 's':
-                       vbd_script = optarg;
-                       break;
-               default:
-                       usage();
-               }
-       }
-
-       if (vbd_script == NULL)
-               vbd_script = VBD_SCRIPT;
-       if (pidfile == NULL)
-               pidfile = PID_FILE;
-       if (log_file == NULL)
-               log_file = LOG_FILE;
-
-       openlog("xenbackendd", LOG_PID | LOG_NDELAY, LOG_DAEMON);
-
-       if (fflag == 0) {
-               /* open log file */
-               debug_fd = open(log_file, O_RDWR | O_CREAT | O_TRUNC, 0644);
-               if (debug_fd == -1) {
-                       dolog(LOG_ERR, "can't open %s: %s",
-                           log_file, strerror(errno));
-                       exit(EXIT_FAILURE);
-               }
-       }
-
-       if (fflag == 0) {
-               /* daemonize */
-               pidfile_f = fopen(pidfile, "w");
-               if (pidfile_f == NULL) {
-                       dolog(LOG_ERR, "can't open %s: %s",
-                           pidfile, strerror(errno));
-                       exit(EXIT_FAILURE);
-               }
-               if (daemon(0, 0) < 0) {
-                       dolog(LOG_ERR, "can't daemonize: %s",
-                           strerror(errno));
-                       exit(EXIT_FAILURE);
-               }
-               fprintf(pidfile_f, "%d\n", (int)getpid());
-               fclose(pidfile_f);
-
-               /* redirect stderr to log file */
-               if (dup2(debug_fd, STDERR_FILENO) < 0) {
-                       dolog(LOG_ERR, "can't redirect stderr to %s: %s\n",
-                           log_file, strerror(errno));
-                       exit(EXIT_FAILURE);
-               }
-
-               /* also redirect stdout if we're in debug mode */
-               if (dflag) {
-                       if (dup2(debug_fd, STDOUT_FILENO) < 0) {
-                               dolog(LOG_ERR,
-                                   "can't redirect stdout to %s: %s\n",
-                                   log_file, strerror(errno));
-                               exit(EXIT_FAILURE);
-                       }
-               }
-
-               close(debug_fd);
-               debug_fd = -1;
-       }
-
-       if (xen_setup() < 0)
-               exit(EXIT_FAILURE);
-
-       for (;;) {
-               vec = xs_read_watch(xs, &num);
-               dodebug("read from xen watch: %s", *vec);
-               if (!vec) {
-                       dolog(LOG_ERR, "xs_read_watch: NULL\n");
-                       continue;
-               }
-
-               sdisable = xs_read(xs, XBT_NULL, DISABLE_EXEC, 0);
-               if (sdisable)
-                       goto next1;
-
-               if (strlen(vec[XS_WATCH_PATH]) < sizeof("state"))
-                       goto next1;
-
-               /* find last component of path, check if it's "state" */
-               p = &vec[XS_WATCH_PATH][
-                   strlen(vec[XS_WATCH_PATH]) - sizeof("state")];
-               if (p[0] != '/')
-                       goto next1;
-               p[0] = '\0';
-               p++;
-               if (strcmp(p, "state") != 0)
-                       goto next1;
-
-               snprintf(buf, sizeof(buf), "%s/state", vec[XS_WATCH_PATH]);
-               sstate = xs_read(xs, XBT_NULL, buf, 0);
-               if (sstate == NULL) {
-                       dolog(LOG_ERR,
-                           "Failed to read %s (%s)", buf, strerror(errno));
-                       goto next1;
-               }
-
-               state = atoi(sstate);
-               snprintf(buf, sizeof(buf), "%s/hotplug-status",
-                   vec[XS_WATCH_PATH]);
-               s = xs_read(xs, XBT_NULL, buf, 0);
-               if (s != NULL && state != 6 /* XenbusStateClosed */)
-                       goto next2;
-
-               type = DEVTYPE_UNKNOWN;
-               if (strncmp(vec[XS_WATCH_PATH],
-                   DOMAIN_PATH "/backend/vif",
-                   strlen(DOMAIN_PATH "/backend/vif")) == 0)
-                       type = DEVTYPE_VIF;
-
-               if (strncmp(vec[XS_WATCH_PATH],
-                   DOMAIN_PATH "/backend/vbd",
-                   strlen(DOMAIN_PATH "/backend/vbd")) == 0)
-                       type = DEVTYPE_VBD;
-
-               switch(type) {
-               case DEVTYPE_VIF:
-                       free(s);
-                       snprintf(buf, sizeof(buf), "%s/script",
-                           vec[XS_WATCH_PATH]);
-                       s = xs_read(xs, XBT_NULL, buf, 0);
-                       if (s == NULL) {
-                               dolog(LOG_ERR,
-                                   "Failed to read %s (%s)", buf,
-                                   strerror(errno));
-                               goto next2;
-                       }
-                       doexec(s, vec[XS_WATCH_PATH], sstate);
-                       break;
-
-               case DEVTYPE_VBD:
-                       doexec(vbd_script, vec[XS_WATCH_PATH], sstate);
-                       break;
-
-               default:
-                       break;
-               }
-
-next2:
-               free(s);
-               free(sstate);
-
-next1:
-               free(sdisable);
-               free(vec);
-       }
-
-       return 0;
-}
-- 
1.9.5 (Apple Git-50.3)


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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