- unmodified_drivers: handle IRQF_SAMPLE_RANDOM, it was removed in 3.6-rc1 - bnc#778105 - first XEN-PV VM fails to spawn xend: Increase wait time for disk to appear in host bootloader Modified existing xen-domUloader.diff - Disable the snapshot patches. Snapshot only supported the qcow2 image format which was poorly implemented qemu 0.10.2. Snapshot support may be restored in the future when the newer upstream qemu is used by Xen. - bnc#776995 - attaching scsi control luns with pvscsi - xend/pvscsi: fix passing of SCSI control LUNs xen-bug776995-pvscsi-no-devname.patch - xend/pvscsi: fix usage of persistant device names for SCSI devices xen-bug776995-pvscsi-persistent-names.patch - xend/pvscsi: update sysfs parser for Linux 3.0 xen-bug776995-pvscsi-sysfs-parser.patch - Update to Xen 4.2.0 RC3+ c/s 25779 - Update to Xen 4.2.0 RC2+ c/s 25765 OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=199
82 lines
3.5 KiB
Diff
82 lines
3.5 KiB
Diff
xend/pvscsi: update sysfs parser for Linux 3.0
|
|
|
|
The sysfs parser for /sys/bus/scsi/devices understands only the layout
|
|
of kernel version 2.6.16. This looks as follows:
|
|
|
|
/sys/bus/scsi/devices/1:0:0:0/block:sda is a symlink to /sys/block/sda/
|
|
/sys/bus/scsi/devices/1:0:0:0/scsi_generic:sg1 is a symlink to /sys/class/scsi_generic/sg1
|
|
|
|
Both directories contain a 'dev' file with the major:minor information.
|
|
This patch updates the used regex strings to match also the colon to
|
|
make it more robust against possible future changes.
|
|
|
|
|
|
In kernel version 3.0 the layout changed:
|
|
/sys/bus/scsi/devices/ contains now additional symlinks to directories
|
|
such as host1 and target1:0:0. This patch ignores these as they do not
|
|
point to the desired scsi devices. They just clutter the devices array.
|
|
|
|
The directory layout in '1:0:0:0' changed as well, the 'type:name'
|
|
notation was replaced with 'type/name' directories:
|
|
|
|
/sys/bus/scsi/devices/1:0:0:0/block/sda/
|
|
/sys/bus/scsi/devices/1:0:0:0/scsi_generic/sg1/
|
|
|
|
Both directories contain a 'dev' file with the major:minor information.
|
|
This patch adds additional code to walk the subdir to find the 'dev'
|
|
file to make sure the given subdirectory is really the kernel name.
|
|
|
|
|
|
In addition this patch makes sure devname is not None.
|
|
|
|
---
|
|
tools/python/xen/util/vscsi_util.py | 26 +++++++++++++++++++++-----
|
|
1 file changed, 21 insertions(+), 5 deletions(-)
|
|
|
|
Index: xen-4.1.2-testing/tools/python/xen/util/vscsi_util.py
|
|
===================================================================
|
|
--- xen-4.1.2-testing.orig/tools/python/xen/util/vscsi_util.py
|
|
+++ xen-4.1.2-testing/tools/python/xen/util/vscsi_util.py
|
|
@@ -130,20 +130,36 @@ def _vscsi_get_scsidevices_by_sysfs():
|
|
|
|
for dirpath, dirnames, files in os.walk(sysfs_mnt + SYSFS_SCSI_PATH):
|
|
for hctl in dirnames:
|
|
+ if len(hctl.split(':')) != 4:
|
|
+ continue
|
|
paths = os.path.join(dirpath, hctl)
|
|
devname = None
|
|
sg = None
|
|
scsi_id = None
|
|
for f in os.listdir(paths):
|
|
realpath = os.path.realpath(os.path.join(paths, f))
|
|
- if re.match('^block', f) or \
|
|
- re.match('^tape', f) or \
|
|
- re.match('^scsi_changer', f) or \
|
|
- re.match('^onstream_tape', f):
|
|
+ if re.match('^block:', f) or \
|
|
+ re.match('^tape:', f) or \
|
|
+ re.match('^scsi_changer:', f) or \
|
|
+ re.match('^onstream_tape:', f):
|
|
devname = os.path.basename(realpath)
|
|
+ elif f == "block" or \
|
|
+ f == "tape" or \
|
|
+ f == "scsi_changer" or \
|
|
+ f == "onstream_tape":
|
|
+ for dir in os.listdir(os.path.join(paths, f)):
|
|
+ if os.path.exists(os.path.join(paths, f, dir, "dev")):
|
|
+ devname = os.path.basename(dir)
|
|
|
|
- if re.match('^scsi_generic', f):
|
|
+ if re.match('^scsi_generic:', f):
|
|
sg = os.path.basename(realpath)
|
|
+ elif f == "scsi_generic":
|
|
+ for dir in os.listdir(os.path.join(paths, f)):
|
|
+ if os.path.exists(os.path.join(paths, f, dir, "dev")):
|
|
+ sg = os.path.basename(dir)
|
|
+ if sg:
|
|
+ if devname is None:
|
|
+ devname = sg
|
|
scsi_id = _vscsi_get_scsiid(sg)
|
|
devices.append([hctl, devname, sg, scsi_id])
|
|
|