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

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



On Thu, 2015-07-23 at 16:13 +0200, Roger Pau Monne wrote:
> 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>

I thought I'd replied to this, but the archive and my Sent box both
disagree. Anyway:

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

Probably not 4.6 material any more though?

> ---
>  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;
> -}

_______________________________________________
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®.