pvSCSI (SCSI pass through) driver
PATCH 5/5 pvSCSI (SCSI pass through) driver
This patch is for modifying xend in order to use pvscsi driver. (attach/detach HBA, etc.)
Signed-off-by Tomonari Horikoshi <[email protected]>
Signed-off-by Tsunehisa Doi <[email protected]>
Signed-off-by Jun Kamada <[email protected]>
Signed-off-by Akira Hayakawa <[email protected]>
-----
Jun Kamada
# HG changeset patch
# User [email protected]
# Date 1192703032 -32400
# Node ID 18c98c82e60e483bd65f3904a96d2305839a350e # Parent b4278beaf3549f410a5a6086dbd8af93c495aeac [XEND] add scsihost interface
Signed-off-by Tomonari Horikoshi <[email protected]>
Signed-off-by Tsunehisa Doi <[email protected]>
Signed-off-by Jun Kamada <[email protected]>
Signed-off-by Akira Hayakawa <[email protected]>
tools/examples/Makefile +1 -0
@@ -25,6 +25,7 @@ XEN_SCRIPTS += network-route vif-route XEN_SCRIPTS += network-route vif-route XEN_SCRIPTS += network-nat vif-nat XEN_SCRIPTS += block +XEN_SCRIPTS += scsihost XEN_SCRIPTS += block-enbd block-nbd XEN_SCRIPTS += blktap XEN_SCRIPTS += vtpm vtpm-delete
tools/examples/scsihost new file +26 -0
@@ -0,0 +1,26 @@ +#!/bin/sh + +dir=$(dirname "$0") +. "$dir/block-common.sh" + +log debug "udev event." + +case "$command" in + add) + done=$(xenstore_read_default "$XENBUS_PATH/scsihost" 'MISSING') + if [ "$done" != 'MISSING' ] + then + exit 0 + fi + + # TODO + #xenstore_write "$XENBUS_PATH/scsi" "info" + success + ;; + remove) + # TODO + ;; +esac + +exit 0 +
tools/examples/xen-backend.agent +3 -0
@@ -12,6 +12,9 @@ case "$XENBUS_TYPE" in ;; vbd) /etc/xen/scripts/block "$ACTION" + ;; + scsi) + /etc/xen/scripts/scsihost "$ACTION" ;; vtpm) /etc/xen/scripts/vtpm "$ACTION"
tools/examples/xen-backend.rules +1 -0
@@ -1,5 +1,6 @@ SUBSYSTEM=="xen-backend", KERNEL=="tap*" SUBSYSTEM=="xen-backend", KERNEL=="tap*", RUN+="/etc/xen/scripts/blktap $env{ACTION}" SUBSYSTEM=="xen-backend", KERNEL=="vbd*", RUN+="/etc/xen/scripts/block $env{ACTION}" +SUBSYSTEM=="xen-backend", KERNEL=="scsihost*", RUN+="/etc/xen/scripts/scsihost $env{ACTION}" SUBSYSTEM=="xen-backend", KERNEL=="vtpm*", RUN+="/etc/xen/scripts/vtpm $env{ACTION}" SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="online", RUN+="$env{script} online" SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="offline", RUN+="$env{script} offline"
tools/python/xen/xend/XendDevices.py +2 -1
@@ -19,7 +19,7 @@ # A collection of DevControllers # -from xen.xend.server import blkif, netif, tpmif, pciif, iopif, irqif, usbif, vfbif +from xen.xend.server import blkif, scsihostif, netif, tpmif, pciif, iopif, irqif, usbif, vfbif from xen.xend.server.BlktapController import BlktapController from xen.xend.server.ConsoleController import ConsoleController
@@ -36,6 +36,7 @@ class XendDevices: controllers = { 'vbd': blkif.BlkifController, + 'scsihost': scsihostif.SCSIHostController, 'vif': netif.NetifController, 'vtpm': tpmif.TPMifController, 'pci': pciif.PciController,
tools/python/xen/xend/server/scsihostif.py new file +75 -0
75 lines not on this page · raw message
tools/python/xen/xm/create.py +30 -0
@@ -282,6 +282,12 @@ gopts.var('disk', val='phy:DEV,VDEV,MODE backend driver domain to use for the disk. The option may be repeated to add more than one disk.""") +gopts.var('scsihost', val='TYPE,SCSIHOSTNO', + fn=append_value, default=[], + use="""Add a SCSI-HBA device to a domain. TYPE is fc or scsi. + SCSIHOSTNO is scsi host number that can be seen from /proc/scsi/scsi + .""") + gopts.var('pci', val='BUS:DEV.FUNC', fn=append_value, default=[], use="""Add a PCI device to a domain, using given params (in hex).
@@ -574,6 +580,15 @@ def configure_disks(config_devs, vals): if backend: config_vbd.append(['backend', backend]) config_devs.append(['device', config_vbd]) + +def configure_scsihost(config_devs, vals): + """Create the config for a SCSI HBA. + """ + for (type, no) in vals.scsihost: + config_scsihost = ['scsihost', + ['type', type ], + ['hostno', no ] ] + config_devs.append(['device', config_scsihost]) def configure_pci(config_devs, vals): """Create the config for pci devices.
@@ -782,6 +797,7 @@ def make_config(vals): config_devs = [] configure_disks(config_devs, vals) + configure_scsihost(config_devs, vals) configure_pci(config_devs, vals) configure_ioports(config_devs, vals) configure_irq(config_devs, vals)
@@ -808,6 +824,19 @@ def preprocess_disk(vals): err('Invalid disk specifier: ' + v) disk.append(d) vals.disk = disk + +def preprocess_scsihost(vals): + if not vals.scsihost: return + scsihost = [] + for v in vals.scsihost: + d = v.split(',') + n = len(d) + if n == 2: + pass + else: + err('Invalid scsi specifier: ' + v) + scsihost.append(d) + vals.scsihost = scsihost def preprocess_pci(vals): if not vals.pci: return
@@ -1006,6 +1035,7 @@ def preprocess_vnc(vals): def preprocess(vals): preprocess_disk(vals) + preprocess_scsihost(vals) preprocess_pci(vals) preprocess_ioports(vals) preprocess_ip(vals)
tools/python/xen/xm/main.py +57 -0
93 lines not on this page · raw message
xen/include/public/io/vscsiif.h new file +239 -0
239 lines not on this page · raw message
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel