Port-xen archive

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

Re: [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%citrix.com@localhost>
> Cc: Ian Jackson <ian.jackson%eu.citrix.com@localhost>
> Cc: Stefano Stabellini <stefano.stabellini%eu.citrix.com@localhost>
> Cc: Ian Campbell <ian.campbell%citrix.com@localhost>
> Cc: Wei Liu <wei.liu2%citrix.com@localhost>
> Cc: George Dunlap <george.dunlap%eu.citrix.com@localhost>
> Cc: <port-xen%netbsd.org@localhost>

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

Acked-by: Ian Campbell <ian.campbell%citrix.com@localhost>

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%netbsd.org@localhost>
> - * Copyright (C) 2009 Christoph Egger <Christoph.Egger%amd.com@localhost>
> - *
> - *  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;
> -}


Home | Main Index | Thread Index | Old Index