WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH 6 of 6] dm-userspace backend script and xmexample

To: Xen Devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] [PATCH 6 of 6] dm-userspace backend script and xmexample
From: Ryan Grimm <grimm@xxxxxxxxxx>
Date: Mon, 21 Aug 2006 15:55:51 -0500
Cc: Dan Smith <danms@xxxxxxxxxx>
Delivery-date: Mon, 21 Aug 2006 13:59:42 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1156192193@venkman-64>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.6+20040907i
# HG changeset patch
# User Ryan Grimm <grimm@xxxxxxxxxx>
# Date 1156190591 18000
# Node ID ac06ebd033aa5f62ff18cd1e21b21e19c67f04b9
# Parent  77a518e8f44d1c0c89dcb93e5a3713da6c5e6131
dm-userspace backend script and xmexample

Signed-off-by: Ryan Grimm <grimm@xxxxxxxxxx>
Signed-off-by: Dan Smith <danms@xxxxxxxxxx>

diff -r 77a518e8f44d -r ac06ebd033aa tools/examples/Makefile
--- a/tools/examples/Makefile   Mon Aug 21 15:03:10 2006 -0500
+++ b/tools/examples/Makefile   Mon Aug 21 15:03:11 2006 -0500
@@ -18,6 +18,7 @@ XEN_CONFIGS += xmexample2
 XEN_CONFIGS += xmexample2
 XEN_CONFIGS += xmexample.hvm
 XEN_CONFIGS += xmexample.vti
+XEN_CONFIGS += xmexample.dmu
 XEN_CONFIGS += xend-pci-quirks.sxp
 XEN_CONFIGS += xend-pci-permissive.sxp
 
@@ -32,6 +33,7 @@ XEN_SCRIPTS += vtpm vtpm-delete
 XEN_SCRIPTS += vtpm vtpm-delete
 XEN_SCRIPTS += xen-hotplug-cleanup
 XEN_SCRIPTS += external-device-migrate
+XEN_SCRIPTS += block-dmu
 XEN_SCRIPT_DATA = xen-script-common.sh locking.sh logging.sh
 XEN_SCRIPT_DATA += xen-hotplug-common.sh xen-network-common.sh vif-common.sh
 XEN_SCRIPT_DATA += block-common.sh vtpm-common.sh vtpm-hotplug-common.sh
diff -r 77a518e8f44d -r ac06ebd033aa tools/examples/README
--- a/tools/examples/README     Mon Aug 21 15:03:10 2006 -0500
+++ b/tools/examples/README     Mon Aug 21 15:03:11 2006 -0500
@@ -13,6 +13,7 @@ block-common.sh     - sourced by block, 
 block-common.sh     - sourced by block, block-*
 block-enbd          - binds/unbinds network block devices
 block-nbd           - binds/unbinds network block devices
+block-dmu           - binds/unbinds dm-userspace devices
 external-device-migrate - called by xend for migrating external devices
 locking.sh          - locking functions to prevent concurrent access to
                       critical sections inside script files
@@ -45,3 +46,5 @@ xmexample.hvm       - a configuration sc
 xmexample.hvm       - a configuration script for creating a hvm domain with
                       'xm create'
 xmexample.vti       - a configuration script for creating a domain on vti
+xmexample.dmu       - a configuration script for creating a domain with 
+                      dm-userspace
diff -r 77a518e8f44d -r ac06ebd033aa tools/examples/block-dmu
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/examples/block-dmu  Mon Aug 21 15:03:11 2006 -0500
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# Copyright (C) International Business Machines Corp., 2006
+# Author: Ryan Grimm <grimm@xxxxxxxxxx>
+
+dir=$(dirname "$0")
+. "$dir/block-common.sh"
+
+p=$(xenstore_read "$XENBUS_PATH/params")
+mode=$(xenstore_read "$XENBUS_PATH/mode")
+
+case "$command" in 
+       add)
+               plugin=$(echo $p | cut -d: -f1)
+               dmu_file=$(echo $p | cut -d: -f2)
+               base_file=$(echo $p | cut -d: -f3)
+
+               domain_name=$(xenstore_read "$XENBUS_PATH/domain")
+               domain_dev=$(xenstore_read "$XENBUS_PATH/dev")
+               target="$domain_name""_""$domain_dev"
+               md_dev="/dev/mapper/$target"
+
+               lsmod | grep -q dm_user || modprobe dm-user || fatal \
+                       'cannot load module dm-user'
+
+               if [ ! -e $dmu_file ]
+               then
+                       dscow_tool -c $dmu_file $base_file || fatal \ 
+                               'creation of $dmu_file failed'
+               fi
+
+               cowd --sync --pidfile=/var/run/cowd.$target.pid -p $plugin \
+                       $target $dmu_file || fatal 'cowd failed'
+
+               xenstore_write "$XENBUS_PATH/node" "$target"
+
+               claim_lock "block"
+               write_dev $md_dev
+               release_lock "block"
+               exit 0
+               ;;
+
+       remove)
+               node=$(xenstore_read "$XENBUS_PATH/node")
+               cowd_pid=$(cat "/var/run/cowd.$node.pid")
+               kill $cowd_pid
+               exit 0
+               ;;
+esac
diff -r 77a518e8f44d -r ac06ebd033aa tools/examples/xmexample.dmu
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/examples/xmexample.dmu      Mon Aug 21 15:03:11 2006 -0500
@@ -0,0 +1,151 @@
+#  -*- mode: python; -*-
+#============================================================================
+# Python configuration setup for 'xm create'.
+# This script sets the parameters used when a domain is created using 'xm 
create'.
+# You use a separate script for each domain you want to create, or 
+# you can set the parameters for the domain on the xm command line.
+#============================================================================
+
+#----------------------------------------------------------------------------
+# Kernel image file.
+kernel = "/boot/vmlinuz-2.6-xen"
+
+# Optional ramdisk.
+#ramdisk = "/boot/initrd.gz"
+
+# The domain build function. Default is 'linux'.
+#builder='linux'
+
+# Initial memory allocation (in megabytes) for the new domain.
+#
+# WARNING: Creating a domain with insufficient memory may cause out of
+#          memory errors. The domain needs enough memory to boot kernel
+#          and modules. Allocating less than 32MBs is not recommended.
+memory = 128
+
+# A name for your domain. All domains must have different names.
+name = "ExampleDmuDomain"
+
+# 128-bit UUID for the domain.  The default behavior is to generate a new UUID
+# on each call to 'xm create'.
+#uuid = "06ed00fe-1162-4fc4-b5d8-11993ee4a8b9"
+
+# List of which CPUS this domain is allowed to use, default Xen picks
+#cpus = ""         # leave to Xen to pick
+#cpus = "0"        # all vcpus run on CPU0
+#cpus = "0-3,5,^1" # run on cpus 0,2,3,5
+
+# Number of Virtual CPUS to use, default is 1
+#vcpus = 1
+
+#----------------------------------------------------------------------------
+# Define network interfaces.
+
+# By default, no network interfaces are configured.  You may have one created
+# with sensible defaults using an empty vif clause:
+#
+# vif = [ '' ]
+#
+# or optionally override backend, bridge, ip, mac, script, type, or vifname:
+#
+# vif = [ 'mac=00:16:3e:00:00:11, bridge=xenbr0' ]
+#
+# or more than one interface may be configured:
+#
+# vif = [ '', 'bridge=xenbr1' ]
+
+vif = [ '' ]
+
+#----------------------------------------------------------------------------
+# Define the disk devices you want the domain to have access to, and
+# what you want them accessible as.
+# Each disk entry is of the form phy:UNAME,DEV,MODE
+# where UNAME is the device, DEV is the device name the domain will see,
+# and MODE is r for read-only, w for read-write.
+
+# for dmu, the syntax is dmu:<plugin>:<cow file>:<base file>
+# if <cow file> does not exist, it is created and <base file> is used
+# as base.  if <cow file> does exist, <base file> is ignored.  
+disk = [ 'dmu:dscow:/path/to/domain.dscow:/path/to/domain.img,hda1,w']
+
+#----------------------------------------------------------------------------
+# Define to which TPM instance the user domain should communicate.
+# The vtpm entry is of the form 'instance=INSTANCE,backend=DOM'
+# where INSTANCE indicates the instance number of the TPM the VM
+# should be talking to and DOM provides the domain where the backend
+# is located.
+# Note that no two virtual machines should try to connect to the same
+# TPM instance. The handling of all TPM instances does require
+# some management effort in so far that VM configration files (and thus
+# a VM) should be associated with a TPM instance throughout the lifetime
+# of the VM / VM configuration file. The instance number must be
+# greater or equal to 1.
+#vtpm = [ 'instance=1,backend=0' ]
+
+#----------------------------------------------------------------------------
+# Set the kernel command line for the new domain.
+# You only need to define the IP parameters and hostname if the domain's
+# IP config doesn't, e.g. in ifcfg-eth0 or via DHCP.
+# You can use 'extra' to set the runlevel and custom environment
+# variables used by custom rc scripts (e.g. VMID=, usr= ).
+
+# Set if you want dhcp to allocate the IP address.
+#dhcp="dhcp"
+# Set netmask.
+#netmask=
+# Set default gateway.
+#gateway=
+# Set the hostname.
+#hostname= "vm%d" % vmid
+
+# Set root device.
+root = "/dev/hda1 ro"
+
+# Root device for nfs.
+#root = "/dev/nfs"
+# The nfs server.
+#nfs_server = '169.254.1.0'  
+# Root directory on the nfs server.
+#nfs_root   = '/full/path/to/root/directory'
+
+# Sets runlevel 4.
+extra = "4"
+
+#----------------------------------------------------------------------------
+# Configure the behaviour when a domain exits.  There are three 'reasons'
+# for a domain to stop: poweroff, reboot, and crash.  For each of these you
+# may specify:
+#
+#   "destroy",        meaning that the domain is cleaned up as normal;
+#   "restart",        meaning that a new domain is started in place of the old
+#                     one;
+#   "preserve",       meaning that no clean-up is done until the domain is
+#                     manually destroyed (using xm destroy, for example); or
+#   "rename-restart", meaning that the old domain is not cleaned up, but is
+#                     renamed and a new domain started in its place.
+#
+# The default is
+#
+#   on_poweroff = 'destroy'
+#   on_reboot   = 'restart'
+#   on_crash    = 'restart'
+#
+# For backwards compatibility we also support the deprecated option restart
+#
+# restart = 'onreboot' means on_poweroff = 'destroy'
+#                            on_reboot   = 'restart'
+#                            on_crash    = 'destroy'
+#
+# restart = 'always'   means on_poweroff = 'restart'
+#                            on_reboot   = 'restart'
+#                            on_crash    = 'restart'
+#
+# restart = 'never'    means on_poweroff = 'destroy'
+#                            on_reboot   = 'destroy'
+#                            on_crash    = 'destroy'
+
+#on_poweroff = 'destroy'
+#on_reboot   = 'restart'
+#on_crash    = 'restart'
+
+#============================================================================

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>