Skip to contentSkip to conversation

pvSCSI (SCSI pass through) driver

PATCH In review Jun Kamada 1 participant 1 message Oct 19, 2007

lore
Share & tools
lore

Jun Kamada

author
#0 lore raw

PATCH 5/5 pvSCSI (SCSI pass through) driver

This patch is for modifying xend in order to use pvscsi driver. (attach/detach HBA, etc.)

-----
Jun Kamada

# HG changeset patch
# User [email protected]
# Date 1192703032 -32400
# Node ID 18c98c82e60e483bd65f3904a96d2305839a350e # Parent b4278beaf3549f410a5a6086dbd8af93c495aeac [XEND] add scsihost interface

tools/examples/Makefile +1 -0
diff -r b4278beaf354 -r 18c98c82e60e tools/examples/Makefile
@@ -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
diff -r b4278beaf354 -r 18c98c82e60e tools/examples/scsihost
@@ -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
diff -r b4278beaf354 -r 18c98c82e60e tools/examples/xen-backend.agent
@@ -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
diff -r b4278beaf354 -r 18c98c82e60e tools/examples/xen-backend.rules
@@ -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
diff -r b4278beaf354 -r 18c98c82e60e tools/python/xen/xend/XendDevices.py
@@ -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
diff -r b4278beaf354 -r 18c98c82e60e tools/python/xen/xm/create.py
@@ -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