From: George Dunlap <george.dunlap@citrix.com> To: xen-devel@lists.xen.org Cc: George Dunlap <george.dunlap@eu.citrix.com>, Ian Jackson <ian.jackson@citrix.com>, Wei Liu <wei.liu2@citrix.com>, Roger Pau Monne <roger.pau@citrix.com> Subject: [PATCH v2 1/9] tools/hotplug: Add a "dummy" hotplug script for testing Date: Mon, 21 Mar 2016 18:16:53 +0000 [thread overview] Message-ID: <1458584221-24426-2-git-send-email-george.dunlap@citrix.com> (raw) In-Reply-To: <1458584221-24426-1-git-send-email-george.dunlap@citrix.com> From: George Dunlap <george.dunlap@eu.citrix.com> Testing the hotplug external script path at the moment involves actually setting up one of the alternate datapaths (blktap, iscsi, &c). Simplify testing by making a script which does a simple loopback, but still has a target that can't be used directly. To use: script=block-dummy,vdev=xvda,target=dummy:<file> Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> --- CC: Ian Jackson <ian.jackson@citrix.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Roger Pau Monne <roger.pau@citrix.com> --- tools/hotplug/Linux/Makefile | 1 + tools/hotplug/Linux/block-dummy | 107 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/tools/hotplug/Linux/Makefile b/tools/hotplug/Linux/Makefile index 6e10118..dcfd58a 100644 --- a/tools/hotplug/Linux/Makefile +++ b/tools/hotplug/Linux/Makefile @@ -27,6 +27,7 @@ XEN_SCRIPTS += vscsi XEN_SCRIPTS += block-iscsi XEN_SCRIPTS += block-tap XEN_SCRIPTS += block-drbd-probe +XEN_SCRIPTS += block-dummy XEN_SCRIPTS += $(XEN_SCRIPTS-y) SUBDIRS-$(CONFIG_SYSTEMD) += systemd diff --git a/tools/hotplug/Linux/block-dummy b/tools/hotplug/Linux/block-dummy new file mode 100644 index 0000000..57d40b5 --- /dev/null +++ b/tools/hotplug/Linux/block-dummy @@ -0,0 +1,107 @@ +#!/bin/bash -e +# +# dummy Xen block device hotplug script +# +# Author George Dunlap <george.dunlap@eu.citrix.com> +# +# Based on block-iscsi by Roger Pau Monné <roger.pau@citrix.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License as published +# by the Free Software Foundation; version 2.1 only. with the special +# exception on linking described in file 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 Lesser General Public License for more details. +# +# Usage: +# +# Target should be specified using the following syntax: +# +# script=block-dummy,vdev=xvda,target=dummy:<file> + +dir=$(dirname "$0") +. "$dir/block-common.sh" + +check_tools() +{ + if ! command -v losetup > /dev/null 2>&1; then + fatal "Unable to find losetup" + fi +} + +# Sets the following global variables based on the params field passed in as +# a parameter: type file +parse_target() +{ + params=($(echo "$1" | tr ":" "\n")) + + type=${params[0]} + file=${params[1]} + if [ -z "$type" ] || [ -z "$file" ]; then + fatal "Cannot parse required parameters" + fi + + if [ "$type" != "dummy" ] ; then + fatal "Invalid type: $type" + fi +} + +# Attaches the device and writes xenstore backend entries to connect +# the device +add() +{ + test -f "$file" || fatal "$file does not exist." + + loopdev=$(losetup -f 2>/dev/null || find_free_loopback_dev) + if [ "$loopdev" = '' ] + then + fatal 'Failed to find an unused loop device' + fi + + if LANG=C losetup -h 2>&1 | grep read-only >/dev/null + then + roflag="-$mode"; roflag="${roflag#-w}"; roflag="${roflag#-!}" + else + roflag='' + fi + + do_or_die losetup $roflag "$loopdev" "$file" + # FIXME Is this OK? + xenstore_write "$XENBUS_PATH/node" "$loopdev" + write_dev "$loopdev" +} + +# Disconnects the device +remove() +{ + node=$(xenstore_read "$XENBUS_PATH/node") + losetup -d "$node" +} + +command=$1 +target=$(xenstore-read $XENBUS_PATH/params || true) +if [ -z "$target" ]; then + fatal "No information about the target" +fi + +parse_target "$target" + +mode=$(xenstore_read "$XENBUS_PATH/mode") +mode=$(canonicalise_mode "$mode") + +check_tools || exit 1 + +case $command in +add) + add + ;; +remove) + remove + ;; +*) + exit 1 + ;; +esac -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-03-21 18:16 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-03-21 18:16 [PATCH v2 0/9] tools: Allow HVM domains emulated access to disks provided by hotplug scripts George Dunlap 2016-03-21 18:16 ` George Dunlap [this message] 2016-03-21 18:16 ` [PATCH v2 2/9] libxl: Remove redundant setting of phyical-device George Dunlap 2016-03-21 18:16 ` [PATCH v2 3/9] tools/hotplug: Write physical-device-path in addition to physical-device George Dunlap 2016-03-21 18:16 ` [PATCH v2 4/9] libxl: Move check for local access to a funciton George Dunlap 2016-03-21 18:16 ` [PATCH v2 5/9] libxl: Rearrange qemu upstream disk argument code George Dunlap 2016-03-21 18:16 ` [PATCH v2 6/9] libxl: Share logic for finding path between qemuu and pygrub George Dunlap 2016-03-22 10:38 ` George Dunlap 2016-03-21 18:16 ` [PATCH v2 7/9] libxl: Allow local access for block devices with hotplug scripts George Dunlap 2016-03-21 18:17 ` [PATCH v2 8/9] docs: Document block-script protocol George Dunlap 2016-03-22 12:52 ` Roger Pau Monné 2016-03-23 11:19 ` George Dunlap 2016-03-23 12:14 ` Roger Pau Monné 2016-03-24 16:29 ` George Dunlap 2016-03-24 16:51 ` Roger Pau Monné 2016-03-21 18:17 ` [PATCH v2 9/9] DO NOT APPLY libxl: Change hotplug script interface to use physical-device-path George Dunlap 2016-03-23 10:10 ` [PATCH v2 0/9] tools: Allow HVM domains emulated access to disks provided by hotplug scripts Roger Pau Monné 2016-03-23 10:36 ` George Dunlap
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=1458584221-24426-2-git-send-email-george.dunlap@citrix.com \ --to=george.dunlap@citrix.com \ --cc=george.dunlap@eu.citrix.com \ --cc=ian.jackson@citrix.com \ --cc=roger.pau@citrix.com \ --cc=wei.liu2@citrix.com \ --cc=xen-devel@lists.xen.org \ --subject='Re: [PATCH v2 1/9] tools/hotplug: Add a "dummy" hotplug script for testing' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).