From: George Dunlap <george.dunlap@eu.citrix.com>
To: Ian Campbell <ian.campbell@citrix.com>,
ian.jackson@eu.citrix.com, wei.liu2@citrix.com
Cc: "Konrad Rzeszutek Wilk" <konrad@darnok.org>,
"Roger Pau Monné" <roger.pau@citrix.com>,
xen-devel@lists.xen.org
Subject: Re: [PATCH for-4.6] tools/hotplug: Add an initscript to start "xl devd" in a driver domain
Date: Wed, 15 Jul 2015 16:25:05 +0100 [thread overview]
Message-ID: <55A67B51.5030309@eu.citrix.com> (raw)
In-Reply-To: <1436958450-14336-1-git-send-email-ian.campbell@citrix.com>
On 07/15/2015 12:07 PM, Ian Campbell wrote:
> The removal of the udev rules highlighted that although it has been
> replaced by "xl devd" there isn't an initscript to replace it.
>
> To enable this add a --pidfile option to xl devd.
>
> Tested on Linux by running the script in dom0 and checking the daemon
> was started/stopped, but not in an actual driver domain environment
> since I don't have one conveniently available. I also checked that
> running without the --pidfile option still works.
>
> Scripts mainly cribbed from the xencommons for each platform.
>
> Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
> Cc: Roger Pau Monné <roger.pau@citrix.com>
> Cc: Konrad Rzeszutek Wilk <konrad@darnok.org>
> Cc: George Dunlap <george.dunlap@eu.citrix.com>
Looks OK to me:
Acked-by: George Dunlap <george.dunlap@eu.citrix.com>
> ---
> For 4.6: I think having removed the udev rules we ought to include
> this, it's basically zero risk to normal operation.
>
> Nothing seems to start xl devd for domain 0 in *BSD, nor is xenbackend
> started. Is that correct?
> ---
> .gitignore | 3 ++
> tools/configure | 5 +-
> tools/configure.ac | 3 ++
> tools/hotplug/FreeBSD/Makefile | 2 +-
> tools/hotplug/FreeBSD/rc.d/xendriverdomain.in | 48 +++++++++++++++++
> tools/hotplug/Linux/Makefile | 3 ++
> tools/hotplug/Linux/init.d/xendriverdomain.in | 77 +++++++++++++++++++++++++++
> tools/hotplug/NetBSD/Makefile | 2 +-
> tools/hotplug/NetBSD/rc.d/xendriverdomain.in | 49 +++++++++++++++++
> tools/libxl/xl_cmdimpl.c | 42 +++++++++++++--
> tools/libxl/xl_cmdtable.c | 3 +-
> 11 files changed, 229 insertions(+), 8 deletions(-)
> create mode 100644 tools/hotplug/FreeBSD/rc.d/xendriverdomain.in
> create mode 100644 tools/hotplug/Linux/init.d/xendriverdomain.in
> create mode 100644 tools/hotplug/NetBSD/rc.d/xendriverdomain.in
>
> diff --git a/.gitignore b/.gitignore
> index 3f42ded..bab67e7 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -133,10 +133,12 @@ tools/flask/utils/flask-set-bool
> tools/flask/utils/flask-label-pci
> tools/hotplug/common/hotplugpath.sh
> tools/hotplug/FreeBSD/rc.d/xencommons
> +tools/hotplug/FreeBSD/rc.d/xendriverdomain
> tools/hotplug/Linux/init.d/sysconfig.xencommons
> tools/hotplug/Linux/init.d/xen-watchdog
> tools/hotplug/Linux/init.d/xencommons
> tools/hotplug/Linux/init.d/xendomains
> +tools/hotplug/Linux/init.d/xendriverdomain
> tools/hotplug/Linux/systemd/*.conf
> tools/hotplug/Linux/systemd/*.mount
> tools/hotplug/Linux/systemd/*.socket
> @@ -146,6 +148,7 @@ tools/hotplug/Linux/xen-backend.rules
> tools/hotplug/Linux/xen-hotplug-common.sh
> tools/hotplug/Linux/xendomains
> tools/hotplug/NetBSD/rc.d/xencommons
> +tools/hotplug/NetBSD/rc.d/xendriverdomain
> tools/include/xen/*
> tools/include/xen-xsm/*
> tools/include/xen-foreign/*.(c|h|size)
> diff --git a/tools/configure b/tools/configure
> index 5138f3d..d90db47 100755
> --- a/tools/configure
> +++ b/tools/configure
> @@ -2403,7 +2403,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
>
>
>
> -ac_config_files="$ac_config_files ../config/Tools.mk hotplug/FreeBSD/rc.d/xencommons hotplug/Linux/init.d/sysconfig.xencommons hotplug/Linux/init.d/xen-watchdog hotplug/Linux/init.d/xencommons hotplug/Linux/init.d/xendomains hotplug/Linux/vif-setup hotplug/Linux/xen-hotplug-common.sh hotplug/Linux/xendomains hotplug/NetBSD/rc.d/xencommons libxl/xenlight.pc.in libxl/xlutil.pc.in"
> +ac_config_files="$ac_config_files ../config/Tools.mk hotplug/FreeBSD/rc.d/xencommons hotplug/FreeBSD/rc.d/xendriverdomain hotplug/Linux/init.d/sysconfig.xencommons hotplug/Linux/init.d/xen-watchdog hotplug/Linux/init.d/xencommons hotplug/Linux/init.d/xendomains hotplug/Linux/init.d/xendriverdomain hotplug/Linux/vif-setup hotplug/Linux/xen-hotplug-common.sh hotplug/Linux/xendomains hotplug/NetBSD/rc.d/xencommons hotplug/NetBSD/rc.d/xendriverdomain libxl/xenlight.pc.in libxl/xlutil.pc.in"
>
> ac_config_headers="$ac_config_headers config.h"
>
> @@ -10045,14 +10045,17 @@ do
> case $ac_config_target in
> "../config/Tools.mk") CONFIG_FILES="$CONFIG_FILES ../config/Tools.mk" ;;
> "hotplug/FreeBSD/rc.d/xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/FreeBSD/rc.d/xencommons" ;;
> + "hotplug/FreeBSD/rc.d/xendriverdomain") CONFIG_FILES="$CONFIG_FILES hotplug/FreeBSD/rc.d/xendriverdomain" ;;
> "hotplug/Linux/init.d/sysconfig.xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/sysconfig.xencommons" ;;
> "hotplug/Linux/init.d/xen-watchdog") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xen-watchdog" ;;
> "hotplug/Linux/init.d/xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xencommons" ;;
> "hotplug/Linux/init.d/xendomains") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xendomains" ;;
> + "hotplug/Linux/init.d/xendriverdomain") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xendriverdomain" ;;
> "hotplug/Linux/vif-setup") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/vif-setup" ;;
> "hotplug/Linux/xen-hotplug-common.sh") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/xen-hotplug-common.sh" ;;
> "hotplug/Linux/xendomains") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/xendomains" ;;
> "hotplug/NetBSD/rc.d/xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/NetBSD/rc.d/xencommons" ;;
> + "hotplug/NetBSD/rc.d/xendriverdomain") CONFIG_FILES="$CONFIG_FILES hotplug/NetBSD/rc.d/xendriverdomain" ;;
> "libxl/xenlight.pc.in") CONFIG_FILES="$CONFIG_FILES libxl/xenlight.pc.in" ;;
> "libxl/xlutil.pc.in") CONFIG_FILES="$CONFIG_FILES libxl/xlutil.pc.in" ;;
> "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
> diff --git a/tools/configure.ac b/tools/configure.ac
> index 8bfdfcb..f6a79c2 100644
> --- a/tools/configure.ac
> +++ b/tools/configure.ac
> @@ -8,14 +8,17 @@ AC_CONFIG_SRCDIR([libxl/libxl.c])
> AC_CONFIG_FILES([
> ../config/Tools.mk
> hotplug/FreeBSD/rc.d/xencommons
> +hotplug/FreeBSD/rc.d/xendriverdomain
> hotplug/Linux/init.d/sysconfig.xencommons
> hotplug/Linux/init.d/xen-watchdog
> hotplug/Linux/init.d/xencommons
> hotplug/Linux/init.d/xendomains
> +hotplug/Linux/init.d/xendriverdomain
> hotplug/Linux/vif-setup
> hotplug/Linux/xen-hotplug-common.sh
> hotplug/Linux/xendomains
> hotplug/NetBSD/rc.d/xencommons
> +hotplug/NetBSD/rc.d/xendriverdomain
> libxl/xenlight.pc.in
> libxl/xlutil.pc.in
> ])
> diff --git a/tools/hotplug/FreeBSD/Makefile b/tools/hotplug/FreeBSD/Makefile
> index 8dfc90a..10fce4f 100644
> --- a/tools/hotplug/FreeBSD/Makefile
> +++ b/tools/hotplug/FreeBSD/Makefile
> @@ -6,7 +6,7 @@ XEN_SCRIPTS = vif-bridge
>
> XEN_SCRIPT_DATA =
>
> -XEN_RCD_PROG = rc.d/xencommons
> +XEN_RCD_PROG = rc.d/xencommons rc.d/xendriverdomain
>
> .PHONY: all
> all:
> diff --git a/tools/hotplug/FreeBSD/rc.d/xendriverdomain.in b/tools/hotplug/FreeBSD/rc.d/xendriverdomain.in
> new file mode 100644
> index 0000000..25e3edd
> --- /dev/null
> +++ b/tools/hotplug/FreeBSD/rc.d/xendriverdomain.in
> @@ -0,0 +1,48 @@
> +#!/bin/sh
> +#
> +# PROVIDE: xendriverdomain
> +# REQUIRE: DAEMON
> +#
> +# Should be run in a driver domain, but not in domain 0.
> +
> +. /etc/rc.subr
> +
> +. /etc/xen/scripts/hotplugpath.sh
> +
> +LD_LIBRARY_PATH="${libdir}"
> +export LD_LIBRARY_PATH
> +
> +name="xendriverdomain"
> +start_precmd="xendriverdomain_precmd"
> +start_cmd="xendriverdomain_startcmd"
> +stop_cmd="xendriverdomain_stop"
> +extra_commands=""
> +
> +XLDEVD_PIDFILE="/var/run/xldevd.pid"
> +
> +xendriverdomain_precmd()
> +{
> + :
> +}
> +
> +xendriverdomain_startcmd()
> +{
> + printf "Starting xenservices: xl devd."
> +
> + ${sbindir}/xl devd --pidfile=$XLDEVD_PIDFILE ${XLDEVD_ARGS}
> +
> + printf "\n"
> +}
> +
> +xendriverdomain_stop()
> +{
> + printf "Stopping xl devd.\n"
> +
> + rc_pid=$(check_pidfile ${XLDEVD_PIDFILE} ${sbindir}/xl)
> +
> + kill -${sig_stop:-TERM} $rc_pids
> + wait_for_pids $rc_pids
> +}
> +
> +load_rc_config $name
> +run_rc_command "$1"
> diff --git a/tools/hotplug/Linux/Makefile b/tools/hotplug/Linux/Makefile
> index bc8ee5e..6e10118 100644
> --- a/tools/hotplug/Linux/Makefile
> +++ b/tools/hotplug/Linux/Makefile
> @@ -9,6 +9,8 @@ XENDOMAINS_SYSCONFIG = init.d/sysconfig.xendomains
> XENCOMMONS_INITD = init.d/xencommons
> XENCOMMONS_SYSCONFIG = init.d/sysconfig.xencommons
>
> +XENDRIVERDOMAIN_INITD = init.d/xendriverdomain
> +
> # Xen script dir and scripts to go there.
> XEN_SCRIPTS = vif-bridge
> XEN_SCRIPTS += vif-route
> @@ -53,6 +55,7 @@ install-initd:
> $(INSTALL_DATA) $(XENDOMAINS_SYSCONFIG) $(DESTDIR)$(SYSCONFIG_DIR)/xendomains
> $(INSTALL_PROG) $(XENCOMMONS_INITD) $(DESTDIR)$(INITD_DIR)
> $(INSTALL_DATA) $(XENCOMMONS_SYSCONFIG) $(DESTDIR)$(SYSCONFIG_DIR)/xencommons
> + $(INSTALL_PROG) $(XENDRIVERDOMAIN_INITD) $(DESTDIR)$(INITD_DIR)
> $(INSTALL_PROG) init.d/xen-watchdog $(DESTDIR)$(INITD_DIR)
>
> .PHONY: install-scripts
> diff --git a/tools/hotplug/Linux/init.d/xendriverdomain.in b/tools/hotplug/Linux/init.d/xendriverdomain.in
> new file mode 100644
> index 0000000..2ea1113
> --- /dev/null
> +++ b/tools/hotplug/Linux/init.d/xendriverdomain.in
> @@ -0,0 +1,77 @@
> +
> +#!/bin/bash
> +#
> +# xendriverdomain Script to start services needed in a Xen driver domain
> +#
> +# NOTE: This initscript is not needed on dom0.
> +
> +# chkconfig: 2345 70 10
> +# description: Starts and stops xen driver domain daemon
> +### BEGIN INIT INFO
> +# Provides: xendevd
> +# Required-Start: $syslog $remote_fs
> +# Should-Start:
> +# Required-Stop: $syslog $remote_fs
> +# Should-Stop:
> +# Default-Start: 2 3 5
> +# Default-Stop: 0 1 6
> +# Short-Description: Start/stop xen driver domain daemon
> +# Description: Starts and stops the daemons neeeded for a xen driver domain
> +### END INIT INFO
> +
> +. @XEN_SCRIPT_DIR@/hotplugpath.sh
> +
> +xendriverdomain_config=@CONFIG_DIR@/@CONFIG_LEAF_DIR@
> +
> +test -f $xendriverdomain_config/xendriverdomain && . $xendriverdomain_config/xendriverdomain
> +
> +XLDEVD_PIDFILE=/var/run/xldevd.pid
> +
> +# not running in Xen dom0 or domU
> +if ! test -d /proc/xen ; then
> + exit 0
> +fi
> +
> +# mount xenfs in dom0 or domU with a pv_ops kernel
> +if test "x$1" = xstart && \
> + ! test -f /proc/xen/capabilities && \
> + ! grep '^xenfs ' /proc/mounts >/dev/null;
> +then
> + mount -t xenfs xenfs /proc/xen
> +fi
> +
> +do_start () {
> + echo Starting xl devd...
> + ${sbindir}/xl devd --pidfile=$XLDEVD_PIDFILE $XLDEVD_ARGS
> +}
> +do_stop () {
> + echo Stopping xl devd...
> + if read 2>/dev/null <$XLDEVD_PIDFILE pid; then
> + kill $pid
> + while kill -9 $pid >/dev/null 2>&1; do sleep 0.1; done
> + rm -f $XLDEVD_PIDFILE
> + fi
> +}
> +
> +case "$1" in
> + start)
> + do_start
> + ;;
> + stop)
> + do_stop
> + ;;
> + reload)
> + echo >&2 'Reload not available; use force-reload'; exit 1
> + ;;
> + force-reload|restart)
> + do_stop
> + do_start
> + ;;
> + *)
> + # do not advertise unreasonable commands that there is no reason
> + # to use with this device
> + echo $"Usage: $0 {start|stop|restart|force-reload}"
> + exit 1
> +esac
> +
> +exit $?
> diff --git a/tools/hotplug/NetBSD/Makefile b/tools/hotplug/NetBSD/Makefile
> index 4e609e3..d01aabf 100644
> --- a/tools/hotplug/NetBSD/Makefile
> +++ b/tools/hotplug/NetBSD/Makefile
> @@ -8,7 +8,7 @@ XEN_SCRIPTS += vif-bridge
> XEN_SCRIPTS += vif-ip
>
> XEN_SCRIPT_DATA =
> -XEN_RCD_PROG = rc.d/xencommons rc.d/xendomains rc.d/xen-watchdog
> +XEN_RCD_PROG = rc.d/xencommons rc.d/xendomains rc.d/xen-watchdog rc.d/xendriverdomain
>
> .PHONY: all
> all:
> diff --git a/tools/hotplug/NetBSD/rc.d/xendriverdomain.in b/tools/hotplug/NetBSD/rc.d/xendriverdomain.in
> new file mode 100644
> index 0000000..5062a71
> --- /dev/null
> +++ b/tools/hotplug/NetBSD/rc.d/xendriverdomain.in
> @@ -0,0 +1,49 @@
> +#!/bin/sh
> +#
> +# PROVIDE: xendriverdomain
> +# REQUIRE: DAEMON
> +#
> +# Should be run in a driver domain, but not in domain 0.
> +
> +. /etc/rc.subr
> +
> +DIR=$(dirname "$0")
> +. "${DIR}/xen-hotplugpath.sh"
> +
> +LD_LIBRARY_PATH="${libdir}"
> +export LD_LIBRARY_PATH
> +
> +name="xendriverdomain"
> +start_precmd="xendriverdomain_precmd"
> +start_cmd="xendriverdomain_startcmd"
> +stop_cmd="xendriverdomain_stop"
> +extra_commands=""
> +
> +XLDEVD_PIDFILE="/var/run/xldevd.pid"
> +
> +xendriverdomain_precmd()
> +{
> + :
> +}
> +
> +xendriverdomain_startcmd()
> +{
> + printf "Starting xenservices: xl devd."
> +
> + ${sbindir}/xl devd --pidfile=$XLDEVD_PIDFILE ${XLDEVD_ARGS}
> +
> + printf "\n"
> +}
> +
> +xendriverdomain_stop()
> +{
> + printf "Stopping xl devd.\n"
> +
> + rc_pid=$(check_pidfile ${XLDEVD_PIDFILE} ${sbindir}/xl)
> +
> + kill -${sig_stop:-TERM} $rc_pids
> + wait_for_pids $rc_pids
> +}
> +
> +load_rc_config $name
> +run_rc_command "$1"
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index 5f7a712..17e6e7d 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -445,7 +445,7 @@ out:
> flush_stream(fh);
> }
>
> -static int do_daemonize(char *name)
> +static int do_daemonize(char *name, const char *pidfile)
> {
> char *fullname;
> pid_t child1;
> @@ -477,6 +477,31 @@ static int do_daemonize(char *name)
>
> CHK_SYSCALL(daemon(0, 1));
>
> + if (pidfile) {
> + int fd = open(pidfile, O_RDWR | O_CREAT, S_IRUSR|S_IWUSR);
> + char *pid = NULL;
> +
> + if (fd == -1) {
> + perror("Unable to open pidfile");
> + exit(1);
> + }
> +
> + if (asprintf(&pid, "%ld\n", (long)getpid()) == -1) {
> + perror("Formatting pid");
> + exit(1);
> + }
> +
> + if (write(fd, pid, strlen(pid)) < 0) {
> + perror("Writing pid");
> + exit(1);
> + }
> +
> + if ( close(fd) < 0 ) {
> + perror("Closing pidfile");
> + exit(1);
> + }
> + }
> +
> out:
> return ret;
> }
> @@ -2798,7 +2823,7 @@ start:
> LOG("Failed to allocate memory in asprintf");
> exit(1);
> }
> - ret = do_daemonize(name);
> + ret = do_daemonize(name, NULL);
> free(name);
> if (ret) {
> ret = (ret == 1) ? domid : ret;
> @@ -7972,15 +7997,24 @@ int main_remus(int argc, char **argv)
> int main_devd(int argc, char **argv)
> {
> int ret = 0, opt = 0, daemonize = 1;
> + const char *pidfile = NULL;
> + static const struct option opts[] = {
> + {"pidfile", 1, 0, 'p'},
> + COMMON_LONG_OPTS,
> + {0, 0, 0, 0}
> + };
>
> - SWITCH_FOREACH_OPT(opt, "F", NULL, "devd", 0) {
> + SWITCH_FOREACH_OPT(opt, "Fp:", opts, "devd", 0) {
> case 'F':
> daemonize = 0;
> break;
> + case 'p':
> + pidfile = optarg;
> + break;
> }
>
> if (daemonize) {
> - ret = do_daemonize("xldevd");
> + ret = do_daemonize("xldevd", pidfile);
> if (ret) {
> ret = (ret == 1) ? 0 : ret;
> goto out;
> diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
> index 54dbecc..0071f12 100644
> --- a/tools/libxl/xl_cmdtable.c
> +++ b/tools/libxl/xl_cmdtable.c
> @@ -506,7 +506,8 @@ struct cmd_spec cmd_table[] = {
> &main_devd, 0, 1,
> "Daemon that listens for devices and launches backends",
> "[options]",
> - "-F Run in the foreground",
> + "-F Run in the foreground.\n"
> + "-p, --pidfile [FILE] Write PID to pidfile when daemonizing.",
> },
> #ifdef LIBXL_HAVE_PSR_CMT
> { "psr-hwinfo",
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2015-07-15 15:25 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-06 10:51 [PATCH 0/6] Use system blktap George Dunlap
2015-07-06 10:51 ` [PATCH 1/6] libxl: Make local_initiate_attach more rational George Dunlap
2015-07-06 10:51 ` [PATCH 2/6] libxl: Remove linux udev rules George Dunlap
2015-07-07 11:39 ` Wei Liu
2015-07-14 16:13 ` Konrad Rzeszutek Wilk
2015-07-14 16:21 ` Ian Campbell
2015-07-14 16:35 ` George Dunlap
2015-07-14 16:40 ` Wei Liu
2015-07-14 16:48 ` Ian Campbell
2015-07-23 11:55 ` Roger Pau Monné
2015-07-23 12:30 ` Ian Campbell
2015-07-15 11:07 ` [PATCH for-4.6] tools/hotplug: Add an initscript to start "xl devd" in a driver domain Ian Campbell
2015-07-15 13:26 ` Wei Liu
2015-07-15 13:40 ` Ian Campbell
2015-07-15 15:25 ` George Dunlap [this message]
2015-07-15 15:32 ` Ian Jackson
2015-07-15 15:35 ` George Dunlap
2015-07-15 15:37 ` Ian Campbell
2015-07-16 16:58 ` [PATCH for-4.6 v2] " Ian Campbell
2015-07-16 17:09 ` Ian Jackson
2015-07-16 17:48 ` Wei Liu
2015-07-17 9:05 ` Wei Liu
2015-07-17 11:36 ` Ian Campbell
2015-07-20 14:16 ` Roger Pau Monné
2015-07-20 14:28 ` Ian Campbell
2015-07-06 10:51 ` [PATCH 3/6] tools: Add a block-tap script for setting up tapdisks via tap-ctl George Dunlap
2015-07-07 12:03 ` Wei Liu
2015-07-07 12:35 ` Wei Liu
2015-07-06 10:51 ` [PATCH 4/6] libxl: Use the block-tap script for LIBXL_DISK_BACKEND_TAP George Dunlap
2015-07-06 11:01 ` Andrew Cooper
2015-07-06 12:39 ` George Dunlap
2015-07-07 12:29 ` Wei Liu
2015-07-07 13:41 ` George Dunlap
2015-07-07 14:20 ` Ian Campbell
2015-07-07 14:27 ` George Dunlap
2015-07-06 10:51 ` [PATCH 5/6] tools: Remove in-tree blktap2 George Dunlap
2015-07-07 11:55 ` Wei Liu
2015-07-06 10:51 ` [PATCH 6/6] libxl: Add more logging to hotplug script path George Dunlap
2015-07-07 11:55 ` Wei Liu
2015-07-07 14:21 ` [PATCH 0/6] Use system blktap Ian Campbell
2015-07-07 14:24 ` George Dunlap
2015-07-07 14:52 ` Ian Campbell
2015-07-07 14:59 ` George Dunlap
2015-07-07 15:04 ` Ian Campbell
2015-07-07 15:20 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55A67B51.5030309@eu.citrix.com \
--to=george.dunlap@eu.citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=konrad@darnok.org \
--cc=roger.pau@citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.